Commit Graph

266 Commits

Author SHA1 Message Date
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 080c07eeab
Specify in the app name when using a develop build. 2020-07-10 17:23:02 +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 a3f84cc56c
Add an application ID suffix for development versions. 2020-07-09 23:00:50 +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 97bb621d7f
Enable network security setting to allow for user-configured CAs. 2020-07-08 22:20:38 +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 2c4f8a4329
Added margin on the left of album release date. 2020-07-08 14:08:59 +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 34ddef8489
Prepare 1.0.20: provide missing debug values. 2020-07-07 21:04:24 +02:00
Antoine POPINEAU 7f6b748032
Prepare 1.0.20: resized screenshots to be accepted by the Play Store. 2020-07-07 20:38:41 +02:00
Antoine POPINEAU 1a105654f0
Prepare 1.0.20. 2020-07-07 20:10:35 +02:00
Antoine POPINEAU 1238931384
Updated banner with new logo. Added source files for logo and banner. 2020-06-26 20:37:47 +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 72ba8733b3
Added downloads option menu in landscape mode. 2020-06-26 19:43:32 +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 441ca3249c
Added new full set of adaptive icons. 2020-06-26 12:34:08 +02:00
Antoine POPINEAU c420f26b88
Added the full-size logo to prevent blurry Otter icon. Resized album cover arts in landscape mode. 2020-06-25 22:33:01 +02:00
Antoine POPINEAU 921154edbb
Updated Gradle and Gradle plugin versions. Enabled artifact minification and resource shrinking (reduces APK size by more than 50%). 2020-06-25 22:29:33 +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 (080cce00ee). 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 08a7a28c22
Nicest highlight of selected row. 2020-06-22 18:05:25 +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 4d6b3d1ab2
Added screenshots to README. 2020-06-21 14:47:48 +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
vicdorke 2eff3263d2 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (94 of 94 strings)

Translation: Otter/Otter Android app
Translate-URL: https://translate.funkwhale.audio/projects/otter/android/zh_Hans/
2020-06-19 12:33:43 +00:00
vicdorke fb22b9f79e Added translation using Weblate (Chinese (Simplified)) 2020-06-19 05:51:54 +00: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 e7865004af
Prepare 1.0.19. 2020-06-13 22:27:26 +02:00
Antoine POPINEAU 17dace030e
Upgraded ExoPlayer, manually compiled FLAC extension. Related to #44. 2020-06-13 22:24:35 +02:00
Antoine POPINEAU 94dec8367f
Added more title contrast for item lists. Added icon for custom radios. 2020-06-13 13:41:12 +02:00
Antoine POPINEAU 81cf0835df
Prepare 1.0.18. 2020-06-13 12:26:53 +02:00
Keunes 7dc4d3e0ee
Translated using Weblate (Dutch)
Currently translated at 87.3% (76 of 87 strings)

Translation: Otter/Otter Android app
Translate-URL: https://translate.funkwhale.audio/projects/otter/android/nl/
2020-06-11 18:09:59 +02:00
Antoine POPINEAU 7bc3ab2010
Translated using Weblate (French)
Currently translated at 100.0% (87 of 87 strings)

Translation: Otter/Otter Android app
Translate-URL: https://translate.funkwhale.audio/projects/otter/android/fr/
2020-06-11 18:09:58 +02:00
Antoine POPINEAU 865603634a
Translated using Weblate (German)
Currently translated at 94.2% (82 of 87 strings)

Translation: Otter/Otter Android app
Translate-URL: https://translate.funkwhale.audio/projects/otter/android/de/
2020-06-11 18:09:57 +02:00
Antoine POPINEAU bfb1b90781
Translated using Weblate (English)
Currently translated at 100.0% (87 of 87 strings)

Translation: Otter/Otter Android app
Translate-URL: https://translate.funkwhale.audio/projects/otter/android/en/
2020-06-11 18:09:13 +02:00
Antoine POPINEAU 827170c34f
Build HEAD release on push to develop and bumped NDK versions. 2020-06-11 12:10:24 +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
Antoine POPINEAU e50a43a812
Lint. 2020-06-11 00:01:39 +02:00
Antoine POPINEAU a4b2907c07
Added Settings item to copy the latest logs in case of crash. 2020-06-10 23:59:09 +02:00
Antoine POPINEAU 54f911793a
Fixed skipping tracks on playback error. The faulty track is now removed from the queue. 2020-06-10 11:38:57 +02:00
Antoine POPINEAU 97b7dc2a61
Updated README to mention community localization effort. Fixed a crash with Android media controls when a cover art HTTP call would return an error status code. 2020-06-10 10:51:23 +02:00
Keunes 72a77221e6 Added translation using Weblate (Dutch) 2020-06-05 21:21:01 +00:00
Antoine POPINEAU 427dc8b4db Translated using Weblate (French)
Currently translated at 100.0% (87 of 87 strings)

