diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/MainViewModel.kt b/app/src/main/java/com/greenart7c3/nostrsigner/MainViewModel.kt index 8fa7454e..2febd7cf 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/MainViewModel.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/MainViewModel.kt @@ -26,27 +26,48 @@ class MainViewModel(val context: Context) : ViewModel() { 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 + try { + if (!userFromIntent.isNullOrBlank()) { + 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.bunkerRequest?.currentAccount - }.filter { it.isNotBlank() } + val pubKeys = + intents.value.mapNotNull { + it.event?.pubKey ?: it.bunkerRequest?.currentAccount + }.filter { it.isNotBlank() } - if (pubKeys.isEmpty()) { + if (pubKeys.isEmpty()) { + if (currentAccount != null && LocalPreferences.containsAccount(context, currentAccount)) { + Log.d("MainViewModel", "getAccount: $currentAccount") + return currentAccount + } + + 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 + } catch (e: Exception) { + Log.e("MainViewModel", "Error getting account", e) if (currentAccount != null && LocalPreferences.containsAccount(context, currentAccount)) { Log.d("MainViewModel", "getAccount: $currentAccount") return currentAccount @@ -61,10 +82,6 @@ class MainViewModel(val context: Context) : ViewModel() { return null } } - - val npub = Hex.decode(pubKeys.first()).toNpub() - Log.d("MainViewModel", "getAccount: $npub") - return npub } fun showBunkerRequests(callingPackage: String?) {