From 5f7cb050e52c43dd1be37398d33cd03d36cbf161 Mon Sep 17 00:00:00 2001 From: cottongin Date: Wed, 11 Mar 2026 16:32:33 -0400 Subject: [PATCH] =?UTF-8?q?fix:=20address=20code=20review=20issues=20?= =?UTF-8?q?=E2=80=94=20pinned=20on=20fresh=20install,=20reorder=20selectio?= =?UTF-8?q?n,=20stale=20rename,=20detached=20scopes,=20duplicate=20click?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made-with: Cursor --- .../radio247/data/db/SomaFmSeedData.kt | 2 +- .../radio247/service/RadioPlaybackService.kt | 18 ++++++++++-------- .../stationlist/RenamePlaylistDialog.kt | 2 +- .../screens/stationlist/StationListScreen.kt | 2 +- .../stationlist/StationListViewModel.kt | 9 +++++++++ 5 files changed, 22 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/xyz/cottongin/radio247/data/db/SomaFmSeedData.kt b/app/src/main/java/xyz/cottongin/radio247/data/db/SomaFmSeedData.kt index c1aeda4..47a7672 100644 --- a/app/src/main/java/xyz/cottongin/radio247/data/db/SomaFmSeedData.kt +++ b/app/src/main/java/xyz/cottongin/radio247/data/db/SomaFmSeedData.kt @@ -69,7 +69,7 @@ object SomaFmSeedData : RoomDatabase.Callback() { override fun onCreate(db: SupportSQLiteDatabase) { super.onCreate(db) - seedStations(db) + seedStations(db, includePinned = true) } /** diff --git a/app/src/main/java/xyz/cottongin/radio247/service/RadioPlaybackService.kt b/app/src/main/java/xyz/cottongin/radio247/service/RadioPlaybackService.kt index 55d076a..460a51e 100644 --- a/app/src/main/java/xyz/cottongin/radio247/service/RadioPlaybackService.kt +++ b/app/src/main/java/xyz/cottongin/radio247/service/RadioPlaybackService.kt @@ -472,20 +472,22 @@ class RadioPlaybackService : LifecycleService() { } private fun endConnectionSpan() { - if (connectionSpanId != 0L) { - CoroutineScope(Dispatchers.IO).launch { - connectionSpanDao.updateEndedAt(connectionSpanId, System.currentTimeMillis()) - } + val spanId = connectionSpanId + if (spanId != 0L) { connectionSpanId = 0L + serviceScope.launch(Dispatchers.IO) { + connectionSpanDao.updateEndedAt(spanId, System.currentTimeMillis()) + } } } private fun endListeningSession() { - if (listeningSessionId != 0L) { - CoroutineScope(Dispatchers.IO).launch { - listeningSessionDao.updateEndedAt(listeningSessionId, System.currentTimeMillis()) - } + val sessionId = listeningSessionId + if (sessionId != 0L) { listeningSessionId = 0L + serviceScope.launch(Dispatchers.IO) { + listeningSessionDao.updateEndedAt(sessionId, System.currentTimeMillis()) + } } } } diff --git a/app/src/main/java/xyz/cottongin/radio247/ui/screens/stationlist/RenamePlaylistDialog.kt b/app/src/main/java/xyz/cottongin/radio247/ui/screens/stationlist/RenamePlaylistDialog.kt index 07d2bf0..ebc5ced 100644 --- a/app/src/main/java/xyz/cottongin/radio247/ui/screens/stationlist/RenamePlaylistDialog.kt +++ b/app/src/main/java/xyz/cottongin/radio247/ui/screens/stationlist/RenamePlaylistDialog.kt @@ -16,7 +16,7 @@ fun RenamePlaylistDialog( onDismiss: () -> Unit, onConfirm: (String) -> Unit ) { - var name by remember { mutableStateOf(currentName) } + var name by remember(currentName) { mutableStateOf(currentName) } AlertDialog( onDismissRequest = onDismiss, diff --git a/app/src/main/java/xyz/cottongin/radio247/ui/screens/stationlist/StationListScreen.kt b/app/src/main/java/xyz/cottongin/radio247/ui/screens/stationlist/StationListScreen.kt index bfec0ab..2329b9f 100644 --- a/app/src/main/java/xyz/cottongin/radio247/ui/screens/stationlist/StationListScreen.kt +++ b/app/src/main/java/xyz/cottongin/radio247/ui/screens/stationlist/StationListScreen.kt @@ -471,7 +471,7 @@ private fun DragReorderTabRow( Box { Tab( selected = selectedTabIndex == index, - onClick = { onSelectTab(index) }, + onClick = {}, text = { Text( text = tab.label, diff --git a/app/src/main/java/xyz/cottongin/radio247/ui/screens/stationlist/StationListViewModel.kt b/app/src/main/java/xyz/cottongin/radio247/ui/screens/stationlist/StationListViewModel.kt index 34331a6..d62c919 100644 --- a/app/src/main/java/xyz/cottongin/radio247/ui/screens/stationlist/StationListViewModel.kt +++ b/app/src/main/java/xyz/cottongin/radio247/ui/screens/stationlist/StationListViewModel.kt @@ -17,6 +17,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.Job import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow @@ -355,10 +356,18 @@ class StationListViewModel(application: Application) : AndroidViewModel(applicat } fun reorderTabs(reorderedPlaylists: List) { + val currentTab = viewState.value.tabs.getOrNull(viewState.value.selectedTabIndex) + val selectedPlaylistId = currentTab?.playlist?.id viewModelScope.launch { for ((index, playlist) in reorderedPlaylists.withIndex()) { playlistDao.updateSortOrder(playlist.id, index) } + if (selectedPlaylistId != null) { + val playlists = playlistDao.getAllPlaylists().first() + val tabs = buildTabs(playlists) + val newIndex = tabs.indexOfFirst { it.playlist?.id == selectedPlaylistId } + if (newIndex >= 0) _selectedTabIndex.value = newIndex + } } } }