From 1834931471f5109f07c427b3a5549716d6d2c4a4 Mon Sep 17 00:00:00 2001 From: greenart7c3 Date: Wed, 6 Dec 2023 06:51:24 -0300 Subject: [PATCH] fix decryption for web apps --- .../com/greenart7c3/nostrsigner/MainActivity.kt | 2 +- .../nostrsigner/service/IntentUtils.kt | 11 +++++------ .../greenart7c3/nostrsigner/ui/AccountScreen.kt | 2 +- .../com/greenart7c3/nostrsigner/ui/MainScreen.kt | 16 +++++++++++----- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/MainActivity.kt b/app/src/main/java/com/greenart7c3/nostrsigner/MainActivity.kt index 3ad891de..1f11f1e6 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/MainActivity.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/MainActivity.kt @@ -60,7 +60,7 @@ class MainActivity : AppCompatActivity() { super.onNewIntent(intent) if (intent == null) return - val intentData = IntentUtils.getIntentData(intent) ?: return + val intentData = IntentUtils.getIntentData(intent, callingPackage) ?: return val list = mutableListOf(intentData) if (mainViewModel.intents.value == null) { mainViewModel.intents.value = mutableListOf() diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/service/IntentUtils.kt b/app/src/main/java/com/greenart7c3/nostrsigner/service/IntentUtils.kt index 97cc971a..093d371f 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/service/IntentUtils.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/service/IntentUtils.kt @@ -17,7 +17,7 @@ import com.vitorpamplona.quartz.events.Event import java.net.URLDecoder object IntentUtils { - fun getIntentData(intent: Intent): IntentData? { + fun getIntentData(intent: Intent, packageName: String?): IntentData? { if (intent.data != null) { val type = when (intent.extras?.getString("type")) { "sign_event" -> SignerType.SIGN_EVENT @@ -31,11 +31,10 @@ object IntentUtils { } val data = try { - when (type) { - SignerType.NIP44_ENCRYPT, SignerType.NIP04_DECRYPT, SignerType.NIP44_DECRYPT, SignerType.NIP04_ENCRYPT -> { - intent.data?.toString()?.replace("nostrsigner:", "") ?: "" - } - else -> URLDecoder.decode(intent.data?.toString()?.replace("+", "%2b") ?: "", "utf-8").replace("nostrsigner:", "") + if (packageName == null) { + URLDecoder.decode(intent.data?.toString()?.replace("+", "%2b") ?: "", "utf-8").replace("nostrsigner:", "") + } else { + intent.data?.toString()?.replace("nostrsigner:", "") ?: "" } } catch (e: Exception) { intent.data?.toString()?.replace("nostrsigner:", "") ?: "" diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/AccountScreen.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/AccountScreen.kt index 550adfa3..10d45ca5 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/AccountScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/AccountScreen.kt @@ -33,7 +33,7 @@ fun AccountScreen( LoginPage(accountStateViewModel) } is AccountState.LoggedIn -> { - val intentData = IntentUtils.getIntentData(intent) + val intentData = IntentUtils.getIntentData(intent, packageName) if (intentData != null) { if (intents.none { item -> item.id == intentData.id }) { intents.add(intentData) 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 662ff7dd..66402397 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/MainScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/MainScreen.kt @@ -68,11 +68,15 @@ import com.greenart7c3.nostrsigner.ui.actions.AccountsBottomSheet import com.greenart7c3.nostrsigner.ui.navigation.Route import com.greenart7c3.nostrsigner.ui.theme.ButtonBorder import com.vitorpamplona.quartz.encoders.toNpub +import kotlinx.coroutines.DelicateCoroutinesApi +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import java.io.ByteArrayOutputStream import java.util.Base64 import java.util.zip.GZIPOutputStream +@OptIn(DelicateCoroutinesApi::class) fun sendResult( context: Context, packageName: String?, @@ -155,11 +159,13 @@ fun sendResult( clipboardManager.setText(AnnotatedString(result)) - Toast.makeText( - context, - message, - Toast.LENGTH_SHORT - ).show() + GlobalScope.launch(Dispatchers.Main) { + Toast.makeText( + context, + message, + Toast.LENGTH_SHORT + ).show() + } } activity?.finish() }