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