diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/Amber.kt b/app/src/main/java/com/greenart7c3/nostrsigner/Amber.kt index 87aa80eb..e0df37c0 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/Amber.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/Amber.kt @@ -33,6 +33,7 @@ import com.greenart7c3.nostrsigner.service.NotificationSubscription import com.greenart7c3.nostrsigner.service.ProfileSubscription import com.greenart7c3.nostrsigner.service.crashreports.CrashReportCache import com.greenart7c3.nostrsigner.service.crashreports.UnexpectedCrashSaver +import com.greenart7c3.nostrsigner.ui.ToastManager import com.vitorpamplona.quartz.nip01Core.hints.EventHintBundle import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.accessories.sendAndWaitForResponse @@ -134,9 +135,9 @@ class Amber : return true } catch (e: Exception) { if (e.message?.contains("EACCES (Permission denied)") == true) { - AmberListenerSingleton.accountStateViewModel?.toast(getString(R.string.warning), getString(R.string.network_permission_message)) + ToastManager.toast(getString(R.string.warning), getString(R.string.network_permission_message)) } else if (e.message?.contains("socket failed: EPERM (Operation not permitted)") == true) { - AmberListenerSingleton.accountStateViewModel?.toast(getString(R.string.warning), getString(R.string.network_permission_message)) + ToastManager.toast(getString(R.string.warning), getString(R.string.network_permission_message)) } Log.e(TAG, "Failed to connect to proxy", e) return false diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/relays/NostrClientLoggerListener.kt b/app/src/main/java/com/greenart7c3/nostrsigner/relays/NostrClientLoggerListener.kt index 21e6b358..a515b394 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/relays/NostrClientLoggerListener.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/relays/NostrClientLoggerListener.kt @@ -7,7 +7,7 @@ import com.greenart7c3.nostrsigner.Amber import com.greenart7c3.nostrsigner.LocalPreferences import com.greenart7c3.nostrsigner.database.LogEntity import com.greenart7c3.nostrsigner.service.NotificationUtils.sendErrorNotification -import com.greenart7c3.nostrsigner.ui.AccountStateViewModel +import com.greenart7c3.nostrsigner.ui.ToastManager import com.vitorpamplona.quartz.nip01Core.relay.client.listeners.IRelayClientListener import com.vitorpamplona.quartz.nip01Core.relay.client.single.IRelayClient import com.vitorpamplona.quartz.nip01Core.relay.commands.toClient.Message @@ -16,16 +16,14 @@ import com.vitorpamplona.quartz.nip01Core.relay.commands.toRelay.Command import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch -@SuppressLint("StaticFieldLeak") object AmberListenerSingleton { - var accountStateViewModel: AccountStateViewModel? = null val latestErrorMessages = mutableListOf() fun showErrorMessage() { if (latestErrorMessages.isEmpty()) return if (latestErrorMessages.last().isBlank()) return if (Amber.isAppInForeground) { - accountStateViewModel?.toast("Error", latestErrorMessages.last()) + ToastManager.toast("Error", latestErrorMessages.last()) } else { val notificationManager: NotificationManager = Amber.instance.applicationContext.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/service/BunkerRequestUtils.kt b/app/src/main/java/com/greenart7c3/nostrsigner/service/BunkerRequestUtils.kt index 0eab2264..ca792f06 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/service/BunkerRequestUtils.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/service/BunkerRequestUtils.kt @@ -17,6 +17,7 @@ import com.greenart7c3.nostrsigner.models.SignerType import com.greenart7c3.nostrsigner.relays.AmberListenerSingleton import com.greenart7c3.nostrsigner.service.model.AmberEvent import com.greenart7c3.nostrsigner.ui.RememberType +import com.greenart7c3.nostrsigner.ui.ToastManager import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.jackson.JacksonMapper import com.vitorpamplona.quartz.nip01Core.relay.client.accessories.sendAndWaitForResponse @@ -77,7 +78,7 @@ object BunkerRequestUtils { if (Amber.instance.settings.useProxy) { val isProxyWorking = Amber.instance.isSocksProxyAlive("127.0.0.1", Amber.instance.settings.proxyPort) if (!isProxyWorking) { - AmberListenerSingleton.accountStateViewModel?.toast(context.getString(R.string.warning), context.getString(R.string.failed_to_connect_to_tor_orbot)) + ToastManager.toast(context.getString(R.string.warning), context.getString(R.string.failed_to_connect_to_tor_orbot)) onDone(false) onLoading(false) return 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 7d219850..c6bbd799 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/AccountScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/AccountScreen.kt @@ -36,7 +36,6 @@ import com.greenart7c3.nostrsigner.MainViewModel import com.greenart7c3.nostrsigner.R import com.greenart7c3.nostrsigner.models.AmberBunkerRequest import com.greenart7c3.nostrsigner.models.IntentResultType -import com.greenart7c3.nostrsigner.relays.AmberListenerSingleton import com.greenart7c3.nostrsigner.service.IntentUtils import com.greenart7c3.nostrsigner.ui.navigation.Route @@ -89,9 +88,7 @@ fun AccountScreen( } ?: state.route, ) - AmberListenerSingleton.accountStateViewModel = accountStateViewModel - - DisplayErrorMessages(accountStateViewModel) + DisplayErrorMessages() MainScreen( account = state.account, accountStateViewModel = accountStateViewModel, @@ -121,8 +118,8 @@ fun AccountScreen( } @Composable -private fun DisplayErrorMessages(accountViewModel: AccountStateViewModel) { - val openDialogMsg = accountViewModel.toasts.collectAsState(null) +private fun DisplayErrorMessages() { + val openDialogMsg = ToastManager.toasts.collectAsState(null) openDialogMsg.value?.let { obj -> when (obj) { @@ -134,7 +131,7 @@ private fun DisplayErrorMessages(accountViewModel: AccountStateViewModel) { title, content, ) { - accountViewModel.clearToasts() + ToastManager.clearToasts() } } else { val title = stringResource(obj.titleResId) @@ -143,7 +140,7 @@ private fun DisplayErrorMessages(accountViewModel: AccountStateViewModel) { title, content, ) { - accountViewModel.clearToasts() + ToastManager.clearToasts() } } @@ -152,7 +149,7 @@ private fun DisplayErrorMessages(accountViewModel: AccountStateViewModel) { obj.title, obj.msg, ) { - accountViewModel.clearToasts() + ToastManager.clearToasts() } is ConfirmationToastMsg -> InformationDialog( @@ -160,7 +157,7 @@ private fun DisplayErrorMessages(accountViewModel: AccountStateViewModel) { obj.msg, ) { obj.onOk() - accountViewModel.clearToasts() + ToastManager.clearToasts() } is AcceptRejectToastMsg -> InformationDialog( @@ -168,11 +165,11 @@ private fun DisplayErrorMessages(accountViewModel: AccountStateViewModel) { obj.msg, onAccept = { obj.onAccept() - accountViewModel.clearToasts() + ToastManager.clearToasts() }, onReject = { obj.onReject() - accountViewModel.clearToasts() + ToastManager.clearToasts() }, ) } diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/AccountStateViewModel.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/AccountStateViewModel.kt index b4caa7c2..67ab6d6a 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/AccountStateViewModel.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/AccountStateViewModel.kt @@ -1,10 +1,8 @@ package com.greenart7c3.nostrsigner.ui import android.util.Log -import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.greenart7c3.nostrsigner.Amber import com.greenart7c3.nostrsigner.LocalPreferences import com.greenart7c3.nostrsigner.models.Account @@ -18,71 +16,21 @@ import com.vitorpamplona.quartz.nip49PrivKeyEnc.Nip49 import com.vitorpamplona.quartz.utils.Hex import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job -import kotlinx.coroutines.channels.BufferOverflow -import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch -@Immutable -open class ToastMsg - -@Immutable -class StringToastMsg(val title: String, val msg: String) : ToastMsg() - -@Immutable -class ConfirmationToastMsg(val title: String, val msg: String, val onOk: () -> Unit) : ToastMsg() - -@Immutable -class AcceptRejectToastMsg(val title: String, val msg: String, val onAccept: () -> Unit, val onReject: () -> Unit) : ToastMsg() - -@Immutable -class ResourceToastMsg( - val titleResId: Int, - val resourceId: Int, - val params: Array? = null, -) : ToastMsg() - @Stable class AccountStateViewModel(npub: String?) : ViewModel() { private val _accountContent = MutableStateFlow(AccountState.LoggedOff) val accountContent = _accountContent.asStateFlow() - val toasts = MutableSharedFlow(0, 3, onBufferOverflow = BufferOverflow.DROP_OLDEST) private var observerJob: Job? = null init { tryLoginExistingAccount(null, npub) } - fun clearToasts() { - viewModelScope.launch { toasts.emit(null) } - } - - fun toast( - title: String, - message: String, - ) { - viewModelScope.launch { toasts.emit(StringToastMsg(title, message)) } - } - - fun toast( - title: String, - message: String, - onOk: () -> Unit, - ) { - viewModelScope.launch { toasts.emit(ConfirmationToastMsg(title, message, onOk)) } - } - - fun toast( - title: String, - message: String, - onAccept: () -> Unit, - onReject: () -> Unit, - ) { - viewModelScope.launch { toasts.emit(AcceptRejectToastMsg(title, message, onAccept, onReject)) } - } - private fun tryLoginExistingAccount( route: String?, npub: String?, diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/DefaultProfileRelaysScreen.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/DefaultProfileRelaysScreen.kt index 63fd2eb1..53ca8f21 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/DefaultProfileRelaysScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/DefaultProfileRelaysScreen.kt @@ -40,7 +40,6 @@ import kotlinx.coroutines.launch @Composable fun DefaultProfileRelaysScreen( modifier: Modifier, - accountStateViewModel: AccountStateViewModel, account: Account, ) { val scope = rememberCoroutineScope() @@ -116,7 +115,6 @@ fun DefaultProfileRelaysScreen( isLoading, relays2, scope, - accountStateViewModel, account, context, shouldCheckForBunker = false, @@ -153,7 +151,6 @@ fun DefaultProfileRelaysScreen( isLoading, relays2, scope, - accountStateViewModel, account, context, shouldCheckForBunker = false, diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/EditConfigurationScreen.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/EditConfigurationScreen.kt index 134e2dda..374779e5 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/EditConfigurationScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/EditConfigurationScreen.kt @@ -68,7 +68,6 @@ import kotlinx.coroutines.launch fun EditConfigurationScreen( modifier: Modifier = Modifier, key: String, - accountStateViewModel: AccountStateViewModel, account: Account, navController: NavController, ) { @@ -188,7 +187,6 @@ fun EditConfigurationScreen( isLoading, relays, scope, - accountStateViewModel, account, context, onDone = {}, @@ -211,7 +209,6 @@ fun EditConfigurationScreen( isLoading, relays, scope, - accountStateViewModel, account, context, onDone = {}, diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/FeedbackScreen.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/FeedbackScreen.kt index e3aa003f..98f530f0 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/FeedbackScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/FeedbackScreen.kt @@ -46,7 +46,6 @@ import kotlinx.coroutines.launch fun FeedbackScreen( modifier: Modifier = Modifier, account: Account, - accountStateViewModel: AccountStateViewModel, onDismiss: () -> Unit, onLoading: (Boolean) -> Unit, ) { @@ -152,14 +151,14 @@ fun FeedbackScreen( account, ) if (result) { - accountStateViewModel.toast( + ToastManager.toast( Amber.instance.getString(R.string.warning), Amber.instance.getString(R.string.feedback_sent), ) onLoading(false) onDismiss() } else { - accountStateViewModel.toast( + ToastManager.toast( Amber.instance.getString(R.string.warning), Amber.instance.getString(R.string.failed_to_send_event), ) diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/IncomingRequestScreen.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/IncomingRequestScreen.kt index a41f57d4..90fab17f 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/IncomingRequestScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/IncomingRequestScreen.kt @@ -36,7 +36,6 @@ fun IncomingRequestScreen( packageName: String?, applicationName: String?, account: Account, - accountStateViewModel: AccountStateViewModel, navController: NavController, onRemoveIntentData: (List, IntentResultType) -> Unit, onLoading: (Boolean) -> Unit, @@ -70,7 +69,6 @@ fun IncomingRequestScreen( applicationName = applicationName, intentData = intents.first(), account = account, - accountStateViewModel = accountStateViewModel, onRemoveIntentData = onRemoveIntentData, onLoading = onLoading, ) 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 d3b2617c..c53c7be7 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/MainScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/MainScreen.kt @@ -381,7 +381,6 @@ fun MainScreen( packageName = packageName, applicationName = appName, account = account, - accountStateViewModel = accountStateViewModel, navController = navController, onRemoveIntentData = onRemoveIntentData, onLoading = { @@ -563,7 +562,6 @@ fun MainScreen( .padding(padding) .padding(horizontal = verticalPadding) .padding(top = verticalPadding * 1.5f), - accountStateViewModel = accountStateViewModel, ) }, ) @@ -608,7 +606,6 @@ fun MainScreen( val scrollState = rememberScrollState() NewApplicationScreen( account = account, - accountStateViewModel = accountStateViewModel, navController = navController, modifier = Modifier @@ -628,7 +625,6 @@ fun MainScreen( val scrollState = rememberScrollState() NewNsecBunkerScreen( account = account, - accountStateViewModel = accountStateViewModel, navController = navController, modifier = Modifier @@ -746,7 +742,6 @@ fun MainScreen( .padding(top = verticalPadding * 1.5f) .imePadding(), key = key, - accountStateViewModel = accountStateViewModel, account = account, navController = navController, ) @@ -779,7 +774,6 @@ fun MainScreen( .padding(padding) .padding(horizontal = verticalPadding) .padding(top = verticalPadding * 1.5f), - accountStateViewModel = accountStateViewModel, pin = pin, navController = navController, ) @@ -832,7 +826,6 @@ fun MainScreen( .verticalScroll(scrollState) .padding(horizontal = verticalPadding) .padding(top = verticalPadding * 1.5f), - accountStateViewModel = accountStateViewModel, account = account, ) }, @@ -908,7 +901,6 @@ fun MainScreen( .padding(top = verticalPadding * 1.5f) .imePadding(), account = account, - accountStateViewModel = accountStateViewModel, onDismiss = { Amber.instance.applicationIOScope.launch(Dispatchers.Main) { navController.navigateUp() diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/NewApplicationScreen.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/NewApplicationScreen.kt index fb2e3127..c8c5e618 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/NewApplicationScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/NewApplicationScreen.kt @@ -34,7 +34,6 @@ import kotlinx.coroutines.launch @Composable fun NewApplicationScreen( modifier: Modifier, - accountStateViewModel: AccountStateViewModel, account: Account, navController: NavController, ) { @@ -49,7 +48,7 @@ fun NewApplicationScreen( dialogOpen.value = false if (it.isNullOrBlank()) { - accountStateViewModel.toast( + ToastManager.toast( title, message, ) @@ -57,7 +56,7 @@ fun NewApplicationScreen( } if (!it.startsWith("nostrconnect://")) { - accountStateViewModel.toast( + ToastManager.toast( title, message, ) @@ -90,7 +89,7 @@ fun NewApplicationScreen( scope.launch { val clipboardText = clipboardManager.getClipEntry()?.clipData?.getItemAt(0) if (clipboardText == null) { - accountStateViewModel.toast( + ToastManager.toast( title, message, ) @@ -98,14 +97,14 @@ fun NewApplicationScreen( } if (clipboardText.text.isBlank()) { - accountStateViewModel.toast( + ToastManager.toast( title, message, ) return@launch } if (!clipboardText.text.startsWith("nostrconnect://")) { - accountStateViewModel.toast( + ToastManager.toast( title, message, ) diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/NewNsecBunkerScreen.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/NewNsecBunkerScreen.kt index 1094c258..a164081d 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/NewNsecBunkerScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/NewNsecBunkerScreen.kt @@ -63,7 +63,6 @@ import kotlinx.coroutines.launch fun NewNsecBunkerScreen( modifier: Modifier = Modifier, account: Account, - accountStateViewModel: AccountStateViewModel, navController: NavController, ) { val secret = remember { mutableStateOf(UUID.randomUUID().toString()) } @@ -163,7 +162,6 @@ fun NewNsecBunkerScreen( isLoading, relays, scope, - accountStateViewModel, account = account, context, onDone = { @@ -187,7 +185,6 @@ fun NewNsecBunkerScreen( isLoading, relays, scope, - accountStateViewModel, account = account, context, onDone = { @@ -226,7 +223,7 @@ fun NewNsecBunkerScreen( text = stringResource(R.string.create), onClick = { if (relays.isEmpty()) { - accountStateViewModel.toast( + ToastManager.toast( title, noRelaysMessage, ) @@ -235,7 +232,7 @@ fun NewNsecBunkerScreen( } if (name.text.isBlank()) { - accountStateViewModel.toast( + ToastManager.toast( title, noNameMessage, ) diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/SetupPinScreen.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/SetupPinScreen.kt index 8fe6d0ed..c1c91c0d 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/SetupPinScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/SetupPinScreen.kt @@ -28,7 +28,6 @@ fun SetupPinScreen( @Composable fun ConfirmPinScreen( modifier: Modifier = Modifier, - accountStateViewModel: AccountStateViewModel, pin: String, navController: NavController, ) { @@ -39,7 +38,7 @@ fun ConfirmPinScreen( RandomPinInput( onPinEntered = { enteredPin -> if (enteredPin != pin) { - accountStateViewModel.toast(context.getString(R.string.pin), context.getString(R.string.pin_does_not_match)) + ToastManager.toast(context.getString(R.string.pin), context.getString(R.string.pin_does_not_match)) } else { val usePin = Amber.instance.settings.usePin if (usePin) { diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/ToastManager.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/ToastManager.kt new file mode 100644 index 00000000..4adb376e --- /dev/null +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/ToastManager.kt @@ -0,0 +1,63 @@ +package com.greenart7c3.nostrsigner.ui + +import androidx.compose.runtime.Immutable +import com.greenart7c3.nostrsigner.Amber +import kotlinx.coroutines.channels.BufferOverflow +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.launch + +@Immutable +open class ToastMsg + +@Immutable +class StringToastMsg(val title: String, val msg: String) : ToastMsg() + +@Immutable +class ConfirmationToastMsg(val title: String, val msg: String, val onOk: () -> Unit) : ToastMsg() + +@Immutable +class AcceptRejectToastMsg( + val title: String, + val msg: String, + val onAccept: () -> Unit, + val onReject: () -> Unit, +) : ToastMsg() + +@Immutable +class ResourceToastMsg( + val titleResId: Int, + val resourceId: Int, + val params: Array? = null, +) : ToastMsg() + +object ToastManager { + val toasts = MutableSharedFlow(0, 3, onBufferOverflow = BufferOverflow.DROP_OLDEST) + + fun clearToasts() { + Amber.instance.applicationIOScope.launch { toasts.emit(null) } + } + + fun toast( + title: String, + message: String, + ) { + Amber.instance.applicationIOScope.launch { toasts.emit(StringToastMsg(title, message)) } + } + + fun toast( + title: String, + message: String, + onOk: () -> Unit, + ) { + Amber.instance.applicationIOScope.launch { toasts.emit(ConfirmationToastMsg(title, message, onOk)) } + } + + fun toast( + title: String, + message: String, + onAccept: () -> Unit, + onReject: () -> Unit, + ) { + Amber.instance.applicationIOScope.launch { toasts.emit(AcceptRejectToastMsg(title, message, onAccept, onReject)) } + } +} diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/actions/EditRelaysDialog.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/actions/EditRelaysDialog.kt index f1243a95..3fcdcb48 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/actions/EditRelaysDialog.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/actions/EditRelaysDialog.kt @@ -57,8 +57,8 @@ import com.greenart7c3.nostrsigner.models.TimeUtils.formatLongToCustomDateTimeWi import com.greenart7c3.nostrsigner.models.defaultAppRelays import com.greenart7c3.nostrsigner.relays.AmberListenerSingleton import com.greenart7c3.nostrsigner.service.TrustScoreService -import com.greenart7c3.nostrsigner.ui.AccountStateViewModel import com.greenart7c3.nostrsigner.ui.CenterCircularProgressIndicator +import com.greenart7c3.nostrsigner.ui.ToastManager import com.greenart7c3.nostrsigner.ui.RelayCard import com.greenart7c3.nostrsigner.ui.components.AmberButton import com.greenart7c3.nostrsigner.ui.components.TrustScoreBadge @@ -92,7 +92,6 @@ import kotlinx.coroutines.withTimeoutOrNull @Composable fun DefaultRelaysScreen( modifier: Modifier, - accountStateViewModel: AccountStateViewModel, account: Account, ) { val scope = rememberCoroutineScope() @@ -187,7 +186,6 @@ fun DefaultRelaysScreen( isLoading, relays2, scope, - accountStateViewModel, account, context, onDone = { @@ -223,7 +221,6 @@ fun DefaultRelaysScreen( isLoading, relays2, scope, - accountStateViewModel, account, context, onDone = { @@ -288,7 +285,6 @@ fun onAddRelay( isLoading: MutableState, relays2: SnapshotStateList, scope: CoroutineScope, - accountStateViewModel: AccountStateViewModel, account: Account, context: Context, shouldCheckForBunker: Boolean = true, @@ -373,7 +369,7 @@ fun onAddRelay( } override fun onCannotConnect(relay: IRelayClient, errorMessage: String) { - accountStateViewModel.toast( + ToastManager.toast( context.getString(R.string.relay), context.getString(R.string.could_not_connect_to_relay), onAccept = { @@ -419,7 +415,7 @@ fun onAddRelay( } if (canContinue == null) { - accountStateViewModel.toast( + ToastManager.toast( context.getString(R.string.relay), context.getString(R.string.could_not_connect_to_relay), onAccept = { @@ -472,7 +468,7 @@ fun onAddRelay( relays2.add(addedWSS) onDone() } else if (!filterResult) { - accountStateViewModel.toast( + ToastManager.toast( context.getString(R.string.relay), context.getString(R.string.relay_filter_failed), onAccept = { diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/IntentSingleEventHomeScreen.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/IntentSingleEventHomeScreen.kt index e1ac6246..17e4187b 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/IntentSingleEventHomeScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/IntentSingleEventHomeScreen.kt @@ -31,7 +31,7 @@ import com.greenart7c3.nostrsigner.models.kindToNip import com.greenart7c3.nostrsigner.service.IntentUtils import com.greenart7c3.nostrsigner.service.isPrivateEvent import com.greenart7c3.nostrsigner.service.toShortenHex -import com.greenart7c3.nostrsigner.ui.AccountStateViewModel +import com.greenart7c3.nostrsigner.ui.ToastManager import com.vitorpamplona.quartz.nip01Core.core.toHexKey import com.vitorpamplona.quartz.nip19Bech32.bech32.bechToBytes import com.vitorpamplona.quartz.nip19Bech32.toNpub @@ -47,7 +47,6 @@ fun IntentSingleEventHomeScreen( applicationName: String?, intentData: IntentData, account: Account, - accountStateViewModel: AccountStateViewModel, onRemoveIntentData: (List, IntentResultType) -> Unit, onLoading: (Boolean) -> Unit, ) { @@ -260,7 +259,7 @@ fun IntentSingleEventHomeScreen( account = account, onAccept = { if (intentData.unsignedEventKey.isNotBlank() && intentData.unsignedEventKey != account.hexKey && !isPrivateEvent(event.kind, event.tags)) { - accountStateViewModel.toast( + ToastManager.toast( title = context.getString(R.string.warning), message = context.getString(R.string.event_pubkey_is_not_equal_to_current_logged_in_user), )