From eeadfc04f4560a0a6d3ee23f43160ae743b96757 Mon Sep 17 00:00:00 2001 From: greenart7c3 Date: Fri, 11 Apr 2025 10:57:31 -0300 Subject: [PATCH] Show the option to never close the app when using bunker --- .../greenart7c3/nostrsigner/ui/MainScreen.kt | 6 +++- .../ui/components/LoginWithPubKey.kt | 32 +++++++++++++++++-- .../ui/components/SingleEventHomeScreen.kt | 4 ++- 3 files changed, 37 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/MainScreen.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/MainScreen.kt index fb8b9789..ce35de62 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/MainScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/MainScreen.kt @@ -139,6 +139,7 @@ fun sendResult( appName: String? = null, signPolicy: Int? = null, onRemoveIntentData: (List, IntentResultType) -> Unit, + shouldCloseApplication: Boolean? = null, ) { onLoading(true) NostrSigner.instance.applicationIOScope.launch { @@ -193,7 +194,7 @@ fun sendResult( intentData.bunkerRequest?.secret ?: "", intentData.bunkerRequest?.secret != null, account.signPolicy, - intentData.bunkerRequest?.closeApplication ?: true, + shouldCloseApplication ?: intentData.bunkerRequest?.closeApplication ?: true, ), permissions = mutableListOf(), ) @@ -258,6 +259,9 @@ fun sendResult( } if ((intentData.bunkerRequest == null && intentData.type == SignerType.GET_PUBLIC_KEY) || (intentData.bunkerRequest != null && intentData.type == SignerType.CONNECT)) { application.application.isConnected = true + shouldCloseApplication?.let { + application.application.closeApplication = it + } if (!application.permissions.any { it.type == SignerType.GET_PUBLIC_KEY.toString() }) { application.permissions.add( ApplicationPermissionsEntity( diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/LoginWithPubKey.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/LoginWithPubKey.kt index 5d1b7dde..ebd97139 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/LoginWithPubKey.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/LoginWithPubKey.kt @@ -29,6 +29,7 @@ import androidx.compose.material3.Checkbox import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.RadioButton +import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo import androidx.compose.runtime.Composable @@ -122,6 +123,7 @@ fun ProfilePicture(account: Account) { @Composable fun LoginWithPubKey( + shouldCloseApp: Boolean, paddingValues: PaddingValues, remember: MutableState, isBunkerRequest: Boolean, @@ -130,7 +132,7 @@ fun LoginWithPubKey( appName: String, applicationName: String?, permissions: List?, - onAccept: (List?, Int) -> Unit, + onAccept: (List?, Int, Boolean?) -> Unit, onReject: () -> Unit, ) { val localPermissions = remember { @@ -201,7 +203,7 @@ fun LoginWithPubKey( AmberButton( modifier = Modifier.padding(vertical = 20.dp), onClick = { - onAccept(localPermissions, 1) + onAccept(localPermissions, 1, null) }, text = stringResource(R.string.grant_permissions), ) @@ -272,6 +274,30 @@ fun LoginWithPubKey( Spacer(modifier = Modifier.size(8.dp)) + var closeApp by remember { mutableStateOf(shouldCloseApp) } + if (packageName == null) { + Row( + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier + .padding(vertical = 8.dp) + .clickable { + closeApp = !closeApp + }, + ) { + Text( + modifier = Modifier.weight(1f), + text = stringResource(R.string.close_application), + ) + Switch( + checked = closeApp, + onCheckedChange = { + closeApp = it + }, + ) + } + } + radioOptions.forEachIndexed { index, option -> Row( Modifier @@ -379,7 +405,7 @@ fun LoginWithPubKey( AmberButton( modifier = Modifier.padding(vertical = 20.dp), onClick = { - onAccept(localPermissions, selectedOption) + onAccept(localPermissions, selectedOption, closeApp) }, text = stringResource(R.string.grant_permissions), ) diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/SingleEventHomeScreen.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/SingleEventHomeScreen.kt index 28fe2c3a..dfe10230 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/SingleEventHomeScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/SingleEventHomeScreen.kt @@ -96,6 +96,7 @@ fun SingleEventHomeScreen( } LoginWithPubKey( + applicationEntity?.application?.closeApplication ?: intentData.bunkerRequest?.closeApplication ?: false, paddingValues, remember, intentData.bunkerRequest != null && intentData.type == SignerType.GET_PUBLIC_KEY, @@ -104,7 +105,7 @@ fun SingleEventHomeScreen( appName, applicationName, intentData.permissions, - { permissions, signPolicy -> + { permissions, signPolicy, closeApplication -> val sig = if (intentData.type == SignerType.CONNECT) { intentData.bunkerRequest!!.nostrConnectSecret.ifBlank { "ack" } @@ -132,6 +133,7 @@ fun SingleEventHomeScreen( onLoading = onLoading, signPolicy = signPolicy, onRemoveIntentData = onRemoveIntentData, + shouldCloseApplication = closeApplication, ) return@LoginWithPubKey