* Add multiple users per server
* Remove unnecessary longClickListener
* Check if user is selected on startup
* Still create JellyfinApi even if no user is selected
* Already fill in the username when needing to re-login
* New server db schema
Adds support for multiple addresses and users per server
* Fix crash when the only available server is deleted and app is restarted
* Set serverId as foreign key in User and ServerAddress
* Format using ktlint
* Bump ServerDatabase version to 2
* Fix deleted downloads
This commit fixes downloads getting deleted after a few weeks by android's cleanup system. This is fixed by downloading the files under the .download extension and renaming them when the download is completed.
* Add retry download feature
* Add indicator when download is ongoing
* Refactor download code
* Disable button on retry and clean up
Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
* Merge MainActivity and MainActivityTv
* Merge AddServerFragment and TvAddServerFragment
* Merge LoginFragment and TvLoginFragment
* Add new focus effect
* Add libraries to tv home
* Fix home empty when navigating back on mobile
* Add loading indicator to home fragment
* Add empty LibraryFragment
* Add focus outline to settings button
* Use DiffCallback for updating home fragment
* Visually upgrade MediaDetailFragment
* Make all home items focusable in touch mode
* Add new focus border to person item
* Add LibraryFragment layout for TV
(Whilst also making a clusterfuck of the navigation)
* Add missing try-catch in HomeViewModel
* Don't show CancellationException on AddServerFragment
* Fix a few crashes plus errors
* Upgrade ExoPlayer to 2.18
* Change the position polling from every 2 to every 5 sec
* Make internalMediaItems non-nullable
* Clean up mpv track names
* Reduce explayer ffmpeg extension size by not including all decoders
Removed decoders vorbis, opus, flac, pcm_mulaw, pcm_alaw, mp3, aac because these are already supported by Android.
* Clean up preferredLanguage preferences
* Add support for external subtitles in exoplayer
* Enable ASS/SSA external subtitles
* Enable VTT external subtitles
* Clean up
* Fix srt and vtt
Jellyfin currently converts vtt to srt without changing the codec tag. This makes the player unable to decode the subs because it thinks the file is vtt while in fact it is srt.
* Fix for vtt subs
Jellyfin return a srt stream when it should return a vtt stream
* Display downloaded episodes by series
* Add offline playback to readme
* Remove accidentally commited changes
* Remove duplicate movie section in downloadviewmodel
* Fix issues with merging upstream
* Notify on download completion
* Fix trash icon color
* Update DownloadSeriesFragment to use new UiState system
* Clean up unused code
Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
* Provide better error messages with stacktrace
+ clean up
+ fix error details popup in MediaInfoFragment
* Simplify exception passing by sending complete exception to the dialog
* Use viewLifecycleOwner with repeatOnLifecycle
* add empty subtitle track
* toggle selected variable
* does this work
* Revert "toggle selected variable"
This reverts commit 87589f1d34e741205674e66855b53d79a1f70adb.
* this should work
* this should work 2.0
* remove empty track if there are no subtitle tracks
* Redesign settings to two pane layout
* Add downloads settings
* Suppress unused settings fragments warnings
* Fix download icon in other places
Also removes the filled download drawable
* Add option to display extended episode title (SXX:EXX - Title) in player
* ocd fix
* add null check condition
* Move setting to player category
Yeah this would fit in either Appearance or Player. But I lean more towards Player.
Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
* Convert MediaFragment to use new UiState
* Convert PersonDetailFragment to use new UiState
* Load PersonDetail data on start
* Convert FavoriteFragment to use new UiState
* Convert SeasonFragment to use new UiState
* Convert SearchResultFragment to use new UiState
* Convert EpisodeBottomSheetFragment to use new UiState (WIP)
* Convert EpisodeBottomSheetFragment to use new UiState (Part 2)
* Convert LibraryFragment to use new UiState
* Convert DownloadFragment to use new UiState
* Convert HomeFragment to use new UiState
* Convert MediaInfoFragment to use new UiState (WIP)
* Convert MediaInfoViewModel to use new UiState (Part 2)
* Convert ServerSelectViewModel to use new UiState (Semi)
* Fix MediaInfoFragment for downloaded movies
* Fix download playback tracking bug
* Remove unused permission
* Add overview text to downloadmetadata
* Add visual indicator of whether item is downloaded
* Use downloaded item when available
* Fix "null" overview text in download metadata
* Fix crash when playing downloaded file with mpv
* Clean up
Co-authored-by: jarnedemeulemeester <jarnedemeulemeester@gmail.com>
* Add refresh to home fragment
* Remove forgotten code
* Remove unnecessary condition and fix HomeSection equality check
* Make HomeFragment fragment view model again
* Add order dependent check for home items equality
* Fix loading state overwriting error state on home refresh
* Revert to older swiperefreshlayout version
* Fixing error and loading state
Co-authored-by: Jarne Demeulemeester <32322857+jarnedemeulemeester@users.noreply.github.com>
* Improve AddServer fragment
* Improve login fragment
With other general improvements
* Resize the addserver and login fragments when the soft keyboard appears
* Upgrade androidx.core to 1.7.0 and add lifecycle deps
* New UI state system for AddServerFragment
This uses StateFlow for the state and SharedFlow for navigation
* Remove public flows and use collector functions
* Update Login ViewModel and Fragment
* Speed up server discovery
* Better login error message
* Add strings for errors when adding server
* Use add_server_error_version string instead of version
Co-authored-by: Jarne Demeulemeester <32322857+jarnedemeulemeester@users.noreply.github.com>
* Add ability to name your device
* Update device name real time
* Remove unnecessary deviceInfo and apiClientFactory
Co-authored-by: Jarne Demeulemeester <32322857+jarnedemeulemeester@users.noreply.github.com>