Commit Graph

205 Commits

Author SHA1 Message Date
Ryan Harg 208c7e584b
Change base package name from org to audio 2021-07-12 10:14:26 +02:00
Ryan Harg 3c86003e30 Rebrand/rename packages 2021-07-02 11:55:49 +00:00
Ryan Harg 4a1630032d Update some dependencies and adapt where necessary 2021-07-01 11:25:09 +00:00
Ryan Harg eea0628d3d
Replace app logos and app name
commit f9058b7b08
Author: Ryan Harg <ryan.harg@mailbox.org>
Date:   Tue Jun 29 18:41:32 2021 +0200

    Exchange app logo in login activity

commit a67d2a854c
Author: Ryan Harg <ryan.harg@mailbox.org>
Date:   Tue Jun 29 15:00:31 2021 +0200

    Re-add source-set specific application name

commit 8bfcb36d60
Author: Ryan Harg <ryan.harg@mailbox.org>
Date:   Tue Jun 29 14:19:22 2021 +0200

    Replace in-app icons

commit f8eb547732
Author: Ryan Harg <ryan.harg@mailbox.org>
Date:   Tue Jun 29 13:57:44 2021 +0200

    Replace application icons and adjust app name
2021-07-01 13:11:11 +02:00
Ryan Harg f0c2d22e78
Upgrade to Kotlin 1.5 2021-06-29 09:37:36 +02:00
ryan_harg 34d377630e Fix build script issues 2021-06-26 11:36:32 +00:00
Antoine POPINEAU a7b469d690
#15: added "Add to playlist" action from the Now Playing screen. 2020-09-26 18:34:13 +02:00
Antoine POPINEAU 6bdefa1936
#81: added save current queue to playlist. 2020-09-26 18:23:12 +02:00
Antoine POPINEAU 785fa6ce19
#84: remove presumably unnecessary trigger to Event.QueueChanged. 2020-09-26 17:39:24 +02:00
Antoine POPINEAU 7feac4e400
Changed background color when rearranging playlist items. 2020-09-06 15:36:14 +02:00
Antoine POPINEAU b0747658ae
Add toast when added to playlist. 2020-09-06 15:23:45 +02:00
Antoine POPINEAU ab654a08c4
#15: Enable reordering of playlist tracks. Fixed an algorithmic issue with reordering of queue items. 2020-09-06 14:56:46 +02:00
Antoine POPINEAU 049822005e
#15: implemented removing track from playlist. 2020-09-06 14:56:44 +02:00
Antoine POPINEAU d796fca26b
#15: Enabled "Add to playlist" in the search screen. Localized strings and improved UI. 2020-09-06 14:56:43 +02:00
Antoine POPINEAU 54d4dc2235
#15: initial support for adding tracks to a playlist. 2020-09-06 14:56:43 +02:00
Antoine POPINEAU 64ea222f08
#76: fixed Shuffle and Clear queue actions in landscape mode. 2020-09-05 16:12:22 +02:00
Antoine POPINEAU e60814d28f
#52: Properly handle content filter selection and state. 2020-09-03 22:55:10 +02:00
Antoine POPINEAU ce8d956cee
#52: implemented UI and functionnal filtering for all, me and subscribed. Funkwhale still does not seem to respect that. 2020-09-03 22:55:09 +02:00
Antoine POPINEAU 63c8dbe09e
#65: abide by order preference when using "Queue" overflow menu option. 2020-09-02 14:24:59 +02:00
Antoine POPINEAU 9b0c8b0bf6
#65: added an option to select preference towards playback order. 2020-09-02 12:45:37 +02:00
Antoine POPINEAU b87766dad2
#66: Fixed behavior on queue shuffling, clearing and end of queue on no-repeat. 2020-09-02 12:05:31 +02:00
Antoine POPINEAU 50c8dac297
#66: add queue actions to clear or shuffle the queue. 2020-09-01 22:16:36 +02:00
Antoine POPINEAU 4cf77404a1
#73: fix track sorting order by fixing a mistake and taking disc_number into consideration. 2020-09-01 18:25:10 +02:00
Antoine POPINEAU 998dab0fb5
Do not delete downloads on authentication error (prepare for new authentication system). 2020-08-29 15:14:59 +02:00
Antoine POPINEAU 002ebec7ce
Do not delete downloaded tracks on log out.
Downloaded tracks can be quite precious when you have lots of them (as
redownloading all of them can be costly in terms of time and money).
This prevents downloaded tracks from being deleted along with your
session.

