From bd26355e8d9c10027701e75f92c38604c820cb71 Mon Sep 17 00:00:00 2001 From: greenart7c3 Date: Fri, 4 Aug 2023 20:23:02 -0300 Subject: [PATCH] fix for not showing id and pubkey --- .../greenart7c3/nostrsigner/MainActivity.kt | 19 +------------ .../nostrsigner/models/IntentData.kt | 4 ++- .../nostrsigner/ui/AccountScreen.kt | 27 +++++++++++++++++-- .../greenart7c3/nostrsigner/ui/MainScreen.kt | 21 ++++----------- 4 files changed, 34 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/MainActivity.kt b/app/src/main/java/com/greenart7c3/nostrsigner/MainActivity.kt index 891d41ab..c559d8b5 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/MainActivity.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/MainActivity.kt @@ -8,32 +8,15 @@ import androidx.compose.material.MaterialTheme import androidx.compose.material.Surface import androidx.compose.ui.Modifier import androidx.lifecycle.viewmodel.compose.viewModel -import com.greenart7c3.nostrsigner.models.IntentData import com.greenart7c3.nostrsigner.ui.AccountScreen import com.greenart7c3.nostrsigner.ui.AccountStateViewModel import com.greenart7c3.nostrsigner.ui.theme.NostrSignerTheme -import java.net.URLDecoder class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { - var event: IntentData? = null - if (intent.data != null) { - var data = URLDecoder.decode(intent?.data?.toString()?.replace("+", "%2b") ?: "", "utf-8") - val split = data.split(";") - var name = "" - if (split.isNotEmpty()) { - if (split.last().lowercase().contains("name=")) { - name = split.last().replace("name=", "") - val newList = split.toList().dropLast(1) - data = newList.joinToString("") - } - } - event = IntentData(data, name) - } - NostrSignerTheme { Surface( modifier = Modifier.fillMaxSize(), @@ -42,7 +25,7 @@ class MainActivity : AppCompatActivity() { val accountStateViewModel: AccountStateViewModel = viewModel { AccountStateViewModel() } - AccountScreen(accountStateViewModel, event) + AccountScreen(accountStateViewModel, intent) } } } diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/models/IntentData.kt b/app/src/main/java/com/greenart7c3/nostrsigner/models/IntentData.kt index a9b104f0..1480c1f6 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/models/IntentData.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/models/IntentData.kt @@ -1,6 +1,8 @@ package com.greenart7c3.nostrsigner.models +import com.greenart7c3.nostrsigner.service.model.Event + class IntentData( - val data: String, + val data: Event, val name: String ) 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 808f29dd..fc37fa14 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/AccountScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/AccountScreen.kt @@ -1,5 +1,6 @@ package com.greenart7c3.nostrsigner.ui +import android.content.Intent import androidx.compose.animation.Crossfade import androidx.compose.animation.core.tween import androidx.compose.foundation.layout.Column @@ -7,11 +8,14 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import com.greenart7c3.nostrsigner.models.IntentData +import com.greenart7c3.nostrsigner.models.toHexKey +import com.greenart7c3.nostrsigner.service.model.Event +import java.net.URLDecoder @Composable fun AccountScreen( accountStateViewModel: AccountStateViewModel, - event: IntentData? + intent: Intent ) { val accountState by accountStateViewModel.accountContent.collectAsState() @@ -25,7 +29,26 @@ fun AccountScreen( LoginPage(accountStateViewModel) } is AccountState.LoggedIn -> { - MainScreen(state.account, accountStateViewModel, event) + var intentData: IntentData? = null + if (intent.data != null) { + var data = URLDecoder.decode(intent.data?.toString()?.replace("+", "%2b") ?: "", "utf-8").replace("nostrsigner:", "") + val split = data.split(";") + var name = "" + if (split.isNotEmpty()) { + if (split.last().lowercase().contains("name=")) { + name = split.last().replace("name=", "") + val newList = split.toList().dropLast(1) + data = newList.joinToString("") + } + } + var event = Event.fromJson(data) + if (event.pubKey.isEmpty()) { + event = Event.setPubKeyIfEmpty(event, state.account.keyPair.pubKey.toHexKey()) + } + intentData = IntentData(event, name) + } + + MainScreen(state.account, accountStateViewModel, 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 7bbc7912..87a4accd 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/MainScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/MainScreen.kt @@ -68,10 +68,6 @@ import org.json.JSONObject @SuppressLint("UnusedMaterialScaffoldPaddingParameter") @Composable fun MainScreen(account: Account, accountStateViewModel: AccountStateViewModel, json: IntentData?) { - val event = remember { - mutableStateOf(null) - } - val scaffoldState = rememberScaffoldState(rememberDrawerState(DrawerValue.Closed)) val coroutineScope = rememberCoroutineScope() val context = LocalContext.current @@ -104,21 +100,14 @@ fun MainScreen(account: Account, accountStateViewModel: AccountStateViewModel, j } } else { json.let { - val data = it.data.replace("nostrsigner:", "") - event.value = Event.fromJson(data) + val event = it.data EventData( it.name, - event.value!!, - data, + event, + event.toJson(), { - if (event.value == null) { - return@EventData - } - - val localEvent = Event.setPubKeyIfEmpty(event.value!!, account.keyPair.pubKey.toHexKey()) - - if (localEvent.pubKey != account.keyPair.pubKey.toHexKey()) { + if (event.pubKey != account.keyPair.pubKey.toHexKey()) { coroutineScope.launch { Toast.makeText( context, @@ -129,7 +118,7 @@ fun MainScreen(account: Account, accountStateViewModel: AccountStateViewModel, j return@EventData } - val id = localEvent.id.hexToByteArray() + val id = event.id.hexToByteArray() val sig = CryptoUtils.sign(id, account.keyPair.privKey!!).toHexKey() clipboardManager.setText(AnnotatedString(sig))