From 128c7be8c69e35b69602934e584988b94763f24d Mon Sep 17 00:00:00 2001 From: wiiznokes <78230769+wiiznokes@users.noreply.github.com> Date: Wed, 5 Nov 2025 14:54:45 +0100 Subject: [PATCH 1/4] init --- .../ui/screen/setup/remote/CredentialsScreen.kt | 15 +++++++++++++++ .../ui/screen/setup/remote/EnterUrlScreen.kt | 7 +++++-- ...wKeysScreen.kt => GenerateNewSshKeysScreen.kt} | 6 +++--- .../gitnote/ui/screen/setup/remote/RemoteNav.kt | 4 ++-- ...creen.kt => SelectGenerateSshNewKeysScreen.kt} | 6 +++--- 5 files changed, 28 insertions(+), 10 deletions(-) create mode 100644 app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/CredentialsScreen.kt rename app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/{GenerateNewKeysScreen.kt => GenerateNewSshKeysScreen.kt} (98%) rename app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/{SelectGenerateNewKeysScreen.kt => SelectGenerateSshNewKeysScreen.kt} (91%) diff --git a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/CredentialsScreen.kt b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/CredentialsScreen.kt new file mode 100644 index 00000000..5b5a9399 --- /dev/null +++ b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/CredentialsScreen.kt @@ -0,0 +1,15 @@ +package io.github.wiiznokes.gitnote.ui.screen.setup.remote + +import androidx.compose.runtime.Composable +import io.github.wiiznokes.gitnote.ui.viewmodel.SetupViewModelI + + +@Composable +fun EnterUrlWithProviderScreen( + onBackClick: () -> Unit, + vm: SetupViewModelI, + onClone: () -> Unit, + onSuccess: () -> Unit, +) { + +} \ No newline at end of file diff --git a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/EnterUrlScreen.kt b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/EnterUrlScreen.kt index 4355bc04..78724fe2 100644 --- a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/EnterUrlScreen.kt +++ b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/EnterUrlScreen.kt @@ -27,10 +27,14 @@ import io.github.wiiznokes.gitnote.ui.component.SetupPage private val sshGitRegex = Regex("""^(?:git@|ssh://git@)[\w.-]+:[\w./-]+(?:\.git)?$""") -private fun isUrlCorrect(url: String): Boolean { +fun isUrlSsh(url: String): Boolean { return sshGitRegex.matches(url) } +private fun isUrlCorrect(url: String): Boolean { + return url.isNotBlank() +} + @Composable fun EnterUrlWithProviderScreen( onBackClick: () -> Unit, @@ -130,7 +134,6 @@ private fun UrlTextField(url: MutableState) { Text(text = "git@github.com:wiiznokes/gitnote.git") }, singleLine = true, - isError = !isUrlCorrect(url.value.text), keyboardOptions = KeyboardOptions( keyboardType = KeyboardType.Uri ) diff --git a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/GenerateNewKeysScreen.kt b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/GenerateNewSshKeysScreen.kt similarity index 98% rename from app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/GenerateNewKeysScreen.kt rename to app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/GenerateNewSshKeysScreen.kt index 26fe5683..28b784ba 100644 --- a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/GenerateNewKeysScreen.kt +++ b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/GenerateNewSshKeysScreen.kt @@ -45,7 +45,7 @@ private fun extractUserRepo(url: String): String? { } @Composable -fun GenerateNewKeysScreen( +fun GenerateNewSshKeysScreen( onBackClick: () -> Unit, cloneState: InitState, provider: Provider?, @@ -184,8 +184,8 @@ fun GenerateNewKeysScreen( @Preview @Composable -private fun GenerateNewKeysScreenPreview() { - GenerateNewKeysScreen( +private fun GenerateNewSshKeysScreenPreview() { + GenerateNewSshKeysScreen( onBackClick = {}, cloneState = InitState.Idle, provider = GithubProvider(), diff --git a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/RemoteNav.kt b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/RemoteNav.kt index 0ccad738..8ec6ce60 100644 --- a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/RemoteNav.kt +++ b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/RemoteNav.kt @@ -122,7 +122,7 @@ fun RemoteScreen( onClone = { navController.navigate(RemoteDestination.Cloning) } ) - is SelectGenerateNewKeys -> SelectGenerateNewKeysScreen( + is SelectGenerateNewKeys -> SelectGenerateSshNewKeysScreen( onBackClick = { navController.pop() }, onGenerate = { navController.navigate( @@ -133,7 +133,7 @@ fun RemoteScreen( }, ) - is GenerateNewKeys -> GenerateNewKeysScreen( + is GenerateNewKeys -> GenerateNewSshKeysScreen( onBackClick = { navController.pop() }, cloneState = initState, provider = vm.provider, diff --git a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/SelectGenerateNewKeysScreen.kt b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/SelectGenerateSshNewKeysScreen.kt similarity index 91% rename from app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/SelectGenerateNewKeysScreen.kt rename to app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/SelectGenerateSshNewKeysScreen.kt index 447c7d45..62af1f23 100644 --- a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/SelectGenerateNewKeysScreen.kt +++ b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/SelectGenerateSshNewKeysScreen.kt @@ -13,7 +13,7 @@ import io.github.wiiznokes.gitnote.ui.component.SetupPage @Composable -fun SelectGenerateNewKeysScreen( +fun SelectGenerateSshNewKeysScreen( onBackClick: () -> Unit, onGenerate: () -> Unit, ) { @@ -43,8 +43,8 @@ fun SelectGenerateNewKeysScreen( @Preview @Composable -private fun SelectGenerateNewKeysScreenPreview() { - SelectGenerateNewKeysScreen( +private fun SelectGenerateSshNewKeysScreenPreview() { + SelectGenerateSshNewKeysScreen( onBackClick = {}, onGenerate = {} ) From 4264df8db77dfffd3862c4e2022a801c3f4c88ce Mon Sep 17 00:00:00 2001 From: wiiznokes <78230769+wiiznokes@users.noreply.github.com> Date: Thu, 6 Nov 2025 13:44:56 +0100 Subject: [PATCH 2/4] ipl --- .../ui/destination/RemoteDestination.kt | 7 +- .../screen/setup/remote/CredentialsScreen.kt | 147 +++++++++++++++++- .../ui/screen/setup/remote/RemoteNav.kt | 23 ++- ...n.kt => SelectGenerateNewSshKeysScreen.kt} | 6 +- 4 files changed, 169 insertions(+), 14 deletions(-) rename app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/{SelectGenerateSshNewKeysScreen.kt => SelectGenerateNewSshKeysScreen.kt} (91%) diff --git a/app/src/main/java/io/github/wiiznokes/gitnote/ui/destination/RemoteDestination.kt b/app/src/main/java/io/github/wiiznokes/gitnote/ui/destination/RemoteDestination.kt index 183028d1..a9c50a06 100644 --- a/app/src/main/java/io/github/wiiznokes/gitnote/ui/destination/RemoteDestination.kt +++ b/app/src/main/java/io/github/wiiznokes/gitnote/ui/destination/RemoteDestination.kt @@ -25,7 +25,7 @@ sealed interface RemoteDestination : Parcelable { data object PickRepo : RemoteDestination @Parcelize - data class SelectGenerateNewKeys( + data class SelectGenerateNewSshKeys( val url: String ) : RemoteDestination @@ -35,6 +35,11 @@ sealed interface RemoteDestination : Parcelable { val url: String, ) : RemoteDestination + @Parcelize + data class Credentials( + val url: String, + ) : RemoteDestination + @Parcelize data object Cloning : RemoteDestination // @Parcelize diff --git a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/CredentialsScreen.kt b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/CredentialsScreen.kt index 5b5a9399..2b439d62 100644 --- a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/CredentialsScreen.kt +++ b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/CredentialsScreen.kt @@ -1,15 +1,158 @@ package io.github.wiiznokes.gitnote.ui.screen.setup.remote +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.text.input.TextFieldValue +import androidx.compose.ui.tooling.preview.Preview +import io.github.wiiznokes.gitnote.R +import io.github.wiiznokes.gitnote.ui.component.AppPage +import io.github.wiiznokes.gitnote.ui.component.SetupButton +import io.github.wiiznokes.gitnote.ui.component.SetupLine +import io.github.wiiznokes.gitnote.ui.component.SetupPage +import io.github.wiiznokes.gitnote.ui.model.Cred +import io.github.wiiznokes.gitnote.ui.model.StorageConfiguration import io.github.wiiznokes.gitnote.ui.viewmodel.SetupViewModelI +import io.github.wiiznokes.gitnote.ui.viewmodel.SetupViewModelMock @Composable -fun EnterUrlWithProviderScreen( +fun CredentialsScreen( onBackClick: () -> Unit, vm: SetupViewModelI, + storageConfig: StorageConfiguration, + url: String, onClone: () -> Unit, onSuccess: () -> Unit, ) { - + + AppPage( + title = "Credentials", + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center, + onBackClick = onBackClick, + ) { + + SetupPage { + + val username = rememberSaveable(stateSaver = TextFieldValue.Saver) { + mutableStateOf(TextFieldValue()) + } + val password = rememberSaveable(stateSaver = TextFieldValue.Saver) { + mutableStateOf(TextFieldValue()) + } + + + val usernameFocusRequester = remember { FocusRequester() } + val passwordFocusRequester = remember { FocusRequester() } + + LaunchedEffect(null) { + usernameFocusRequester.requestFocus() + } + + SetupLine( + text = "Enter username" + ) { + + OutlinedTextField( + modifier = Modifier + .fillMaxSize() + .focusRequester(usernameFocusRequester), + value = username.value, + onValueChange = { + username.value = it + }, + label = { + Text(text = "Username") + }, + singleLine = true, + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Unspecified + ), + keyboardActions = KeyboardActions( + onDone = { + passwordFocusRequester.requestFocus() + } + ) + ) + } + + SetupLine( + text = "Enter password" + ) { + + OutlinedTextField( + modifier = Modifier + .fillMaxSize() + .focusRequester(passwordFocusRequester), + value = password.value, + onValueChange = { + password.value = it + }, + label = { + Text(text = "Password") + }, + singleLine = true, + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Password + ) + ) + + + } + + SetupLine( + text = stringResource(R.string.try_cloning) + ) { + + SetupButton( + text = stringResource(R.string.clone_repo), + onClick = { + vm.cloneRepo( + storageConfig = storageConfig, + remoteUrl = url, + cred = Cred.UserPassPlainText( + username = username.value.text, + password = password.value.text, + ), + onSuccess = onSuccess + ) + + onClone() + }, + enabled = username.value.text.isNotEmpty() && password.value.text.isNotEmpty() + ) + } + } + + } +} + + +@Preview +@Composable +private fun CredentialsScreenPreview() { + CredentialsScreen( + onBackClick = {}, + storageConfig = StorageConfiguration.App, + url = "url", + vm = SetupViewModelMock(), + onSuccess = {}, + onClone = {} + ) + } \ No newline at end of file diff --git a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/RemoteNav.kt b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/RemoteNav.kt index 8ec6ce60..79200eb7 100644 --- a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/RemoteNav.kt +++ b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/RemoteNav.kt @@ -19,7 +19,7 @@ import io.github.wiiznokes.gitnote.ui.destination.RemoteDestination.AuthorizeGit import io.github.wiiznokes.gitnote.ui.destination.RemoteDestination.EnterUrl import io.github.wiiznokes.gitnote.ui.destination.RemoteDestination.GenerateNewKeys import io.github.wiiznokes.gitnote.ui.destination.RemoteDestination.PickRepo -import io.github.wiiznokes.gitnote.ui.destination.RemoteDestination.SelectGenerateNewKeys +import io.github.wiiznokes.gitnote.ui.destination.RemoteDestination.SelectGenerateNewSshKeys import io.github.wiiznokes.gitnote.ui.destination.RemoteDestination.SelectProvider import io.github.wiiznokes.gitnote.ui.destination.RemoteDestination.SelectSetupAutomatically import io.github.wiiznokes.gitnote.ui.model.StorageConfiguration @@ -93,18 +93,16 @@ fun RemoteScreen( onBackClick = { navController.pop() }, provider = vm.provider!!, onUrl = { url -> - navController.navigate( - SelectGenerateNewKeys(url = url) - ) + if (isUrlSsh(url)) navController.navigate(SelectGenerateNewSshKeys(url = url)) + else navController.navigate(RemoteDestination.Credentials(url = url)) } ) } else { EnterUrlScreen( onBackClick = { navController.pop() }, onUrl = { url -> - navController.navigate( - SelectGenerateNewKeys(url = url) - ) + if (isUrlSsh(url)) navController.navigate(SelectGenerateNewSshKeys(url = url)) + else navController.navigate(RemoteDestination.Credentials(url = url)) } ) } @@ -122,7 +120,7 @@ fun RemoteScreen( onClone = { navController.navigate(RemoteDestination.Cloning) } ) - is SelectGenerateNewKeys -> SelectGenerateSshNewKeysScreen( + is SelectGenerateNewSshKeys -> SelectGenerateNewSshKeysScreen( onBackClick = { navController.pop() }, onGenerate = { navController.navigate( @@ -145,6 +143,15 @@ fun RemoteScreen( onClone = { navController.navigate(RemoteDestination.Cloning) } ) + is RemoteDestination.Credentials -> CredentialsScreen( + onBackClick = { navController.pop() }, + storageConfig = storageConfig, + url = remoteDestination.url, + vm = vm, + onSuccess = onInitSuccess, + onClone = { navController.navigate(RemoteDestination.Cloning) } + ) + RemoteDestination.Cloning -> CloningScreen( cloneState = initState, onCancel = { diff --git a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/SelectGenerateSshNewKeysScreen.kt b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/SelectGenerateNewSshKeysScreen.kt similarity index 91% rename from app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/SelectGenerateSshNewKeysScreen.kt rename to app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/SelectGenerateNewSshKeysScreen.kt index 62af1f23..dca291e7 100644 --- a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/SelectGenerateSshNewKeysScreen.kt +++ b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/SelectGenerateNewSshKeysScreen.kt @@ -13,7 +13,7 @@ import io.github.wiiznokes.gitnote.ui.component.SetupPage @Composable -fun SelectGenerateSshNewKeysScreen( +fun SelectGenerateNewSshKeysScreen( onBackClick: () -> Unit, onGenerate: () -> Unit, ) { @@ -43,8 +43,8 @@ fun SelectGenerateSshNewKeysScreen( @Preview @Composable -private fun SelectGenerateSshNewKeysScreenPreview() { - SelectGenerateSshNewKeysScreen( +private fun SelectGenerateNewSshKeysScreenPreview() { + SelectGenerateNewSshKeysScreen( onBackClick = {}, onGenerate = {} ) From b5195043276e1197c09b2b502d3e84a43ae7d971 Mon Sep 17 00:00:00 2001 From: wiiznokes <78230769+wiiznokes@users.noreply.github.com> Date: Thu, 6 Nov 2025 13:48:37 +0100 Subject: [PATCH 3/4] ff --- app/src/main/res/values-cs/strings.xml | 2 +- app/src/main/res/values-fr/strings.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 0492d75e..0afb04e2 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -115,7 +115,7 @@ Deaktivovat režim jen pro čtení Autorizovat Gitnote Klonovat URL - Přejděte na webovou stránku, vytvořte repozitář a zkopírujte adresu URL klonu git. Zvolte metodu SSH + Přejděte na webovou stránku, vytvořte repozitář a zkopírujte adresu URL klonu git Zadejte adresu URL klonu Git Vytvořit repozitář Další diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index aedf020a..b8b6c19f 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -127,7 +127,7 @@ Desactiver la lecture seule Autoriser Gitnote Clone URL - "Allez sur la page Web, créez un référentiel et copiez son URL. Choisissez celui avec SSH " + "Allez sur la page Web, créez un référentiel et copiez son URL" Entrez l\'URL de clonage Créer le référentiel Suivant diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7c6014ac..51e740c6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -120,7 +120,7 @@ Deactivate read only mode Authorize Gitnote Clone URL - Go to the website, create a repository and copy its git clone URL. Choose the SSH method + Go to the website, create a repository and copy its git clone URL Enter the Git clone URL Create repository Next From a40acf5c30ad3a67d422225fe27e82de3d4e747b Mon Sep 17 00:00:00 2001 From: wiiznokes <78230769+wiiznokes@users.noreply.github.com> Date: Thu, 6 Nov 2025 14:16:56 +0100 Subject: [PATCH 4/4] add explanation --- .../screen/setup/remote/CredentialsScreen.kt | 21 +++++++++++++++++++ .../ui/screen/setup/remote/RemoteNav.kt | 1 + 2 files changed, 22 insertions(+) diff --git a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/CredentialsScreen.kt b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/CredentialsScreen.kt index 2b439d62..9e4d6ac2 100644 --- a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/CredentialsScreen.kt +++ b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/CredentialsScreen.kt @@ -15,11 +15,14 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester +import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.tooling.preview.Preview import io.github.wiiznokes.gitnote.R +import io.github.wiiznokes.gitnote.provider.GithubProvider +import io.github.wiiznokes.gitnote.provider.Provider import io.github.wiiznokes.gitnote.ui.component.AppPage import io.github.wiiznokes.gitnote.ui.component.SetupButton import io.github.wiiznokes.gitnote.ui.component.SetupLine @@ -35,6 +38,7 @@ fun CredentialsScreen( onBackClick: () -> Unit, vm: SetupViewModelI, storageConfig: StorageConfiguration, + provider: Provider?, url: String, onClone: () -> Unit, onSuccess: () -> Unit, @@ -47,8 +51,24 @@ fun CredentialsScreen( onBackClick = onBackClick, ) { + SetupPage { + if (provider is GithubProvider) { + + SetupLine( + text = "Create a new access token to allow this app to access your repository. Be sure to grant the “Contents” permission with read and write access." + ) { + val uriHandler = LocalUriHandler.current + + SetupButton( + text = "1. " + "Create a token", + onClick = { uriHandler.openUri("https://github.com/settings/personal-access-tokens/new") }, + link = true + ) + } + } + val username = rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } @@ -150,6 +170,7 @@ private fun CredentialsScreenPreview() { onBackClick = {}, storageConfig = StorageConfiguration.App, url = "url", + provider = GithubProvider(), vm = SetupViewModelMock(), onSuccess = {}, onClone = {} diff --git a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/RemoteNav.kt b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/RemoteNav.kt index 79200eb7..64d1e852 100644 --- a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/RemoteNav.kt +++ b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/RemoteNav.kt @@ -147,6 +147,7 @@ fun RemoteScreen( onBackClick = { navController.pop() }, storageConfig = storageConfig, url = remoteDestination.url, + provider = vm.provider, vm = vm, onSuccess = onInitSuccess, onClone = { navController.navigate(RemoteDestination.Cloning) }