From 45628b14db477b266eb1f1f4ca9bec0b43f741cc Mon Sep 17 00:00:00 2001 From: Roshan Varughese <40583749+Animeboynz@users.noreply.github.com> Date: Mon, 26 Aug 2024 04:07:14 +1200 Subject: [PATCH] Add confirmation when adding repo via URI (#1158) * Add confirmation when adding repo via URI * Blank lines * Suggestions * Reverting Changes * Removing Unused Imports --- .../screen/browse/ExtensionReposScreen.kt | 11 +++++-- .../browse/ExtensionReposScreenModel.kt | 1 + .../components/ExtensionReposDialogs.kt | 32 +++++++++++++++++++ .../moko-resources/base/strings.xml | 1 + 4 files changed, 43 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/ExtensionReposScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/ExtensionReposScreen.kt index 03c9acd7c..38f4e72c8 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/ExtensionReposScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/ExtensionReposScreen.kt @@ -8,6 +8,7 @@ import androidx.compose.ui.platform.LocalContext import cafe.adriel.voyager.core.model.rememberScreenModel import cafe.adriel.voyager.navigator.LocalNavigator import cafe.adriel.voyager.navigator.currentOrThrow +import eu.kanade.presentation.more.settings.screen.browse.components.ExtensionRepoConfirmDialog import eu.kanade.presentation.more.settings.screen.browse.components.ExtensionRepoConflictDialog import eu.kanade.presentation.more.settings.screen.browse.components.ExtensionRepoCreateDialog import eu.kanade.presentation.more.settings.screen.browse.components.ExtensionRepoDeleteDialog @@ -32,7 +33,7 @@ class ExtensionReposScreen( val state by screenModel.state.collectAsState() LaunchedEffect(url) { - url?.let { screenModel.createRepo(it) } + url?.let { screenModel.showDialog(RepoDialog.Confirm(it)) } } if (state is RepoScreenState.Loading) { @@ -67,7 +68,6 @@ class ExtensionReposScreen( repo = dialog.repo, ) } - is RepoDialog.Conflict -> { ExtensionRepoConflictDialog( onDismissRequest = screenModel::dismissDialog, @@ -76,6 +76,13 @@ class ExtensionReposScreen( newRepo = dialog.newRepo, ) } + is RepoDialog.Confirm -> { + ExtensionRepoConfirmDialog( + onDismissRequest = screenModel::dismissDialog, + onCreate = { screenModel.createRepo(dialog.url) }, + repo = dialog.url, + ) + } } LaunchedEffect(Unit) { diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/ExtensionReposScreenModel.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/ExtensionReposScreenModel.kt index 4131bc6fd..444f704ab 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/ExtensionReposScreenModel.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/ExtensionReposScreenModel.kt @@ -125,6 +125,7 @@ sealed class RepoDialog { data object Create : RepoDialog() data class Delete(val repo: String) : RepoDialog() data class Conflict(val oldRepo: ExtensionRepo, val newRepo: ExtensionRepo) : RepoDialog() + data class Confirm(val url: String) : RepoDialog() } sealed class RepoScreenState { diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/components/ExtensionReposDialogs.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/components/ExtensionReposDialogs.kt index 239f917d0..80cada76b 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/components/ExtensionReposDialogs.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/components/ExtensionReposDialogs.kt @@ -152,3 +152,35 @@ fun ExtensionRepoConflictDialog( }, ) } + +@Composable +fun ExtensionRepoConfirmDialog( + onDismissRequest: () -> Unit, + onCreate: () -> Unit, + repo: String, +) { + AlertDialog( + onDismissRequest = onDismissRequest, + title = { + Text(text = stringResource(MR.strings.action_add_repo)) + }, + text = { + Text(text = stringResource(MR.strings.add_repo_confirmation, repo)) + }, + confirmButton = { + TextButton( + onClick = { + onCreate() + onDismissRequest() + }, + ) { + Text(text = stringResource(MR.strings.action_add)) + } + }, + dismissButton = { + TextButton(onClick = onDismissRequest) { + Text(text = stringResource(MR.strings.action_cancel)) + } + }, + ) +} diff --git a/i18n/src/commonMain/moko-resources/base/strings.xml b/i18n/src/commonMain/moko-resources/base/strings.xml index 37b9d7427..90262137a 100644 --- a/i18n/src/commonMain/moko-resources/base/strings.xml +++ b/i18n/src/commonMain/moko-resources/base/strings.xml @@ -348,6 +348,7 @@ Delete repo Invalid repo URL Do you wish to delete the repo \"%s\"? + Do you wish to add the repo \"%s\"? Open source repo Replace Signing Key Fingerprint Already Exists