Updated on 2026-08-14
This commit is contained in:
parent
e736f86583
commit
82dcb31881
3 changed files with 45 additions and 0 deletions
|
|
@ -19,6 +19,27 @@ import com.tangem.core.ui.message.SnackbarMessage.Duration
|
|||
@Immutable
|
||||
sealed interface EventMessage : UiMessage
|
||||
|
||||
data class ToastMessage(
|
||||
val message: TextReference,
|
||||
val duration: Duration = ToastMessage.Duration.Short,
|
||||
) : EventMessage {
|
||||
/**
|
||||
* The duration of the snackbar.
|
||||
* */
|
||||
enum class Duration {
|
||||
|
||||
/**
|
||||
* Shows the toast for a short period of time.
|
||||
* */
|
||||
Short,
|
||||
|
||||
/**
|
||||
* Shows the toast for a long period of time.
|
||||
* */
|
||||
Long,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows a snackbar.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.tangem.core.ui.message
|
||||
|
||||
import android.content.Context
|
||||
import android.widget.Toast
|
||||
import androidx.compose.material3.SnackbarDuration
|
||||
import androidx.compose.material3.SnackbarHostState
|
||||
import androidx.compose.material3.SnackbarResult
|
||||
|
|
@ -24,6 +25,7 @@ fun EventMessageEffect(
|
|||
onShowSnackbar: suspend (SnackbarMessage, Context) -> Unit = { message, context ->
|
||||
showSnackbar(snackbarHostState, message, context)
|
||||
},
|
||||
onShowToast: (ToastMessage, Context) -> Unit = { message, context -> showToast(message, context) },
|
||||
) {
|
||||
val messageEvent by messageHandler.collectAsState()
|
||||
val context = LocalContext.current
|
||||
|
|
@ -46,6 +48,9 @@ fun EventMessageEffect(
|
|||
is BottomSheetMessageV2 -> {
|
||||
bottomSheetMessageV2 = message
|
||||
}
|
||||
is ToastMessage -> {
|
||||
onShowToast(message, context)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -162,4 +167,15 @@ private suspend fun showSnackbar(snackbarHostState: SnackbarHostState, message:
|
|||
SnackbarResult.Dismissed -> message.onDismissRequest()
|
||||
SnackbarResult.ActionPerformed -> message.action?.invoke()
|
||||
}
|
||||
}
|
||||
|
||||
private fun showToast(message: ToastMessage, context: Context) {
|
||||
Toast.makeText(
|
||||
/* context = */ context,
|
||||
/* text = */ message.message.resolveReference(context.resources),
|
||||
/* duration = */ when (message.duration) {
|
||||
ToastMessage.Duration.Short -> Toast.LENGTH_SHORT
|
||||
ToastMessage.Duration.Long -> Toast.LENGTH_LONG
|
||||
},
|
||||
).show()
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue