From 953b310e8308190389fcde9cccf4d0de3d4bbed2 Mon Sep 17 00:00:00 2001 From: greenart7c3 Date: Mon, 3 Feb 2025 08:39:37 -0300 Subject: [PATCH] refactor check for logged in account --- .../greenart7c3/nostrsigner/MainActivity.kt | 4 +- .../greenart7c3/nostrsigner/MainViewModel.kt | 41 +++++++++++++++++-- .../nostrsigner/ui/AccountScreen.kt | 15 ------- 3 files changed, 40 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/MainActivity.kt b/app/src/main/java/com/greenart7c3/nostrsigner/MainActivity.kt index d7e923e3..18caf94e 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/MainActivity.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/MainActivity.kt @@ -206,7 +206,7 @@ class MainActivity : AppCompatActivity() { CircularProgressIndicator() } } else { - val npub = intent.getStringExtra("current_user")?.ifBlank { mainViewModel.getAccount() } ?: mainViewModel.getAccount() + val npub = mainViewModel.getAccount(intent.getStringExtra("current_user")) val accountStateViewModel: AccountStateViewModel = viewModel { @@ -218,11 +218,13 @@ class MainActivity : AppCompatActivity() { val currentAccount = LocalPreferences.currentAccount(context) if (currentAccount != null && npub != null && currentAccount != npub && npub.isNotBlank()) { if (npub.startsWith("npub")) { + Log.d("Account", "Switching account to $npub") if (LocalPreferences.containsAccount(context, npub)) { accountStateViewModel.switchUser(npub, Route.IncomingRequest.route) } } else { val localNpub = Hex.decode(npub).toNpub() + Log.d("Account", "Switching account to $localNpub") if (LocalPreferences.containsAccount(context, localNpub)) { accountStateViewModel.switchUser(localNpub, Route.IncomingRequest.route) } diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/MainViewModel.kt b/app/src/main/java/com/greenart7c3/nostrsigner/MainViewModel.kt index 7d73c105..8fa7454e 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/MainViewModel.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/MainViewModel.kt @@ -24,14 +24,47 @@ class MainViewModel(val context: Context) : ViewModel() { val intents = MutableStateFlow>(listOf()) var navController: NavHostController? = null - fun getAccount(): String? { + fun getAccount(userFromIntent: String?): String? { + val currentAccount = LocalPreferences.currentAccount(context) + if (userFromIntent != null) { + if (userFromIntent.startsWith("npub")) { + if (LocalPreferences.containsAccount(context, userFromIntent)) { + Log.d("MainViewModel", "getAccount: $userFromIntent") + return userFromIntent + } + } else { + val localNpub = Hex.decode(userFromIntent).toNpub() + if (LocalPreferences.containsAccount(context, localNpub)) { + Log.d("MainViewModel", "getAccount: $localNpub") + return localNpub + } + } + } + val pubKeys = intents.value.mapNotNull { - it.event?.pubKey + it.event?.pubKey ?: it.bunkerRequest?.currentAccount + }.filter { it.isNotBlank() } + + if (pubKeys.isEmpty()) { + if (currentAccount != null && LocalPreferences.containsAccount(context, currentAccount)) { + Log.d("MainViewModel", "getAccount: $currentAccount") + return currentAccount } - if (pubKeys.isEmpty()) return null - return Hex.decode(pubKeys.first()).toNpub() + val acc = LocalPreferences.allSavedAccounts(context).firstOrNull() + if (acc != null) { + Log.d("MainViewModel", "getAccount: ${acc.npub}") + return acc.npub + } else { + Log.d("MainViewModel", "getAccount: null") + return null + } + } + + val npub = Hex.decode(pubKeys.first()).toNpub() + Log.d("MainViewModel", "getAccount: $npub") + return npub } fun showBunkerRequests(callingPackage: 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 d3ac1391..e49c8c08 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/AccountScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/AccountScreen.kt @@ -38,7 +38,6 @@ import androidx.navigation.NavHostController import androidx.navigation.compose.rememberNavController import com.anggrayudi.storage.SimpleStorageHelper import com.greenart7c3.nostrsigner.BuildConfig -import com.greenart7c3.nostrsigner.LocalPreferences import com.greenart7c3.nostrsigner.NostrSigner import com.greenart7c3.nostrsigner.R import com.greenart7c3.nostrsigner.models.IntentData @@ -89,20 +88,6 @@ fun AccountScreen( } } } - val data = - intents.firstOrNull { - it.currentAccount.isNotBlank() - } - - data?.bunkerRequest?.let { - if (it.currentAccount.isNotBlank()) { - if (LocalPreferences.currentAccount(context) != it.currentAccount) { - if (LocalPreferences.containsAccount(context, it.currentAccount)) { - accountStateViewModel.switchUser(it.currentAccount, null) - } - } - } - } } val database = NostrSigner.getInstance().getDatabase(state.account.signer.keyPair.pubKey.toNpub())