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