From f68f31c80fa4a2c69787e0e2c225c1f0b99fbb4e Mon Sep 17 00:00:00 2001 From: ISO-B <3048685+ISO-B@users.noreply.github.com> Date: Sun, 17 Nov 2024 21:16:39 +0200 Subject: [PATCH] Android Auto: Streamlined browsing settings to single option --- .../audiobookshelf/app/data/DeviceClasses.kt | 4 -- .../app/device/DeviceManager.kt | 9 +---- .../audiobookshelf/app/media/MediaManager.kt | 3 ++ .../app/player/PlayerNotificationService.kt | 10 ++++- pages/settings.vue | 38 ++----------------- strings/en-us.json | 6 +-- 6 files changed, 17 insertions(+), 53 deletions(-) diff --git a/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt b/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt index 1d763b37..4bb5c77e 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt @@ -138,8 +138,6 @@ data class DeviceSettings( var languageCode: String, var downloadUsingCellular: DownloadUsingCellularSetting, var streamingUsingCellular: StreamingUsingCellularSetting, - var androidAutoBrowseForceGrouping: Boolean, - var androidAutoBrowseTopLevelLimitForGrouping: Int, var androidAutoBrowseLimitForGrouping: Int, var androidAutoBrowseSeriesSequenceOrder: AndroidAutoBrowseSeriesSequenceOrderSetting ) { @@ -168,8 +166,6 @@ data class DeviceSettings( languageCode = "en-us", downloadUsingCellular = DownloadUsingCellularSetting.ALWAYS, streamingUsingCellular = StreamingUsingCellularSetting.ALWAYS, - androidAutoBrowseForceGrouping = false, - androidAutoBrowseTopLevelLimitForGrouping = 100, androidAutoBrowseLimitForGrouping = 50, androidAutoBrowseSeriesSequenceOrder = AndroidAutoBrowseSeriesSequenceOrderSetting.ASC ) diff --git a/android/app/src/main/java/com/audiobookshelf/app/device/DeviceManager.kt b/android/app/src/main/java/com/audiobookshelf/app/device/DeviceManager.kt index 1cc6c9ff..fd502cbd 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/device/DeviceManager.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/device/DeviceManager.kt @@ -61,15 +61,8 @@ object DeviceManager { if (deviceData.deviceSettings?.streamingUsingCellular == null) { deviceData.deviceSettings?.streamingUsingCellular = StreamingUsingCellularSetting.ALWAYS } - - if (deviceData.deviceSettings?.androidAutoBrowseForceGrouping == null) { - deviceData.deviceSettings?.androidAutoBrowseForceGrouping = false - } - if (deviceData.deviceSettings?.androidAutoBrowseTopLevelLimitForGrouping == null) { - deviceData.deviceSettings?.androidAutoBrowseTopLevelLimitForGrouping = 100 - } if (deviceData.deviceSettings?.androidAutoBrowseLimitForGrouping == null) { - deviceData.deviceSettings?.androidAutoBrowseLimitForGrouping = 50 + deviceData.deviceSettings?.androidAutoBrowseLimitForGrouping = 100 } if (deviceData.deviceSettings?.androidAutoBrowseSeriesSequenceOrder == null) { deviceData.deviceSettings?.androidAutoBrowseSeriesSequenceOrder = AndroidAutoBrowseSeriesSequenceOrderSetting.ASC diff --git a/android/app/src/main/java/com/audiobookshelf/app/media/MediaManager.kt b/android/app/src/main/java/com/audiobookshelf/app/media/MediaManager.kt index 970e1ab0..4532f9b3 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/media/MediaManager.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/media/MediaManager.kt @@ -128,6 +128,7 @@ class MediaManager(private var apiHandler: ApiHandler, var ctx: Context) { val serverConnConfig = if (DeviceManager.isConnectedToServer) DeviceManager.serverConnectionConfig else DeviceManager.deviceData.getLastServerConnectionConfig() if (!DeviceManager.isConnectedToServer || !DeviceManager.checkConnectivity(ctx) || serverConnConfig == null || serverConnConfig.id !== serverConfigIdUsed) { + Log.d(tag, "Reset caches") podcastEpisodeLibraryItemMap = mutableMapOf() serverLibraries = listOf() serverLibraryItems = mutableListOf() @@ -141,6 +142,8 @@ class MediaManager(private var apiHandler: ApiHandler, var ctx: Context) { cachedLibraryDiscovery = hashMapOf() cachedLibraryPodcasts = hashMapOf() isLibraryPodcastsCached = hashMapOf() + allLibraryPersonalizationsDone = false + libraryPersonalizationsDone = 0 } } diff --git a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt index 30b43ef7..66449f35 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt @@ -1014,6 +1014,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { // No further calls will be made to other media browsing methods. null } else { + Log.d(tag, "Android Auto starting") isStarted = true mediaManager.checkResetServerItems() // Reset any server items if no longer connected to server @@ -1140,6 +1141,11 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { result.sendResult(children as MutableList?) } } else if (parentMediaId == LIBRARIES_ROOT || parentMediaId == RECENTLY_ROOT) { + Log.d(tag, "First load done: $firstLoadDone") + if (!firstLoadDone) { + result.sendResult(null) + return + } while (!this::browseTree.isInitialized) {} val children = browseTree[parentMediaId]?.map { item -> Log.d(tag, "[MENU: $parentMediaId] Showing list item ${item.description.title}") @@ -1386,7 +1392,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { Log.d(tag, "Loading series from library ${mediaIdParts[2]}") mediaManager.loadLibrarySeriesWithAudio(mediaIdParts[2]) { seriesItems -> Log.d(tag, "Received ${seriesItems.size} series") - if (DeviceManager.deviceData.deviceSettings!!.androidAutoBrowseForceGrouping || seriesItems.size > DeviceManager.deviceData.deviceSettings!!.androidAutoBrowseTopLevelLimitForGrouping) { + if (seriesItems.size > DeviceManager.deviceData.deviceSettings!!.androidAutoBrowseLimitForGrouping) { val seriesLetters = seriesItems.groupingBy { iwb -> iwb.title.first().uppercaseChar() }.eachCount() val children = seriesLetters.map { (seriesLetter, seriesCount) -> MediaBrowserCompat.MediaItem( @@ -1457,7 +1463,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { Log.d(tag, "Loading authors from library ${mediaIdParts[2]}") mediaManager.loadAuthorsWithBooks(mediaIdParts[2]) { authorItems -> Log.d(tag, "Received ${authorItems.size} authors") - if (DeviceManager.deviceData.deviceSettings!!.androidAutoBrowseForceGrouping || authorItems.size > DeviceManager.deviceData.deviceSettings!!.androidAutoBrowseTopLevelLimitForGrouping) { + if (authorItems.size > DeviceManager.deviceData.deviceSettings!!.androidAutoBrowseLimitForGrouping) { val authorLetters = authorItems.groupingBy { iwb -> iwb.name.first().uppercaseChar() }.eachCount() val children = authorLetters.map { (authorLetter, authorCount) -> MediaBrowserCompat.MediaItem( diff --git a/pages/settings.vue b/pages/settings.vue index 147e8b18..ddc8ccee 100644 --- a/pages/settings.vue +++ b/pages/settings.vue @@ -153,18 +153,6 @@