refactor check for logged in account

This commit is contained in:
greenart7c3
2025-02-03 08:39:37 -03:00
parent edd4667dbd
commit 953b310e83
3 changed files with 40 additions and 20 deletions
@@ -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)
}
@@ -24,14 +24,47 @@ class MainViewModel(val context: Context) : ViewModel() {
val intents = MutableStateFlow<List<IntentData>>(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?) {
@@ -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())