This must be included in 0.21, so we can safely implement Funkwhale's
new authentication mechanism in 0.22.
2020-08-08 14:58:50 +02:00
Antoine POPINEAU d76f76a222
Use the new schema for cover art URLs. 2020-08-08 14:51:39 +02:00
Antoine POPINEAU f062e62299
Apply current track style to playlist tracks. 2020-08-03 15:30:42 +02:00
Antoine POPINEAU d2e472d770
Update media session metadata as soon as track changes. 2020-08-03 15:30:41 +02:00
Antoine POPINEAU a7968e9a87
Fix dynamically changing between own music and all music. Dynamically reload all tabs instead of only active ones. 2020-07-13 10:31:36 +02:00
Antoine POPINEAU 5c684b6e67
Fixed audio focus stealing. 2020-07-12 20:46:33 +02:00
Antoine POPINEAU 85e9f14e2a
Cleaned up DisableableFrameLayout. 2020-07-12 19:05:51 +02:00
Antoine POPINEAU 1e62cc1f4e
Now Playing view: do not cancel fling event on touch, disable view behind it when opened. 2020-07-12 18:55:52 +02:00
Antoine POPINEAU b0640cf1b2
Streamline the way the media session is controled across devices. 2020-07-12 18:28:50 +02:00
Antoine POPINEAU e7cb5e4c6e
QueueNavigator now returns queue index. 2020-07-12 15:19:33 +02:00
Antoine POPINEAU 931cd0b42d
Stop PlayerService when logging out. 2020-07-11 21:05:19 +02:00
Antoine POPINEAU ba31a4efcf
Some tracks do not have album, this fixes a crash trying to retrieve their album cover. Changed the placeholder album cover to be less aggressive to the eye. 2020-07-11 21:01:09 +02:00
Antoine POPINEAU 308e7d7567
Improve performance of recycler views and prevent flickering on state change. 2020-07-11 18:15:40 +02:00
Antoine POPINEAU 7d95618ff5
Allow track downloading from the search results. 2020-07-11 17:41:41 +02:00
Antoine POPINEAU e4da4af3f3
Prevent keyboard to pop over result pages. 2020-07-11 17:28:01 +02:00
Antoine POPINEAU b9e9272336
Optimized workflow between two searches. 2020-07-11 17:17:26 +02:00
Antoine POPINEAU 61fdb116ad
Fixed an issue where favorited tracks would not show up erroneously in track lists. 2020-07-11 16:56:09 +02:00
Antoine POPINEAU dd86988518
Explicitely remove notification when paused and the app is swiped up. 2020-07-11 14:16:22 +02:00
Antoine POPINEAU b6b9e4c053
Reattach the detached service notification when the app is swiped (if not playing) for it be removed with the application. 2020-07-11 12:58:25 +02:00
Antoine POPINEAU eb6b7a807b
Fixed album position in track info and ensure safe callback to current recycler view. 2020-07-10 21:03:48 +02:00
Antoine POPINEAU 3a81d26cd9
Renamed some components to refer to Otter instead of Funkwhale. 2020-07-10 20:40:18 +02:00
Antoine POPINEAU 28949a8e17
Fixed loading wheel. 2020-07-10 20:37:28 +02:00
Antoine POPINEAU bc1e911b41
Globalize the use of caching for main sections data, improved handling of loading more pages. 2020-07-10 20:28:44 +02:00
Antoine POPINEAU 57692f2e42
Added copyright and license information (#58). 2020-07-10 20:25:35 +02:00
Antoine POPINEAU fe224b097a
Re-enabled media session on service start. Do not condition radio resumption to having a cookie, since those are only valid when authenticated anonymously. 2020-07-10 18:46:49 +02:00
Antoine POPINEAU b34810d631
Allow media session resuming from media buttons when service is killed. 2020-07-10 17:18:29 +02:00
Antoine POPINEAU b14b703f05
Fix an issue where always retrieving favorites from the network could be really costly and introduce stack overflows (#60). 2020-07-10 15:50:56 +02:00
Antoine POPINEAU 4ecb607f45
Let the media session live when playback is paused.
As per Android policy and internal logic, we stopped the playback
foreground service when playback was paused. This made our PlayService
elligible for garbage collection by the OS. This had the consequences of
not allowing someone to pause playback and resume it after some time.
Android would always kill the service after around one minute.

This commit, on supported Android version (7.0+) detaches the
notification when stopping the foreground service, leaving the
notification in place even when the service is killed, allowing the user
to resume playback whenever they please.

We also had to move the MediaSession out of the service, for it to
remain alive between service killing and resurrection.
2020-07-09 23:01:35 +02:00
Antoine POPINEAU 4b2cf10e78
Fix IO thread performing UI task on some occasion (#59). 2020-07-09 10:45:52 +02:00
Antoine POPINEAU 5d397ab1fe
Sort radios, playlists and favorites by name. 2020-07-08 23:23:14 +02:00
Antoine POPINEAU f3bbca9c27
Fixed caching of metadata. 2020-07-08 23:21:47 +02:00
Antoine POPINEAU 37d5c7b7be
Load data from network on resume if cached data is empty. 2020-07-08 23:00:10 +02:00
Antoine POPINEAU b2e6ec43a8
Improved loading of new and cached items.
Scrolling through large lists was a pain. The next page would only load
when the end of the list was reached, stopping the scroll action while the new
page was fetched.

This commits adds two items:

 * Artists, albums and playlists do not refresh data on resume, only
   using cached data until manually refreshed.
 * When manually refreshed, we initially fetch a few pages instead
   of only one. Also, on scroll, we try as best as we can to always keep
   10 pages (pages as in screen estate) worth of data loaded.
2020-07-08 22:11:50 +02:00
Antoine POPINEAU de0a494b43
Do not transform URLs to HTTPS now that we support cleartext connections. 2020-07-08 15:12:49 +02:00
Antoine POPINEAU 0facf09c94
Do not list artists without albums.
As of now, Otter cannot list albumless tracks (for example, tracks in
compilation, appearing under the original artist, but not part of an
album published by this artist). This created a lot of "empty" artists
(with no albums) in the Artists section of the app.

This may be rolled back if we are some day able to list "orphan"
tracks.
2020-07-08 14:09:48 +02:00
Antoine POPINEAU e17c706ae3
Release date can be null, changed model and added checks. 2020-07-08 14:08:35 +02:00
Antoine POPINEAU 37f4b1da9e
Sort artists and global albums by name/title. Sort an artist's albums by release date. Display the release year in the albums view (#54). 2020-07-08 13:19:47 +02:00
Antoine POPINEAU b0d7ff393d
Changed track metadata reporting method so it could work similarly across devices (notification, ambient display, lockscreen, watches, ...) (#55). 2020-07-08 12:46:52 +02:00
Antoine POPINEAU 100514cde6
Limit the width of the login screen in landscape mode to be easier on the eye. 2020-06-26 20:03:48 +02:00
Antoine POPINEAU 49f5754f2b
Add more emphasis to currently playing track in listings. 2020-06-26 19:42:10 +02:00
Antoine POPINEAU 9b888ba17f
Do not skip track on error if the user paused playback. Fixed an issue where two track could be marked as playing at the same time in TracksFragment. 2020-06-26 19:05:11 +02:00
Antoine POPINEAU 212b44a22f
Actually disable caching if cache size is set to zero. 2020-06-26 18:50:17 +02:00
Antoine POPINEAU 9c61fcf462
Tidied up usage of GlobalScope to the profit of AndroidX's lifecycle coroutine scopes. 2020-06-25 01:26:15 +02:00
Antoine POPINEAU f7a5a29eea
Pulled some fixes from dev/chromecast (080cce00eec84f1be724d34daa597c406bb1a63a). 2020-06-24 19:45:16 +02:00
Antoine POPINEAU 2b9eb789e8
Changed style for main shuffle button to be less conspicuous. 2020-06-24 16:04:36 +02:00
Antoine POPINEAU b2d26a8127
Refactored and rationalized some events and commands on the buses. 2020-06-24 14:54:13 +02:00
Antoine POPINEAU dc25a922c2
Changed icons (still need to make full set). 2020-06-23 23:23:46 +02:00
Antoine POPINEAU 1ee9f021ce
Login screen would briefly display an dummy error when authentication succeeded. 2020-06-23 09:40:18 +02:00
Antoine POPINEAU 7a72558d1a
Refresh every second instead of 500ms. 2020-06-22 22:25:03 +02:00
Antoine POPINEAU ff2a915ba4
Periodically refresh download progress while in DownloadsActivity. 2020-06-22 22:24:34 +02:00
Antoine POPINEAU 03fcf1a382
Fixed download and cache indicators on search screen. Fixed an issue with placeholder texts when some search terms did not return results. 2020-06-22 21:48:31 +02:00
Antoine POPINEAU 3a88e02ca0
Delete regular data cache on logout. 2020-06-21 18:51:22 +02:00
Antoine POPINEAU bab7040b8f
Delete downloaded tracks on logout. Cache is not deleted for now (until I find a way). 2020-06-21 18:06:38 +02:00
Antoine POPINEAU 874b79d0d5
Fixed blocking issue when leaving MainActivity where playback state would no longer be reflected in Now Playing. 2020-06-21 16:15:52 +02:00
Antoine POPINEAU a19e500f09
Prevent long-running requests to make the app crash when user is logging out. 2020-06-21 14:16:30 +02:00
Antoine POPINEAU 490de25b05
Handle radios when logged in anonymously.
On top this fix, this commit adds support for "My content" and
"Favorites" instance radios (fixes #51), as well as clearly separates instance
radios from user radios.

Radios were a bit unusable when not logged in with an actual authorized
user account, this commit fixes the following elements:

 * Anonymous users get a transient session cookie when starting a radio
   session that was not stored and forwarded on playback, meaning no
   radios would play;
 * Anonymous users do not have their own own content. Thus, only the
   "Random" radio makes sense in that context. This commit only display
   the instance radios that are relevant to your authentication status.

"My content" radios needs the user ID to function properly, this commit
also adds retrieving it from the /api/v1/users/users/me/ endpoint, which
now may be used in the future for other purposes.
2020-06-21 13:41:27 +02:00
Antoine POPINEAU 18e981fba5
Fixed an issue where the main playback UI would freeze when skipping an erroring track (in airplane mode, for example). 2020-06-20 22:10:13 +02:00
Antoine POPINEAU 1b98850a9c
Add a checkbox to allow cleartext connections to a Funkwhale instance. Should close #6. 2020-06-20 16:52:41 +02:00
Antoine POPINEAU 66c7915307
Prevent issue on queue item deletion. Should close #48. 2020-06-20 16:32:14 +02:00
Antoine POPINEAU e539cc26dd
Manage cached and downloaded tracks separately. Downloaded track are not automatically evicted and do not count towards cache storage limit. Contributes to #37. Fixed an issue where the event bus on main would be duplicated. 2020-06-20 15:42:10 +02:00
Antoine POPINEAU 13f3c2d465
Add light animation when scrolling listings. 2020-06-15 00:26:22 +02:00
Antoine POPINEAU 098048ac49
Download state change would not be reflected in the list. 2020-06-14 21:15:13 +02:00
Antoine POPINEAU abff279df9
Fix performance issue on download tracking from the Favorites section. 2020-06-14 20:40:08 +02:00
Antoine POPINEAU a2c35595c7
Better handling of download progress and event. Added an option to retry failed downloads. Performance improvement around downloads UI. 2020-06-14 20:32:48 +02:00
Antoine POPINEAU 94fd3d51aa
Add downloaded indicators in favorites view. 2020-06-14 20:32:20 +02:00
Antoine POPINEAU a2caba8bd1
Added downloaded indicator on track rows. 2020-06-14 20:32:17 +02:00
Antoine POPINEAU 4127421132
Allow downloading whole albums. 2020-06-14 20:31:12 +02:00
Antoine POPINEAU 00fb833cfa
Added basic management of downloads and downloaded tracks. 2020-06-14 20:31:07 +02:00
Antoine POPINEAU 2dfabf74e9
Initial handling of track downloads. 2020-06-14 20:28:05 +02:00
Antoine POPINEAU a0e201e68f
Filter music according to own music setting (should close #33). 2020-06-14 20:26:47 +02:00
Antoine POPINEAU 746ae8897d
Frontend logic for displaying only own music. 2020-06-14 20:26:39 +02:00
Antoine POPINEAU fc1419c2fb
Minor style enhancement. 2020-06-14 00:42:45 +02:00
Antoine POPINEAU 17dace030e
Upgraded ExoPlayer, manually compiled FLAC extension. Related to #44. 2020-06-13 22:24:35 +02:00
Antoine POPINEAU eb97c3d4be
Promote Radios to stable! 2020-06-11 10:56:31 +02:00
Antoine POPINEAU 6dcd9afc31
Fixed an issue where RadiosFragment would wake up on track change even when the app is killed, causing a crash. 2020-06-11 08:08:20 +02:00
Antoine POPINEAU d76f820f9d
Left test exception throw... 2020-06-11 00:02:49 +02:00