austinried 8196704ccd
React Query refactor (#91)
* initial react-query experiments

* use queries for item screens

send the data we do have over routing to prepopulate (album/playlist)
use number for starred because sending Date freaks out react-navigation

* add in equiv. song cover art fix

* reorg, switch artistview over

start mapping song cover art when any are available

* refactor useStar to queries

fix caching for starred items and album cover art

* add hook to reset queries on server change

* refactor search to use query

* fix song cover art setting

* use query for artistInfo

* remove last bits of library state

* cleanup

* use query key factory

already fixed one wrong key...

* require coverart size

* let's try no promise queues on these for now

* image cache uses query

* perf fix for playlist parsing

also use placeholder data so we don't have to deal with staleness

* drill that disabled

also list controls doesn't need its own songs hook/copy

* switch to react-native-blob-util for downloads

slightly slower but allows us to use DownloadManager, which backgrounds downloads so they are no longer corrupted when the app suspends

* add a fake "top songs" based on artist search

then sorted by play count/ratings
artistview should load now even if topSongs fails

* try not to swap between topSongs/search on refetch

set queueContext by song list so the index isn't off if the list changes

* add content type validation for file fetching

also try to speed up existing file return by limiting fs ops

* if the HEAD fails, don't queue the download

* clean up params

* reimpl clear image cache

* precompute contextId

prevents wrong "is playing" when any mismatch between queue and list

* clear images from all servers

use external files dir instead of cache

* fix pressable disabled flicker

don't retry topsongs on failure
try to optimize setqueue and fixcoverart a bit

* wait for queries during clear

* break out fetchExistingFile from fetchFile

allows to tell if file is coming from disk or not
only show placeholder/loading spinner if actually fetching image

* forgot these wouldn't do anything with objects

* remove query cache when switching servers

* add content-disposition extension gathering

add support for progress hook (needs native support still)

* added custom RNBU pkg with progress changes

* fully unmount tabs when server changes

prevents unwanted requests, gives fresh start on switch
fix fixCoverArt not re-rendering in certain cases on search

* use serverId from fetch deps

* fix lint

* update licenses

* just use the whole lodash package

* make using cache buster optional
2022-04-11 09:40:51 +09:00
2022-03-28 14:32:08 +09:00
2022-03-28 13:30:57 +09:00
2022-04-11 09:40:51 +09:00
2022-04-11 09:40:51 +09:00
2021-08-26 16:10:49 +09:00
2021-08-22 17:44:42 +09:00
2021-09-08 09:32:35 +09:00
2021-06-08 13:38:16 +09:00
2021-06-08 13:38:16 +09:00
2022-01-23 13:36:02 +09:00
2021-09-07 12:20:52 +09:00
2021-12-15 14:38:15 +09:00
2021-07-08 15:37:05 +09:00
2022-01-23 13:36:02 +09:00
2021-08-23 14:48:24 +09:00
2021-07-05 10:27:30 +09:00
2022-04-11 09:40:51 +09:00
2021-08-22 17:56:56 +09:00
2022-02-02 16:03:05 +09:00
2022-03-28 13:30:57 +09:00
2022-04-11 09:40:51 +09:00

subtracks logo

Subtracks is an Android open source music streaming app for Subsonic-API-compatible servers (Subsonic, Navidrome, Airsonic, and more). It's designed to give you clean and convenient access to your music in the style of modern media players.

Screenshots

home now playing library albums album view

Download

⚠️ Note: each download source above is signed with a different key, so you cannot switch between them without first uninstalling and then re-installing the app.

Features

  • Album and artist art display by default (full-res in detail/now playing views)
  • Gapless playback
  • Mulitple server support
  • Filterable/sortable album and artist library views
  • Search artists, albums, and songs
  • Scrobble support
  • Max bitrate and buffer size settings
  • Loop and shuffle playback options
  • Long-press for context menu shortcuts

Coming Soon™

  • Offline support
  • Customizable home screen categories
  • Browse by folder support (currently only browses by tags)
  • Multiple music folder awareness
  • By year/by genre albums filter
  • Playlist mangement (add/remove/sort/edit)
  • Queue management (add/remove/sort)
  • Multi-select actions
  • Performance & animation improvements
  • More shuffle play modes

Building

See Building from source.

Description
A music streaming app for Subsonic-compatible servers
Readme GPL-3.0 16 MiB
Languages
Dart 99.6%
JavaScript 0.3%
Java 0.1%