Commit graph

1438 commits

Author SHA1 Message Date
Alexander Capehart
fb93b82b2b
ui: redesign headers
Redesign the header component to be more aligned with M3 guidelines.

This includes moving the divider to the top when reasonable, using a
smaller font size, and using a tinted coloration to separate itself
from the list contents.
2023-01-16 19:35:16 -07:00
Alexander Capehart
ad9d2f2d9e
list: move instructions into recycler
Move the instructions enum (which is only concerned with recyclerview
semantics) into the list.recycler module instead of list.
2023-01-16 17:47:07 -07:00
Alexander Capehart
d38da9b892
list: make list instructions generic
Make list instructions generic in preparation for the detail list
update.

Detail views need their own instructions datatype, so this is meant to
allow that to be implemented without issue.
2023-01-16 17:45:03 -07:00
Alexander Capehart
4a7bc4e511
settings: split up ui
Split up the settings ui into four categories.

This should reduce the visual load on the user as Auxio continues to
accrue possible configuration options.

Resolves #323.
2023-01-16 16:14:51 -07:00
Alexander Capehart
e7ff7293c0
home: replace list only when resorting
Leverage the new UpdateInstructions system to allow the home view to
diff the lists on music updates, and then replace the lists on
resorting events.

This just improves quality-of-life overall.
2023-01-16 11:20:19 -07:00
Alexander Capehart
6e02929982
music: reorganize music folders dialog
Reorganize the music folders dialog to be more visually straightforward
than prior, primarily by grouping the folder elements into the same
visual region.

Resolves #318.
2023-01-16 10:18:55 -07:00
Alexander Capehart
a0aaec98d0
music: extend non-standard artists to id3v2
Just pre-emptively add support for TXXX variations of the non-standard
vorbis artist fields to the ID3v2 parser.

I'd imagine the naming convention will be similar between them, so why
not.
2023-01-16 09:33:20 -07:00
Alexander Capehart
bfbf805adc
list: remove synclistdiffer
Forgot to remove this now useless class.
2023-01-15 20:32:46 -07:00
Alexander Capehart
df98bb535f
list: rework diffing abstraction
Make all adapters relying on diffing unified into a DiffAdapter
superclass that can then accurately respond to the new
UpdateInstructions data.

