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
	
	 lbarraga
						lbarraga