Commit graph

1582 commits

Author SHA1 Message Date
Alexander Capehart
97705a37e4
music: remove uid tests
Remove Music.UID tests for now in favor of adding them to the main
datatype tests instead in the future.
2023-05-12 13:46:24 -06:00
Alexander Capehart
763061c352
music: automatically number new playlists
Automatically number new playlists, from Playlist 1, Playlist 2, etc.

This comes with the additional requirement that all playlists have
unique names.
2023-05-12 13:43:18 -06:00
Alexander Capehart
e01ea25d0b
music: add playlist naming flow
Add a real playlist naming dialog and UX flow.

This is a bit rough at the moment since theres a good amount of nuance
here. Should improve as the playlist implementation continues to grow
more fleshed out.
2023-05-12 10:39:56 -06:00
Alexander Capehart
7ba2b1bb41
music: strip articles from extremely short names
Strip articles from names that are longer than 2-4 characters, compared
the prior limit of 3-5.

Resolves #440.
2023-05-12 07:01:04 -06:00
Alexander Capehart
eb4adcc109
all: unwind picker abstraction
Unwind the picker abstraction into smaller dialog packages.

While this increases repetition, it will make the playlist dialog
implementations much less shoddy.
2023-05-11 16:21:04 -06:00
Alexander Capehart
e68cc4d620
build: update deps
Update a huge amount of dependencies. Forgot specifically what I
did.
2023-05-11 15:42:47 -06:00
Alexander Capehart
715739f005
playback: remove parent mediasession value
Is redundant now given that METADATA_KEY_DISPLAY_DESCRIPTION is used
now.
2023-05-11 15:11:25 -06:00
Alexander Capehart
43036cfd59
playback: fix notif not responding to settings
Fix an issue where changes in image settings would not cause the
notification to respond.
2023-05-11 15:10:35 -06:00
Alexander Capehart
a8691cf693
build: enable r8 full mode
Enable R8 full mode for the app.

Should shave off ~150kb.
2023-05-11 15:07:09 -06:00
Alexander Capehart
cb69400905
music: add playlist creation stub
Add a stub for creating a new playlist.

UX details are not worked out yet, so the functionality is still
extremely bare.
2023-05-11 13:16:45 -06:00
Alexander Capehart
a5176d6209
all: do not do work on static initialization
Try to lazily initialize certain static variables that do work (like
Regex) to speed up initialization time.
2023-05-11 13:10:47 -06:00
Alexander Capehart
c98ca8712f
music: re-add fallible async execution
Re-add the tryAsync wrapper function to the loading process to properly
handle music loading errors.

Turns out there is basically no other way to properly do this except for
the insane exception -> Result -> exception hack.
2023-05-11 12:57:43 -06:00
Alexander Capehart
aa24ea00ea
all: use sealed interface when possible
Use sealed interface instead of sealed class when no class features are
actually used by the code.
2023-05-11 12:36:58 -06:00
Alexander Capehart
4e5a3f7fe1
tests: fix failure
Fix some accidental regressions and unported mocks.
2023-05-11 12:25:20 -06:00
Alexander Capehart
b72f33a989
search: match file names case-insensitively
Not doing this lead to some inconsistent search results at points.

Resolves #437.
2023-05-11 12:21:58 -06:00
Alexander Capehart
c7b875376c
music: refactor name implementation
Refactor the music name implementation to do the following:
1. Unify normal and sort names under a single datatype
2. Handle arbitrary-length digit strings
3. Ignore puncutation regardless of the intelligent sort
configuration, as it is trivially localizable.

Resolves #423.

Co-authored by: ChatGPT-3.5
2023-05-11 12:19:39 -06:00
Alexander Capehart
ca349dea18
music: fix tests
Fix tests that weren't migated to media3.
2023-05-10 20:48:44 -06:00
Alexander Capehart
c1e4d0f10e
all: switch to media3
Move everything over to the media3 library instead of ExoPlayer.

