*Mostly* backend work in the settings tab
Migrate settings context over to MMKV backed Zustand store. Update hooks as needed
Update info tab styling - making the patreon patrons list it's own section. A perfect time to remind everyone you can sponsor Jellify on GitHub or Patreon :)
Joining the patreon as a paid member will get your name displayed in the info area of the settings tab
Implements proper server negotation for performing transcoding
Depending on the user's platform (i.e. iOS, Android) and the desired quality specified in the settings, Jellify will playback a transcoded audio file from Jellyfin
This is helpful when the source audio file is not compatible with the user's device (i.e. playing back an ALAC encoded .M4A on Android) or if the user want to stream at a lower quality to save bandwidth
This also drives downloads in different qualities, meaning the download quality selector in the Settings is now working properly. When a track is downloaded, it will download at the quality selected by the user, and in a format compatible with the device
There is also a toggle in the "Player" Settings for displaying a badge in the player that shows the quality and container of the audio being played
Adds Google Cast Speaker Support!
A new button is now present in the bottom left of the player screen. Pressing this button will prompt the user to pick a Cast enabled speaker. Once a speaker is selected, the player controls in Jellify will control the playback of the Cast speaker.
Fix an issue where the queue didn't restore on opening the app
Add download button to the item menu - this works for tracks and albums
Fix issue where playback would start automatically on android
* player style fixes
* fix content sheet for android
* context sheet prefetching in item card, item row, and track components
context sheet header styling
fix issue where nowplaying was incorrect after the queue was initialized from storage
Wrap Item Context Provider around item components:
- ItemCard
- ItemRow
- Track
This is to prepopulate our query cache with data used in the Context Sheet