added snackbar
This commit is contained in:
parent
5d92bb09fb
commit
76d8a58ef8
2 changed files with 45 additions and 0 deletions
|
@ -0,0 +1,20 @@
|
|||
package be.ugent.sel.studeez.common.snackbar
|
||||
|
||||
import androidx.annotation.StringRes
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
|
||||
object SnackbarManager {
|
||||
private val messages: MutableStateFlow<SnackbarMessage?> = MutableStateFlow(null)
|
||||
val snackbarMessages: StateFlow<SnackbarMessage?>
|
||||
get() = messages.asStateFlow()
|
||||
|
||||
fun showMessage(@StringRes message: Int) {
|
||||
messages.value = SnackbarMessage.ResourceSnackbar(message)
|
||||
}
|
||||
|
||||
fun showMessage(message: SnackbarMessage) {
|
||||
messages.value = message
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package be.ugent.sel.studeez.common.snackbar
|
||||
|
||||
import android.content.res.Resources
|
||||
import androidx.annotation.StringRes
|
||||
import be.ugent.sel.studeez.R.string as AppText
|
||||
|
||||
sealed class SnackbarMessage {
|
||||
class StringSnackbar(val message: String) : SnackbarMessage()
|
||||
class ResourceSnackbar(@StringRes val message: Int) : SnackbarMessage()
|
||||
|
||||
companion object {
|
||||
fun SnackbarMessage.toMessage(resources: Resources): String {
|
||||
return when (this) {
|
||||
is StringSnackbar -> this.message
|
||||
is ResourceSnackbar -> resources.getString(this.message)
|
||||
}
|
||||
}
|
||||
|
||||
fun Throwable.toSnackbarMessage(): SnackbarMessage {
|
||||
val message = this.message.orEmpty()
|
||||
return if (message.isNotBlank()) StringSnackbar(message)
|
||||
else ResourceSnackbar(AppText.generic_error)
|
||||
}
|
||||
}
|
||||
}
|
Reference in a new issue