Media3 is worse in every way. It labels half of ExoPlayer as "unsafe"
because it thinks that it's garbage uwu "helpful" abstractions are
perfectly servicable when in reality they are a pile of garbage filled
with insane performance issues, race conditions, and a seeming lack
of awareness to the sheer absurdity of android's media APIs. It is
absolutely horrible, but ExoPlayer will stop being maintained soon
and I will have to move over for further maintenance.
2023-05-10 17:47:31 -06:00
Alexander Capehart
c6c3816bfc
Merge branch 'master' into dev 2023-05-10 17:09:06 -06:00
Alexander Capehart
04ef09dd94
build: update deps
Time to catch up on dependency updates after working non-stop for a
month and a half.
2023-05-10 14:00:36 -06:00
Alexander Capehart
d0f8291085
music: fix incorrect sort punct removal
Fix incorrect punctuation removal resulting in weird sorting behavior.
2023-04-16 18:01:32 -06:00
Alexander Capehart
e6b00b1025
build: bump to 3.0.5
Bump the version to 3.0.5.
2023-04-16 17:30:51 -06:00
Alexander Capehart
b031adabeb
music: correctly bubble exceptions
Correctly bubble failures in the music loading process.

Do it the easy way and simply map to a result, then backl to an
exception. I need to actually just make it fully bubble event
2023-04-16 17:29:21 -06:00
Alexander Capehart
89d599ae4e
widget: fix inconsistent cover corner radius
Somehow the line that makes the corner sizes consistent was lost.
2023-04-16 17:29:09 -06:00
Alexander Capehart
20feba024e
Merge pull request #419 from chrispalmeri/sorting
Updates to intelligent sorting
2023-04-15 17:46:55 -06:00
Chris Palmeri
6ac0cf358a
Use six digit sort name padding 2023-04-15 10:11:39 -05:00
Chris Palmeri
d04cd4ce4f
Refactor sort name changes 2023-04-15 10:05:15 -05:00
Chris Palmeri
b34462340a
Strip symbols and forget thousands separator 2023-04-12 23:33:16 -05:00
Chris Palmeri
7d8cdba6a9
Regex numbers and common thumb 2023-04-12 00:52:04 -05:00
Weblate (bot)
2e34933c86
Translations update from Hosted Weblate (#403)
* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (260 of 260 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (260 of 260 strings)

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

* Translated using Weblate (Russian)

Currently translated at 100.0% (260 of 260 strings)

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

* Translated using Weblate (Lithuanian)

Currently translated at 100.0% (260 of 260 strings)

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

* Translated using Weblate (Belarusian)

Currently translated at 100.0% (260 of 260 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (261 of 261 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (261 of 261 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 100.0% (261 of 261 strings)

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

* Translated using Weblate (Korean)

Currently translated at 100.0% (261 of 261 strings)

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

* Translated using Weblate (Russian)

Currently translated at 100.0% (261 of 261 strings)

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

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (261 of 261 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (261 of 261 strings)

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

* Translated using Weblate (Belarusian)

Currently translated at 100.0% (261 of 261 strings)

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

* Translated using Weblate (Lithuanian)

Currently translated at 100.0% (261 of 261 strings)

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

* Added translation using Weblate (Odia)

* Added translation using Weblate (Finnish)

* Translated using Weblate (Odia)

Currently translated at 0.7% (2 of 261 strings)

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

* Translated using Weblate (Greek)

Currently translated at 45.5% (119 of 261 strings)

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

* Translated using Weblate (Italian)

Currently translated at 99.6% (260 of 261 strings)

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

* Translated using Weblate (Polish)

Currently translated at 100.0% (261 of 261 strings)

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

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (261 of 261 strings)

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

* Translated using Weblate (Croatian)

Currently translated at 100.0% (30 of 30 strings)

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

* Translated using Weblate (Croatian)

Currently translated at 100.0% (261 of 261 strings)

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

* Translated using Weblate (Odia)

Currently translated at 1.9% (5 of 261 strings)

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

* Translated using Weblate (Finnish)

Currently translated at 90.0% (235 of 261 strings)

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

---------

Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: qwerty287 <ndev@web.de>
Co-authored-by: Макар Разин <makarrazin14@gmail.com>
Co-authored-by: Vaclovas Intas <vaclovas1999@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: Hoseok Seo <ddinghoya@gmail.com>
Co-authored-by: BMN <weblate@yopmail.com>
Co-authored-by: Eric <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Jiri Grönroos <jiri.gronroos@iki.fi>
Co-authored-by: Subham Jena <subhamjena8465@gmail.com>
Co-authored-by: Ricardo Feleque <rnfeq869w@relay.firefox.com>
Co-authored-by: atilluF <atilluF@users.noreply.hosted.weblate.org>
Co-authored-by: Maciej Klupp <maciej.klupp@gmail.com>
Co-authored-by: Milo Ivir <mail@milotype.de>
2023-04-11 07:49:58 -06:00
Alexander Capehart
f2a90bf0af
picker: refactor into module-specific impls
Refactor the weird picker god module into specific sub-impls in
playback and a new navigation package.

I cannot keep this unified. The needs are too different among each
picker. Better to keep it separate, especially in preparation for
the playlist dialogs.
2023-03-25 21:13:42 -06:00
Alexander Capehart
5de1e221ac
widget: fix inconsistent cover corner radius
Somehow the line that makes the corner sizes consistent was lost.
2023-03-25 15:54:06 -06:00
Alexander Capehart
67e67ca1d0
playback: generalize make playback panel opening
If the user clicks on the playback bar in any context, including the
queue view, open the playback panel.

This adds another means to closing the queue that does not involve
swiping.

Resolves #402.
2023-03-25 15:32:37 -06:00
Alexander Capehart
829e2a42c4
home: add playlist add button
Refactor the home FAB to switch to playlist addition button
when at the playlist tab.
2023-03-25 15:11:48 -06:00
Alexander Capehart
9988a1b76b
music: add framework for playlist mutation
Add the boilerplate for basic playlist creation/addition.

No integration in UI yet.
2023-03-25 14:36:22 -06:00
Alexander Capehart
70e824c4e7
Merge branch 'master' into dev 2023-03-25 09:49:28 -06:00
Alexander Capehart
41653a6d8a
build: bump to 3.0.4
Bump to version 3.0.4.
2023-03-24 08:30:13 -06:00
Alexander Capehart
6fc8a64677
music: move sort name number handling to setting
Make the numeric sort name handling added prior dependent on a new
"Intelligent Sorting" setting that also controls the article checks.

This kind of behavior might not be desirable in all cases, and it makes
the setting more consistent anyway.
2023-03-24 08:26:33 -06:00
Weblate (bot)
37f633cb9d
Translations update from Hosted Weblate (#398)
* Translated using Weblate (Czech)

Currently translated at 100.0% (259 of 259 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 100.0% (259 of 259 strings)

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

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (259 of 259 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (259 of 259 strings)

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

* Translated using Weblate (Galician)

Currently translated at 100.0% (259 of 259 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (259 of 259 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (259 of 259 strings)

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

* Translated using Weblate (French)

Currently translated at 70.6% (183 of 259 strings)

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

* Translated using Weblate (Italian)

Currently translated at 99.2% (257 of 259 strings)

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

* Translated using Weblate (Korean)

Currently translated at 100.0% (259 of 259 strings)

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

* Translated using Weblate (Polish)

Currently translated at 100.0% (259 of 259 strings)

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

* Translated using Weblate (Russian)

Currently translated at 100.0% (259 of 259 strings)

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

* Translated using Weblate (Turkish)

Currently translated at 100.0% (259 of 259 strings)

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

* Translated using Weblate (Japanese)

Currently translated at 100.0% (259 of 259 strings)

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

* Translated using Weblate (Croatian)

Currently translated at 100.0% (259 of 259 strings)

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

* Translated using Weblate (Belarusian)

Currently translated at 100.0% (259 of 259 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 100.0% (260 of 260 strings)

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

* Translated using Weblate (Italian)

Currently translated at 99.2% (258 of 260 strings)

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

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (260 of 260 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (260 of 260 strings)

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

* Translated using Weblate (Japanese)

Currently translated at 100.0% (260 of 260 strings)

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

* Translated using Weblate (Galician)

Currently translated at 100.0% (260 of 260 strings)

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

---------

Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: BMN <weblate@yopmail.com>
Co-authored-by: Eric <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Макар Разин <makarrazin14@gmail.com>
Co-authored-by: C. Rüdinger <Mail-an-CR@web.de>
Co-authored-by: atilluF <atilluF@users.noreply.hosted.weblate.org>
Co-authored-by: SakiNSA <legit@mail.ee>
Co-authored-by: Alexander Capehart <oxycblt@abstractr.net>
2023-03-23 17:52:38 -06:00
Alexander Capehart
7c0b73b699
music: move sort name number handling to setting
Make the numeric sort name handling added prior dependent on a new
"Intelligent Sorting" setting that also controls the article checks.

This kind of behavior might not be desirable in all cases, and it makes
the setting more consistent anyway.
2023-03-23 17:40:44 -06:00
Alexander Capehart
97b63992b5
music: make playlist uids random
Make playlist UIDs randomly generated.

This will allow multiple playlists with the same name, which may be
useful.
2023-03-23 17:15:38 -06:00
Alexander Capehart
f388e492aa
playback: add playlist support
Add playlist support to the playback code.
2023-03-23 16:07:56 -06:00
Alexander Capehart
52e0620149
music: fix failing tests 2023-03-22 19:59:29 -06:00
Alexander Capehart
4068c3e009
detail: add playlist view
Add a detail view for playlists.

This is most equivelent to the genre detail view right now, but will be
differentiated eventually.
2023-03-22 19:58:58 -06:00
Alexander Capehart
f3a2d94086
music: add playlist song sorting
Add the internal sort modes for playlist songs.

Theoretically this might be better as playlist-specific, but it's
harder to integrate that currently.
2023-03-22 17:22:10 -06:00
Alexander Capehart
f846a08b01
music: refactor library usage
Refactor the disjoint Library and Playlist setup into two new
DeviceLibrary and UserLibrary implementations.

This makes the API surface a bit less disjoint than prior.
2023-03-22 17:16:41 -06:00
Alexander Capehart
d8b67a8512
test: fix failure
Once again, forgot to update the mock implementations.
2023-03-20 20:29:43 -06:00
Alexander Capehart
686290a6c1
playlist: add basic ui support
Add extremely basic UI support for playlists.
2023-03-20 19:47:56 -06:00
Alexander Capehart
9a282e2be9
music: unify indexer and repository
Unify Indexer and MusicRepository into a single class.

This is meant to create a single dependency on PlaylistDatabase and
reduce the amount of orchestration.
2023-03-20 15:57:27 -06:00
Alexander Capehart
4033a791a7
playlist: consider playlists music
Consider playlists music rather than an extension of music.

This also sets up the basics of a playlist datbaase.
2023-03-20 15:57:27 -06:00
Weblate (bot)
5e3b4a2fce
Translations update from Hosted Weblate (#387)
* Translated using Weblate (Arabic (ar_IQ))

Currently translated at 58.9% (151 of 256 strings)

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

* Added translation using Weblate (Hebrew)

* Translated using Weblate (Hebrew)

Currently translated at 96.5% (28 of 29 strings)

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

* Translated using Weblate (Hebrew)

Currently translated at 61.7% (158 of 256 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (256 of 256 strings)

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

* Translated using Weblate (Polish)

Currently translated at 100.0% (256 of 256 strings)

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

* Translated using Weblate (Polish)

Currently translated at 100.0% (256 of 256 strings)

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

* Translated using Weblate (Polish)

Currently translated at 100.0% (256 of 256 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (256 of 256 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (29 of 29 strings)

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

* Translated using Weblate (Galician)

Currently translated at 98.0% (251 of 256 strings)

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

* Translated using Weblate (Polish)

Currently translated at 100.0% (256 of 256 strings)

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

* Translated using Weblate (Polish)

Currently translated at 100.0% (256 of 256 strings)

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

* Translated using Weblate (Polish)

Currently translated at 100.0% (256 of 256 strings)

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

---------

Co-authored-by: Moayad Ahmed <meayad1728383@gmail.com>
Co-authored-by: FAYE <pl4gve@gmail.com>
Co-authored-by: qwerty287 <ndev@web.de>
Co-authored-by: Maciej Klupp <maciej.klupp@gmail.com>
Co-authored-by: Макар Разин <makarrazin14@gmail.com>
Co-authored-by: C. Rüdinger <Mail-an-CR@web.de>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
2023-03-20 09:06:01 -06:00
Alexander Capehart
c6898aa3cc
build: fix failure
Due to a sudden pivot to starting from repository backwards with
playlists, there were some half-baked changesets lying around that
I forgot to revert. Do that.
2023-03-19 20:04:18 -06:00
Alexander Capehart
e4339a76bf
playlist: add runtime boilerplate
Add the boilerplate code for the playlist system.

Any functionality is runtime only and is not integrated in-app. Plan is
to build the UI scaffold first followed by the backing playlist.
2023-03-19 19:50:34 -06:00
Alexander Capehart
abeac90735
image: use asdeferred
Use asDeferred with the ExoPlayer image parser.

This is much better compared to using withContext.
2023-03-19 16:19:29 -06:00
Alexander Capehart
eddba44819
ui: fix failing tests
Forgot to correct the overrides.
2023-03-19 16:06:16 -06:00
Alexander Capehart
a485ebf1fe
music: handle numbers when sorting
Now sort by logical numeric order with music names.

This is a nice QoL improvement.

Resolves #394.
2023-03-19 14:08:37 -06:00
Alexander Capehart
8ea637ff05
search: ignore punctuation
Ignore punctuation when searching.

Makes the search experience a bit nicer.

Resolves #378.
2023-03-19 13:24:21 -06:00
Alexander Capehart
245896e4a7
music: check compilation flag value
Only map compilation flags if the value is "1".
2023-03-19 13:20:07 -06:00
Alexander Capehart
e50bc80a0b
music: handle compilation flag tags
Handle COMPILATION and ITUNESCOMPILATION flags, if present.

Just map these to Various Artists and a compilation release type.

Resolves #373.
2023-03-19 13:14:53 -06:00
Alexander Capehart
9cc75a0e11
detail: separate header from list data
Separate the header information into it's own adapter, and concatenate
it with the prior adapter.

This way, it can be updated separately without a jarring list update.
2023-03-19 12:03:58 -06:00
Alexander Capehart
f57b5dfc81
playback: fix flickering with album/artist info
Forgot to move these TextViews into the hacky FrameLayout to make their
new marquee states work correctly.

Resolves #376.
2023-03-18 11:47:11 -06:00
Alexander Capehart
5e0059fdba
ui: avoid crashes with simultanious navigation
If navigation occurs with more than one destination at once, just drop
the slower one rather than crashing.

Resolves #374.
2023-03-17 15:47:18 -06:00
Alexander Capehart
1df15a32cd
ui: use event everywhere
Replace all prior uses of the StateFlow + finish method pattern with
the new event class.
2023-03-17 15:29:36 -06:00
Alexander Capehart
f0d62e8176
deps: update deps
Lifecycle -> 2.6.0
Spotless -> 6.17.0 (Allows file name field to be used)
2023-03-17 15:13:11 -06:00
Alexander Capehart
969ceb4ea7
playback: broadcast audiofx session on play/pause
Broadcast the audiofx session when playing/pausing rather than starting
and stopping.

This is apparently the more correct way to do this.

Resolves #391.
2023-03-16 20:22:29 -06:00
Alexander Capehart
59818471d6
queue: add fine-grained updates
Add fine-grained updates to the queue view.

Should do the following:
1. Make queue updates faster (no diff calculation)
2. Resolve some bugs regarding duplicate queue items.
3. Finally complete the new list framework.

Resolves #350
Resolves #335
Resolves #380
2023-03-16 20:10:24 -06:00
VishnuSanal
f5df22e45d
fix: text not getting trimmed whilst searching
Signed-off-by: VishnuSanal <t.v.s10123@gmail.com>
2023-03-07 21:08:46 +05:30
Alexander Capehart
86ca6d577e
list: re-add fine-grained updates
Re-add the fine-grained updates that were removed prior due to state
concerns.

This time they should be safe enough to use, as the differ has been
fully vendored. The change is not complete enough however, as the queue
view has not been properly ported to use these updates just yet.
2023-03-04 23:08:03 -07:00
Alexander Capehart
6226b0a830
build: remove junk files in apk
Remove build junk from the APK.

Removes another ~100kb or so.
2023-03-04 22:11:55 -07:00
Alexander Capehart
4f7ed359ae
deps: update
kotlin -> 1.8.10
AGP -> 7.4.2
2023-03-04 22:11:35 -07:00
Alexander Capehart
a4f998cf36
playback: minify media sources further
Don't bundle useless HTTP and resource extractors, only bundle what we
use (Content URIs and Progressive Media).

Reduces minified APK size by ~100kb.
2023-03-04 21:40:23 -07:00
Alexander Capehart
4f64c463c4
detail: fix format not appearing in song detail
Forgot to add the data to the list.
2023-03-03 19:35:47 -07:00
Alexander Capehart
069a4c9511
playback: inject extractors
Use dependency injection with the custom extractor setup

Just looks better this way.
2023-03-03 19:33:44 -07:00
Alexander Capehart
e4aa409cbc
playback: add fragmented mp4 extractor
Not adding this broke MP4-AAC files for some insane reason. Google devs
try not to maintain two near-identical products with only slightly
infuriating differences challenge (IMPOSSIBLE)

Resolves #388.
2023-03-03 18:58:43 -07:00
Weblate (bot)
7501f02753
Translations update from Hosted Weblate (#371)
* Translated using Weblate (German)

Currently translated at 100.0% (256 of 256 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (256 of 256 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 100.0% (256 of 256 strings)

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

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (256 of 256 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (256 of 256 strings)

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

* Translated using Weblate (Punjabi)

Currently translated at 78.9% (202 of 256 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (256 of 256 strings)

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

* Added translation using Weblate (Galician)

* Translated using Weblate (Galician)

Currently translated at 96.5% (28 of 29 strings)

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

* Translated using Weblate (Galician)

Currently translated at 40.2% (103 of 256 strings)

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

* Update translation files

Updated by "Remove blank strings" hook in Weblate.

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

* Translated using Weblate (Spanish)

Currently translated at 100.0% (256 of 256 strings)

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

* Translated using Weblate (Galician)

Currently translated at 100.0% (29 of 29 strings)

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

* Translated using Weblate (Galician)

Currently translated at 96.0% (246 of 256 strings)

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

* Translated using Weblate (Lithuanian)

Currently translated at 100.0% (256 of 256 strings)

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

* Added translation using Weblate (Azerbaijani)

* Added translation using Weblate (Serbian)

* Translated using Weblate (Greek)

Currently translated at 44.1% (113 of 256 strings)

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

* Translated using Weblate (French)

Currently translated at 57.4% (147 of 256 strings)

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

* Translated using Weblate (Italian)

Currently translated at 100.0% (256 of 256 strings)

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

* Translated using Weblate (Korean)

Currently translated at 100.0% (256 of 256 strings)

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

* Translated using Weblate (Polish)

Currently translated at 100.0% (256 of 256 strings)

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

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (256 of 256 strings)

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

* Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (256 of 256 strings)

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

* Translated using Weblate (Russian)

Currently translated at 100.0% (256 of 256 strings)

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

* Translated using Weblate (Turkish)

Currently translated at 100.0% (256 of 256 strings)

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

* Translated using Weblate (Japanese)

Currently translated at 100.0% (256 of 256 strings)

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

* Translated using Weblate (Japanese)

Currently translated at 100.0% (29 of 29 strings)

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

* Translated using Weblate (Belarusian)

Currently translated at 100.0% (256 of 256 strings)

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

* Translated using Weblate (Belarusian)

Currently translated at 100.0% (29 of 29 strings)

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

* Translated using Weblate (Azerbaijani)

Currently translated at 9.3% (24 of 256 strings)

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

* Update translation files

Updated by "Remove blank strings" hook in Weblate.

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

---------

Co-authored-by: Ettore Atalan <atalanttore@googlemail.com>
Co-authored-by: qwerty287 <ndev@web.de>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: BMN <weblate@yopmail.com>
Co-authored-by: Eric <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: ShareASmile <aapshergill@gmail.com>
Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: Iago <translate@delthia.com>
Co-authored-by: Vaclovas Intas <vaclovas1999@gmail.com>
Co-authored-by: Макар Разин <makarrazin14@gmail.com>
Co-authored-by: Nidi <nizamismidov4@gmail.com>
2023-03-01 14:06:05 -07:00
Alexander Capehart
83c5b85424
deps: update
Spotless -> 6.15.0
Core -> 1.9.0
2023-02-24 21:57:01 -07:00
Alexander Capehart
d6e7b99e1f
playback: accept non-r128 tags on opus files
Apparently certain taggers just write replaygain information to opus
files regardless of the standard. Have to accomodate it.

Resolves #372.
2023-02-24 21:55:00 -07:00
Alexander Capehart
f190e6455a
Revert "build: use split apks"
Honestly, changing the version code schema is far too much of a hassle
for these to be reasonable.

This reverts commit 055d25e3e1.
2023-02-20 22:02:15 -07:00
Alexander Capehart
2f04f7dbc7
playback: fix incorrect super call 2023-02-20 21:38:41 -07:00
Alexander Capehart
9c7fa86ead
widget: fix widget failing to update
Turns out WidgetProvider doesn't support Hilt. Of course, it let me
know by silently failing on an exception for no reason.
2023-02-20 21:32:47 -07:00
Alexander Capehart
055d25e3e1
build: use split apks
Build multiple architecture-specfic APKs alongside the single "fat"
APK.
2023-02-20 20:53:54 -07:00
Alexander Capehart
5eab83ba4d
music: add equals impl to library
Now that Library is no longer a data class, it needs to have an
implementation of equals.

This caused all reloads to be interpreted as new libraries, even when
they were not.
2023-02-20 19:28:27 -07:00
Weblate (bot)
f4aee4532b
Translations update from Hosted Weblate (#363)
* Translated using Weblate (Punjabi)

Currently translated at 37.7% (97 of 257 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (257 of 257 strings)

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

* Translated using Weblate (Punjabi)

Currently translated at 39.2% (101 of 257 strings)

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

* Translated using Weblate (Punjabi)

Currently translated at 46.6% (120 of 257 strings)

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

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

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

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (254 of 254 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 100.0% (254 of 254 strings)

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

* Translated using Weblate (Polish)

Currently translated at 100.0% (254 of 254 strings)

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

* Translated using Weblate (Russian)

Currently translated at 100.0% (254 of 254 strings)

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

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (254 of 254 strings)

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

* Translated using Weblate (Belarusian)

Currently translated at 100.0% (28 of 28 strings)

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

---------

Co-authored-by: ShareASmile <aapshergill@gmail.com>
Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: Макар Разин <makarrazin14@gmail.com>
2023-02-20 19:07:31 -07:00
Alexander Capehart
3b43c3ea5c
release: bump to 3.0.3
Bump to version 3.0.3 (27).
2023-02-20 18:47:32 -07:00
Alexander Capehart
b260bf45b2
music: fix failing test
Fix failing music test due to FakeMusicSettings not properly
inheriting the newly added sort article setting.
2023-02-20 18:36:19 -07:00
Alexander Capehart
45fe36bd09
music: add option to disable article sort names
Add a setting to remove hard-coded sort names based on articles.

This feature is nice, but does not work with some non-english music.
Those individuals should have the ability to disable it.

The implementation honestly is not the greatest, primarily because it
does a 100% reload when it could just regenerate the library. Auxio's
current music model isn't really designed for that, so it will do this
until a need to that kind of "soft reload" really arises.

Resolves #359.
2023-02-20 18:34:01 -07:00
Alexander Capehart
2d9a5ad5cd
music: add more tests
Add tests for MusicViewModel, MusicMode, and MusicRepository.

Going further requires me to really learn instrumentation tests.
2023-02-20 16:01:58 -07:00
Alexander Capehart
f9857355bb
Revert "build: enable proguard obsfucation"
The crash screen fell though, so this makes no sense now.

This reverts commit 2cd6d93d45.
2023-02-20 15:07:09 -07:00
Alexander Capehart
6896ab912c
music: add subtitle to cache
Add subtitle tags to the music cache.

Didn't add these prior.
2023-02-19 22:02:55 -07:00
Alexander Capehart
975f239b8b
detail: add metadata to song detail view
Add metadata items to the song detail view. Should provide a useful
view into how Auxio is interpreting song metadata.

Resolves #330.
2023-02-19 21:59:58 -07:00
Alexander Capehart
bb704ea3fd
music: fix broken audio info extraction
Fix an issue where audio info extraction would break if done
consequtively.

Accidentally released a global state instance of the extractor. Now
that it's a local instance, the issue should not occur.
2023-02-19 13:11:54 -07:00
Alexander Capehart
192b917904
music: actually remove dependence on dcoders
Actually remove dependence on the non-audio decoders in the music
(and image) modules.
2023-02-19 13:08:44 -07:00
Alexander Capehart
e515534023
deps: fix stripping of ffmpeg extension
Fix an issue where stripping of the FFMpeg extension would not occur,
as AGP would try to default to an entirely different NDK version.

Eventually I'm considering just vendoring the FFMpeg extension outright
once I can upstream some of the ExoPlayer patches.
2023-02-19 12:04:15 -07:00
Alexander Capehart
2cd6d93d45
build: enable proguard obsfucation
Honestly the app is getting far too large for me to not obfucate on
morals. The source is available, it's fine.
2023-02-19 11:03:34 -07:00
Alexander Capehart
8b6545ca10
playback: specify audio extractors only
Only specify audio extractors to reduce APK size.
2023-02-19 10:59:28 -07:00
Alexander Capehart
458f2a5d84
deps: upgrade deps
ExoPlayer -> 2.18.3
Dagger -> 2.45
Coil -> 2.2.2
AGP -> 7.4.1
Gradle -> 8.0
2023-02-19 10:24:54 -07:00
Alexander Capehart
9b7494798a
deps: delegate ndk to ffmpeg ext
Delegate the NDK to the FFMpeg extension.

Should finally make this usable with github actions.
2023-02-14 20:44:16 -07:00
Alexander Capehart
efe03cac8c
actions: try to fix workflow
Try to fix workflow to no avail. Will need to do more testing later.
2023-02-13 22:27:07 -07:00
Alexander Capehart
399942e7e5
deps: move exoplayer build into gradle/submodules
Move the ExoPlayer build process into gradle by leveraging some shell
scripting and submodule magic.

This more or less kills all windows compatibility, but that is fine.
Who even develops on windows?
2023-02-13 21:40:17 -07:00
Weblate (bot)
556c1cf43b
Translations update from Hosted Weblate (#352)
* Added translation using Weblate (Punjabi)

* Translated using Weblate (Hindi)

Currently translated at 16.7% (43 of 257 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (257 of 257 strings)

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

* Translated using Weblate (Turkish)

Currently translated at 99.2% (255 of 257 strings)

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

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (257 of 257 strings)

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

* Translated using Weblate (Japanese)

Currently translated at 89.4% (230 of 257 strings)

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

* Translated using Weblate (Punjabi)

Currently translated at 33.8% (87 of 257 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (257 of 257 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 100.0% (257 of 257 strings)

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

* Translated using Weblate (Italian)

Currently translated at 100.0% (257 of 257 strings)

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

* Translated using Weblate (Polish)

Currently translated at 100.0% (257 of 257 strings)

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

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (257 of 257 strings)

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

* Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (257 of 257 strings)

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

* Translated using Weblate (Romanian)

Currently translated at 45.9% (118 of 257 strings)

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

* Translated using Weblate (Russian)

Currently translated at 100.0% (257 of 257 strings)

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

* Translated using Weblate (Turkish)

Currently translated at 100.0% (257 of 257 strings)

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

* Translated using Weblate (Punjabi)

Currently translated at 35.7% (92 of 257 strings)

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

* Translated using Weblate (Japanese)

Currently translated at 96.4% (27 of 28 strings)

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

* Added translation using Weblate (Belarusian)

* Translated using Weblate (Belarusian)

Currently translated at 98.4% (253 of 257 strings)

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

---------

Co-authored-by: ShareASmile <aapshergill@gmail.com>
Co-authored-by: qwerty287 <ndev@web.de>
Co-authored-by: metezd <itoldyouthat@protonmail.com>
Co-authored-by: Skrripy <rozihrash.ya6w7@simplelogin.com>
Co-authored-by: SakiNSA <legit@mail.ee>
Co-authored-by: Макар Разин <makarrazin14@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
2023-02-13 12:01:43 -07:00