diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/PreferencesContent.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/PreferencesContent.kt index e79fdc96..95432283 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/PreferencesContent.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/PreferencesContent.kt @@ -92,7 +92,7 @@ fun PreferencesContent( val navDrawerPins by viewModel.navDrawerPins.observeAsState(mapOf()) var cacheUsage by remember { mutableStateOf(CacheUsage(0, 0, 0)) } val seerrIntegrationEnabled by viewModel.seerrEnabled.collectAsState(false) - var showSeerrServerDialog by remember { mutableStateOf(false) } + var seerrDialogMode by remember { mutableStateOf(SeerrDialogMode.None) } LaunchedEffect(Unit) { viewModel.preferenceDataStore.data.collect { @@ -393,7 +393,14 @@ fun PreferencesContent( AppPreference.SeerrIntegration -> { ClickPreference( title = stringResource(pref.title), - onClick = { showSeerrServerDialog = true }, + onClick = { + if (seerrIntegrationEnabled) { + seerrDialogMode = SeerrDialogMode.Remove + } else { + seerrVm.resetStatus() + seerrDialogMode = SeerrDialogMode.Add + } + }, modifier = Modifier, summary = if (seerrIntegrationEnabled) { @@ -465,25 +472,29 @@ fun PreferencesContent( ) } } - if (showSeerrServerDialog) { - val status by seerrVm.serverConnectionStatus.collectAsState(LoadingState.Pending) - LaunchedEffect(status) { - if (status == LoadingState.Success) { - showSeerrServerDialog = false - } - } - if (seerrIntegrationEnabled) { + when (seerrDialogMode) { + SeerrDialogMode.Remove -> { ConfirmDialog( title = stringResource(R.string.remove_seerr_server), body = "", - onCancel = { showSeerrServerDialog = false }, + onCancel = { seerrDialogMode = SeerrDialogMode.None }, onConfirm = { seerrVm.removeServer() - showSeerrServerDialog = false + seerrDialogMode = SeerrDialogMode.None }, ) - } else { + } + + SeerrDialogMode.Add -> { val currentUser by seerrVm.currentUser.observeAsState() + val status by seerrVm.serverConnectionStatus.collectAsState(LoadingState.Pending) + val serverAddedMessage = stringResource(R.string.seerr_server_added) + LaunchedEffect(status) { + if (status == LoadingState.Success) { + Toast.makeText(context, serverAddedMessage, Toast.LENGTH_SHORT).show() + seerrDialogMode = SeerrDialogMode.None + } + } AddSeerServerDialog( currentUsername = currentUser?.name, status = status, @@ -494,9 +505,11 @@ fun PreferencesContent( seerrVm.submitServer(url, username ?: "", passwordOrApiKey, method) } }, - onDismissRequest = { showSeerrServerDialog = false }, + onDismissRequest = { seerrDialogMode = SeerrDialogMode.None }, ) } + + SeerrDialogMode.None -> {} } } } @@ -539,3 +552,11 @@ data class CacheUsage( val imageMemoryMax: Long, val imageDiskUsed: Long, ) + +private sealed class SeerrDialogMode { + data object None : SeerrDialogMode() + + data object Add : SeerrDialogMode() + + data object Remove : SeerrDialogMode() +} diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/setup/seerr/SwitchSeerrViewModel.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/setup/seerr/SwitchSeerrViewModel.kt index c0cf1759..0b067287 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/setup/seerr/SwitchSeerrViewModel.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/setup/seerr/SwitchSeerrViewModel.kt @@ -107,4 +107,8 @@ class SwitchSeerrViewModel seerrServerRepository.removeServer() } } + + fun resetStatus() { + serverConnectionStatus.update { LoadingState.Pending } + } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d428a76a..82bf3210 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -434,6 +434,7 @@ Pending Seerr integration Remove Seerr Server + Seerr server added Password Username URL