Translation: Otter/Otter Android app
Translate-URL: https://translate.funkwhale.audio/projects/otter/android/fr/
2020-06-05 07:57:01 +00:00
Antoine POPINEAU a4b2af7640
Removed unused translation. Fixed untranslated string. 2020-06-02 19:02:34 +02:00
Arne Schlag 931c9d589b
added support for german (de) (#38)
* added support for german (de)
* Added spacing and missing plurals
* added missing translations
2020-06-02 17:01:30 +00:00
Antoine POPINEAU c75f2e45f6
Ability to shuffle play all tracks from an artist. Should close #21. Also added animations over long-running operations. 2020-06-02 18:50:46 +02:00
Antoine POPINEAU cb43615cb1
Fixed some linting issues. Fixed two issues related to current track emphasis and landscape now playing cover background. 2020-06-01 21:25:16 +02:00
Antoine POPINEAU dfeec64bf1
Explicitely set notifications as public. 2020-06-01 17:29:15 +02:00
Antoine POPINEAU 80554796d3
Resize native radios icons to be more legible. 2020-06-01 17:05:13 +02:00
Antoine POPINEAU ce05acad21
Send track played reports to Funkwhale whenever a track finishes playing. Closes #40. 2020-06-01 16:31:58 +02:00
Antoine POPINEAU dc7803acb4
Added support for native radios (random and less listened to radios). Advancing #8. 2020-06-01 14:38:50 +02:00
Antoine POPINEAU bf7763c8c3
Prepare 1.0.17. 2020-05-31 20:17:13 +02:00
Derek Schmidt c9159166d2
Avoid java.net.URL's RFC 2396 parsing 2020-05-30 18:54:57 -07:00
Antoine POPINEAU d5c1b89d3d
Cache if playback is in radio mode to be able to continue after app gets killed. 2020-05-31 02:39:32 +02:00
Antoine POPINEAU ae903aba65
Fix repeat icon color in dark mode. 2020-05-31 02:38:59 +02:00
Antoine POPINEAU 2d3bcde242
Add shuffle button in landscape mode. 2020-05-31 00:38:34 +02:00
Antoine POPINEAU d0d64bad9d
Fixed NDK version to bypass an issue on Travis. 2020-05-30 21:44:41 +02:00
Antoine POPINEAU fd1741ca53
Added experimental radios support. Fixed linter and fastlane metadata. 2020-05-30 21:16:28 +02:00
Antoine POPINEAU 3fb0bb55a4
Seek to start of song when nexting (progress cache would remain at the progress of the previous track. 2020-05-30 17:49:08 +02:00
Antoine POPINEAU 3180c886a2
Added Fastlane metadata listing for F-Droid and rationalized content between Triplet and Fastlane. Related to #10. 2020-05-30 16:16:04 +02:00
Antoine POPINEAU 415be3d235
Finish removing everything related to my Chromecast experiments, for now. 2020-05-30 16:00:24 +02:00
Antoine POPINEAU 159685bcc1
Added track details from Now Playing view. Should fix #30. 2020-05-30 15:49:06 +02:00
Antoine POPINEAU 1038ee00ff
Hide search results sections if no result for a kind. 2020-05-30 14:15:59 +02:00
Antoine POPINEAU 98b2b31e20
Open artists and albums in search results. 2020-05-30 14:12:04 +02:00
Antoine POPINEAU cf4cd16bed
Added a toggle for repeat mode on the Now Playing view. Should fix #26. 2020-05-29 23:42:03 +02:00
Antoine POPINEAU b554678500
Added links to artist and album on Now Playing view. Partially covers #30. 2020-05-29 21:40:01 +02:00
Antoine POPINEAU fa82f13a9c
Display search results for artists and albums. Only cosmetic for now, there is no action on them. 2020-05-29 13:19:28 +02:00
Antoine POPINEAU 55ab0ce71c
Cache playback position on pause. Should fix #19. 2020-05-29 10:32:09 +02:00
Antoine POPINEAU 9d0ee7f1b8
Added license to settings. 2020-05-29 01:42:03 +02:00
Antoine POPINEAU d9b7ed5b3f
Added version number to settings. 2020-05-29 01:30:05 +02:00
Antoine POPINEAU d53bee8f31
Added link to repository in settings. 2020-05-29 01:23:21 +02:00
Antoine POPINEAU 534e48e2c8
Upgrades dependencies. Enhanced login screen appearance. Fixed a seriously dumb issue where we would not transmit the token to the server. 2020-05-29 01:11:15 +02:00
Antoine POPINEAU aad0ec439c
Allow for anonymous connection if server supports it. Should provide basic support for #14. 2019-11-25 23:16:18 +01:00
Antoine POPINEAU 3101fa5302
Fixed a bug where lists would crash if a second page was loaded. 2019-11-25 21:39:10 +01:00
Antoine POPINEAU a55986343f
Format code and fixed favoriting issue on favorite tab. 2019-11-23 14:45:56 +01:00
Antoine POPINEAU aaf8874699
Remove "Add to playlist" from overflow menu since it is not yet implemented. 2019-11-22 20:24:56 +01:00
Antoine POPINEAU fbe5ea4db9
Sort album view by track position. 2019-11-22 20:24:08 +01:00
Antoine POPINEAU b7db24ea11
Fixed issue with merging around favorite management. 2019-11-22 20:14:05 +01:00
Antoine POPINEAU 40117122c7
Display error messages from Funkwhale's API on login error. 2019-11-22 00:13:22 +01:00
Antoine POPINEAU 9ea5446f58
Wrap LoginActivity in ScrollView to account for small screens and landscape mode. 2019-11-21 23:41:01 +01:00
Antoine POPINEAU c36616ab92
Promote Favorites tab to stable. 2019-11-21 23:26:35 +01:00
Antoine POPINEAU 0cb4bda212
Added support for landscape mode. 2019-11-21 23:26:34 +01:00
Antoine POPINEAU cac32332e0
Favorites button is now async. Added favorite button management in queue and search. 2019-11-21 22:13:59 +01:00
Antoine POPINEAU 09ada772e6
Prepared 1.0.15. 2019-11-17 01:03:59 +01:00
Antoine POPINEAU 02715389d2
Regenerated app icons to use proper background color and round shape on all API versions. 2019-11-16 17:50:24 +01:00
Antoine POPINEAU e4e91cd013
Finish LoginActivity on successful login to prevent backpressing back to it. 2019-11-16 17:26:43 +01:00
Antoine POPINEAU b735e20fbd
Limit track info to one line on now playing preview. Properly encode search terms. 2019-11-16 16:52:44 +01:00
Antoine POPINEAU 98b7812a47
We failed to remove bold typeface for non-currently playing tracks when recycling views. This is fixed. 2019-11-16 16:52:43 +01:00
Antoine POPINEAU a21cafdbe0
Fix miscellaneous bugs to Flow implementation. 2019-11-16 16:52:42 +01:00
Antoine POPINEAU ba12854e6c
Migrate to Flows. 2019-11-16 16:52:39 +01:00
Antoine POPINEAU 4e60906fe9
Wrong version code generator. [skip ci] 2019-11-06 09:05:48 +01:00
Antoine POPINEAU 2c87e7c983
Moved androidGitVersion to top of the file, else it is not taken into account. [skip ci] 2019-11-06 09:01:39 +01:00
Antoine POPINEAU 7084be81de
Remove -dirty suffix from version name if workdir is not clean (for F-Droid). [skip ci] 2019-11-06 08:14:02 +01:00
Antoine POPINEAU 3cd1d77b85
Trying and fix F-Droid build. [skip ci] 2019-11-06 01:08:30 +01:00
Antoine POPINEAU 28761b63c0
Prepare release 1.0.13. 2019-10-31 11:45:41 +01:00
Antoine POPINEAU 22c99d384c
Fixed issue #7 to display all search results properly. 2019-10-31 11:20:12 +01:00
Antoine POPINEAU 657c72480e
Some vendors' battery optimizers killed the background service quite
quickly when the app is in the background and *not* playing music. This
had the effect of breaking all player actions within the app (queue
listing, playback control, etc.).

This "starts" PlayerService every time MainActivity is resumed, which is
a noop if the service is still running, but allows retrieving app
functionality otherwise.
2019-10-31 00:46:35 +01:00
Antoine POPINEAU 993e780d54
Remove underline under SearchView. 2019-10-30 22:28:31 +01:00
Antoine POPINEAU 43ffffa68f
Added album cover to MediaSession (for WearOS media controls, and future Chromecast support). 2019-10-30 22:21:02 +01:00
Antoine POPINEAU eac875b9cb
Clear queue on logout. 2019-10-30 22:06:57 +01:00
Antoine POPINEAU 5c1498bb95
Automate editing of store listing. 2019-10-30 21:58:24 +01:00
Antoine POPINEAU 07d00ee69c
Fixed GitHub releases. 2019-10-30 15:09:15 +01:00
Antoine POPINEAU f45e5f7a36
Integrating CI. Configure GitHub releases. 2019-10-30 14:47:04 +01:00
Antoine POPINEAU 7c9a71d6d7
Put buggy features behind an experiments gate (favorites, for now). Optimized layouts to be able to load lots of content. Fixed Funkwhale API URLs to try and be backward compatible. 2019-10-29 23:41:44 +01:00