UpdateInstructions is still not fully used everywhere, but will be
soon.
2023-01-15 20:31:50 -07:00
Weblate (bot)
b524beb0ac
Translations update from Hosted Weblate (#315)
* Translated using Weblate (Spanish)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/es/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/uk/

* Translated using Weblate (Chinese (Traditional))

Currently translated at 22.9% (56 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/zh_Hant/

* Translated using Weblate (Turkish)

Currently translated at 68.4% (167 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/tr/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (27 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/tr/

* Translated using Weblate (Chinese (Traditional))

Currently translated at 96.2% (26 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/zh_Hant/

* Translated using Weblate (German)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/de/

* Translated using Weblate (Turkish)

Currently translated at 70.0% (171 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/tr/

* Translated using Weblate (Portuguese (Portugal))

Currently translated at 99.5% (243 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/pt_PT/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/tr/

* Translated using Weblate (French)

Currently translated at 52.8% (129 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/fr/

* Translated using Weblate (French)

Currently translated at 96.2% (26 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/fr/

* Translated using Weblate (Italian)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/it/

Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: BMN <weblate@yopmail.com>
Co-authored-by: p4ssen <244045932@qq.com>
Co-authored-by: Bai <batuhanakkurt000@gmail.com>
Co-authored-by: Ettore Atalan <atalanttore@googlemail.com>
Co-authored-by: metezd <itoldyouthat@protonmail.com>
Co-authored-by: ssantos <ssantos@web.de>
Co-authored-by: Ömer Faruk Çakmak <omerfarukckmk@protonmail.com>
Co-authored-by: Max Vyr <maxvy@proton.me>
Co-authored-by: Translator-3000 <weblate.m1d0h@8shield.net>
2023-01-15 03:58:20 +00:00
Alexander Capehart
5f9169fb78
music: add non-standard artist fields
Add non-standard ARTISTS/ALBUMARTIST fields to reasonable places in the
ID3v2 and Vorbis parsers.

Turns out these are stupidly common when multi-artist information is
used in order to maximize player compatibility. More or less, TPE1 and
ARTIST will be filled in with delimited values, while ARTISTS will be
filled in with native multi-value information.

This is stupid and insane, but I want to prioritize a good out of box
experience without much user fiddling, so I may as well implement
these.

Currently, I'm only adding the non-standard fields that I know exist.
This doesn't include hypothetical but unencountered fields like
TXXX:ALBUMARTISTS.
2023-01-14 20:52:43 -07:00
Alexander Capehart
176f0cc465
list: add update instructions framework
Add the basic framework that should allow for different types of list
updates in different situations.
2023-01-14 19:55:09 -07:00
Alexander Capehart
5988908b56
playback: add ability to play/shuffle selection
Add the ability to play or shuffle a selection.

This finally allows "arbitrary" playback to be created from any
combination of songs/albums/artist/genres, rather than just from
pre-defined options.

Resolves #313.
2023-01-10 08:12:47 -07:00
Alexander Capehart
692839e8fe
playback: re-add state persistence
Re-add state persistence with support for the new queue.

This should finally finish the new queue system.
2023-01-09 13:53:37 -07:00
Alexander Capehart
9bd78bc855
music: add uid and raw tests
Add tests for the relatively simple Music.UID and Raw data classes
(excluding Song.Raw).

This should make sure most of the grouping code works, making the
library tests theoretically much simpler.
2023-01-08 10:32:22 -07:00
Alexander Capehart
0199d2f343
playback: refactor queue persistence
Refactor the queue saved state system to make it easier to imlement in
the playback state database.
2023-01-08 09:52:56 -07:00
Alexander Capehart
82a9c08666
playback: re-add queue sanitization
Add library-change sanitization to the queue.

It is hard to describe how unbeliveably difficult this was. It's so
hard to wrap your head around this system and I really would have never
used it if it was not for ExoPlayer's insistence on it's busted
ShuffleOrder code.

Re-enabling state persistence should be easier following this.
2023-01-07 15:47:12 -07:00
Alexander Capehart
bef4dca0ce
playback: fix queue moves
Fix moving items with the new queue system.

This took a bit of thinking, but I think this is the correct way to
implement this in a future-proof manner.
2023-01-07 12:01:43 -07:00
Alexander Capehart
5adc87550e
music: make package for auxillary music info
Like the library package, move out tag information (Date/Album.Type)
into a separate package.

Date never really made sense as base-package information.
2023-01-07 09:33:05 -07:00
Alexander Capehart
a2b51825e8
music: add tests for album types
Add tests for Album.Type.

Other tests for the music library will be done separately.
2023-01-07 09:21:15 -07:00
Alexander Capehart
dc73f96ba8
list: clear selection before navigating back
When the back button is pressed, clear the current selection before
navigating back.

This is something I was planning to do but then completely forgot about
when implementing multi-select.

Resolves #316.
2023-01-07 08:19:12 -07:00
Alexander Capehart
6fa53ab873
playback: mostly hide playback mode details
Mostly hide the code that handles starting playback based on a given
mode into their respective ViewModels.

Again, makes testing easier.
2023-01-06 20:00:18 -07:00
Alexander Capehart
ac9f50c0a0
settings: do not use sharedpreference listener
Switch back to using settings-specific listeners rather than the
SharedPreference listener.

Again, this is due to the need to decouple android code from settings.
It also allows us to fully obscure the details of what settings we are
actually working with.
2023-01-06 19:20:56 -07:00
Alexander Capehart
1b19b698a1
settings: decouple
Decouple the settings god object into feature-specific settings.

This should make testing settings-dependent code much easier, as it no
longer requires a context.
2023-01-06 16:17:57 -07:00
Alexander Capehart
3502af33e7
music: add support for date-encoding years
Add support for date-encoding years such as "YYYYMMDD".

This is a semi-common timestamp edge-case, it seems, primarily due to
taggers wanting to encode date information in older tag formats.
2023-01-06 13:47:18 -07:00
Alexander Capehart
a29875b5bf
music: decouple library from musicstore/indexer
De-couple the library data structure (and library grouping) from
MusicStore and Indexer.

This should make library creation *much* easier to test.
2023-01-06 12:04:27 -07:00
Alexander Capehart
a5ea4af5c4
music: finish parsing tests
Finish ParsingUtil tests.
2023-01-05 20:08:12 -07:00
Alexander Capehart
782b570b38
music: add texttags tests
Add tests for the TextTags processing wrapper.
2023-01-05 14:24:30 -07:00
Alexander Capehart
502dd8ccc4
actions: add testing step
Add a testing command to the CI workflow.
2023-01-05 12:56:46 -07:00
Alexander Capehart
a5e78e614f
music: complete non-android date tests
Complete the date tests that don't require a context.
2023-01-05 12:55:15 -07:00
Alexander Capehart
78e3739a68
testing: add unit test framework
Add junit/espresso alongside a few basic tests.

I am nowhere near close to being "done" with this at all.
2023-01-05 12:27:37 -07:00
Alexander Capehart
a10cf1e0c3
music: fix enqueueing
Fix enqueuing issues encountered during testing.
2023-01-05 11:38:32 -07:00
Alexander Capehart
743220d0aa
replaygain: revert back to copy no-op
Turns out using isActive to indicate that the AudioProcessor is a no-op
is too unreliable due to how they are managed internally.

Instead, I really do just have to use a copy. Once again ExoPlayer
picks the most absurd possible design choices for no good reason.

Resolves #293.
2023-01-05 11:15:06 -07:00
Alexander Capehart
c0f1b9423f
music: band-aid queue move issues
Band-aid certain types of queue moves that will fail to cauase the
index to correct. Just do this by assuming all queue moves are swaps
and then forgetting about it.

I'll need to figure out how to "properly" do this eventually.
2023-01-05 10:04:19 -07:00
Weblate (bot)
41dd9bf695
Translations update from Hosted Weblate (#308)
* music: allow editing past queue items

Allow past and currently playing queue items to be edited, instead of
just future queue items.

This was a somewhat requested feature that was impossible with the
prior queue system. With some fixes, the new queue system can now be
used to do this.

This even works with edge cases like removing the currently playing
song. Albeit, it's likely that more bug fixes and testing will be
needed.

Resolves #223.

* Translated using Weblate (Spanish)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/es/

* Translated using Weblate (Lithuanian)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/lt/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/zh_Hans/

* Translated using Weblate (Czech)

Currently translated at 100.0% (27 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/cs/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (27 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/es/

* Translated using Weblate (Lithuanian)

Currently translated at 100.0% (27 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/lt/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (27 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/zh_Hans/

* Translated using Weblate (Czech)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/cs/

* Translated using Weblate (Croatian)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/hr/

* Translated using Weblate (Ukrainian)

Currently translated at 26.2% (64 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/uk/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/es/

* Translated using Weblate (Russian)

Currently translated at 99.5% (243 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/ru/

* Translated using Weblate (Ukrainian)

Currently translated at 51.6% (126 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/uk/

* Translated using Weblate (Ukrainian)

Currently translated at 96.2% (26 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/uk/

* Translated using Weblate (Ukrainian)

Currently translated at 70.9% (173 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/uk/

* Translated using Weblate (Ukrainian)

Currently translated at 72.5% (177 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/uk/

* Translated using Weblate (German)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/de/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/pt_BR/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/pt_BR/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/uk/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (27 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/uk/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/pt_BR/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (27 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/pt_BR/

* Translated using Weblate (German)

Currently translated at 100.0% (27 of 27 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/de/

Co-authored-by: Alexander Capehart <alex@oxycblt.org>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: Vaclovas lntas <vaclovas1999@gmail.com>
Co-authored-by: Eric <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: Milo Ivir <mail@milotype.de>
Co-authored-by: BMN <weblate@yopmail.com>
Co-authored-by: kirill blaze <kirillblaze2@gmail.com>
Co-authored-by: Ettore Atalan <atalanttore@googlemail.com>
Co-authored-by: Edmundo Nocchi <edmundonocchii@gmail.com>
Co-authored-by: santiago046 <comehere665@gmail.com>
Co-authored-by: qwerty287 <ndev@web.de>
Co-authored-by: Alexander Capehart <oxycblt@abstractr.net>
2023-01-05 09:33:46 -07:00
Alexander Capehart
3f0a532a2d
music: allow editing past queue items
Allow past and currently playing queue items to be edited, instead of
just future queue items.

This was a somewhat requested feature that was impossible with the
prior queue system. With some fixes, the new queue system can now be
used to do this.

This even works with edge cases like removing the currently playing
song. Albeit, it's likely that more bug fixes and testing will be
needed.

Resolves #223.
2023-01-05 09:31:48 -07:00
Alexander Capehart
16513e6547
playback: implement new queue system
Implement a new heap-based queue system into the app.

Unlike the prior queue, this one no longer keeps one canonical queue
and then simply swaps between shuffled and ordered queues by
re-grabbing the song list currently being played. Instead, the same
"heap" of songs is used throughout, with only the way they are
interpreted changing.

This enables a bunch of near functionality that would not be possible
with the prior queue system, but is also really unstable and needs a
lot more testing.

Currently this commit disables state saving at the moment. It will be
re-enabled when the new queue can be reliably restored.
2023-01-04 19:24:30 -07:00
Alexander Capehart
1b44eeae15
music: rename filesystem back into storage
Rename the filesystem module into storage.

Forgot about the MediaStore utils I had in there. The original name was
more correct.
2023-01-04 09:46:02 -07:00
Alexander Capehart
d55dfbc849
list: make listeners generic
Make all list listeners operate on generic values.

Wanted to do this for awhile, but couldn't figure out how to get the
listener to work with sub-typed listeners until I learned what the in
keyword actually does. This removes a ton of type-checking boilerplate
that it's not even funny.
2023-01-04 09:42:52 -07:00
Alexander Capehart
d5941aa705
music: fix crash when adding music dirs
Fix a crash that would occur when trying to add music dirs without a
file manager to handle it.

Some users apparently disable the built-in file manager under the
assumption that the same intents will work with other file managers.
They do not, and so we need to handle that case and let the user know.
2023-01-04 08:17:34 -07:00
Alexander Capehart
3e33510139
Merge pull request #310 from OxygenCobalt/dev
Version 3.0.1
2023-01-03 19:01:31 -07:00
Alexander Capehart
360dab928c
all: misc cleanup
Miscellanious cleanup in preparation for 3.0.1.
2023-01-03 18:56:06 -07:00
Alexander Capehart
d8e24c4c47
all: use volatile in shared objects
Use volatile on all mutable shared object fields in an attempt to
reduce the amount of possible bugs stemming from caching.
2023-01-03 14:01:10 -07:00
Alexander Capehart
d4d3bd5ff4
detail: band-aid crashes when library unavailable
Band-aid a crash that would occur when the library is somehow
unavailable in the detail view. Now, if it's unavailable, the
app simple navigates away.

Not sure how this is happening, but I'd imagine it's some caching
shenanigans I need to fix by using volatile on any shared field.
2023-01-03 13:55:36 -07:00
Alexander Capehart
bd9c02a1e1
Merge branch 'dev' of github.com:OxygenCobalt/Auxio into dev 2023-01-02 19:06:17 -07:00
Alexander Capehart
b3b7ed524c
release: bump to 3.0.1
Bump the version to 3.0.1 (25).
2023-01-02 19:05:57 -07:00
Weblate (bot)
fa357c3dab
Translations update from Hosted Weblate (#306)
* Translated using Weblate (Czech)

Currently translated at 100.0% (243 of 243 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/cs/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (243 of 243 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/es/

* Translated using Weblate (Italian)

Currently translated at 100.0% (243 of 243 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/it/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (243 of 243 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/zh_Hans/

* Translated using Weblate (Italian)

Currently translated at 100.0% (26 of 26 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/it/

* Translated using Weblate (Lithuanian)

Currently translated at 100.0% (243 of 243 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/lt/

* Translated using Weblate (Lithuanian)

Currently translated at 100.0% (26 of 26 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/lt/

* Translated using Weblate (German)

Currently translated at 100.0% (243 of 243 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/de/

* Translated using Weblate (Czech)

Currently translated at 100.0% (26 of 26 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/cs/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (26 of 26 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/es/

* Translated using Weblate (Italian)

Currently translated at 100.0% (26 of 26 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/it/

* Translated using Weblate (German)

Currently translated at 100.0% (26 of 26 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/de/

* Translated using Weblate (Lithuanian)

Currently translated at 100.0% (26 of 26 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/lt/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (26 of 26 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/zh_Hans/

* Added translation using Weblate (Norwegian Bokmål)

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 96.1% (25 of 26 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/nb_NO/

* Translated using Weblate (Czech)

Currently translated at 100.0% (244 of 244 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/cs/

Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: Enrico D'Ortenzio <enrico2588@gmail.com>
Co-authored-by: Eric <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Vaclovas lntas <vaclovas1999@gmail.com>
Co-authored-by: qwerty287 <ndev@web.de>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
2023-01-02 08:17:11 -07:00
Alexander Capehart
4db4b023d5
home: temporarily re-add no music case
I actually have no idea how to go about decoupling the other music
loading errors from the "No Music" case without a very jarring user
experience, so I'm not doing it for now.
2023-01-01 17:01:22 -07:00
Alexander Capehart
9ab729a069
detail: decouple detail song and properties
Decouple DetailSong into two fields for the current song and current
properties.

Combining them was a technical decision that no longer makes sense,
and separating them makes life much easier.
2023-01-01 17:00:51 -07:00
Alexander Capehart
b103eb4749
music: refactor indexer responses
Make indexer responses use Result instead of an arbitrary response
type.

This is part of a more general rework to move the "No music found"
screen from the home view to the individual home lists.
2023-01-01 13:54:56 -07:00