Fix for playback tracking as i forgot to filter for activity per user, old implementation found the latest record for the item regardless of user and updated that
This rework looks for existing playback records based on the following criteria:
activity matching `NowPlayingItemId` within the last 1 hour with Playback progress <=80%
if theres a matching record:
update the PlaybackDuration to be existing PlaybackDuration + new PlaybackDuration progress
Update ActivityDateInserted to current time
Related issues: #56#116
Fix for Error 403 on First time setup by dynamically checking the config status and allowing the config status to exist at multiple stages of the setups vs at the last stage of configuration
Fix sync logs missing as logging was not awaited on insert
Cleaned up some logging code in the db class
Forgot to add archived items exclusion when tallying stats
This feature has been extended to seasons and seasons/episodes as some episodes may be archived but not the entire show
Cleaned up Jellyfin calls and stored them in a Jellyfin Class to be called globally. Also added better error handling for jellyfin api network responses
Reduced config error handling by moving this code to a central Config class
refactored https instance of axios into a new class reducing the need to recreate the https agent where needed
General comments and code clean-up
Removed Data Debugger as it hasn't been maintained and no longer servers a purpose
CSS fixes on session card
Fixed some logic that was causing show items to sync during partial sync but then get removed when the clean-up script was run.
This was due to the Show filter used to reduce the number of shows scanned but a scenario was found where:
Recently added returns an episode and not the corresponding series item. The filter would then prevent the episode from syncing as the filter excluded it based on the missing Show ID. Then once the item info sync ran, the item info would insert without the corresponding item id.
The cleanup looks for this scenario where theres info items without corresponding items and cleans them out.
Now items inside a library will only be archived if the library is deleted.
If it was excluded but still exists on jellyfin then the items inside wont be archived
Amended bulk upload conflict query for libraries table to revert archived bit to false if data is updated
added archiving flag to libraries. If a library is deleted or excluded the entire library and its contents are archived when the sync process is run
Added archive toggle in libraries to show/hide archived libraries
Still need to add functionality to bulk purge archived data for a library or for selected items in the library.
cleaned up duplicate statement in migration 46
uncommented backwards navigation code when purge completes
Added Sync feature to only sync Recently Added Items that don't exist in the database (this will not update existing data), default interval now set to 15 Minutes
Renamed existing sync to Full sync (should function exactly the same), default interval now set to 1 day
Reworked handling of items no longer on jellyfin. Items are no longer deleted but are now marked as archived so that we can still view their items when looking at Playback Activity.
Added options to purge Archived data. This will either purge just the item (including seasons and episodes if its a show) or the item plus all related watch activity
Changed Dockerfile as previos file was failing to build consistently
removed some unused packages
added compression to json payloads
changed vite ports to 3000 to not break existing builds
backend and frontend both use port 3000 now
Add row to session card with IP Address. Clickable, opens modal.
Modal WIP - displays general info about IP location (maybe can include a map within this modal?)
needs work - currently just an api endpoint that will return geolocation data for a given IP.
ToDo:
- Display IP in session-card
- Clicking IP opens modal with geolocation info