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