AlertDialog
This commit is contained in:
@@ -1,7 +1,9 @@
|
|||||||
package com.example.tpfilrouge.auth
|
package com.example.tpfilrouge.auth
|
||||||
|
|
||||||
|
import androidx.compose.material3.AlertDialog
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
|
import com.example.tpfilrouge.helpers.AlertDialogHelpers
|
||||||
import com.example.tpfilrouge.helpers.AppDialogHelpers
|
import com.example.tpfilrouge.helpers.AppDialogHelpers
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
@@ -28,14 +30,12 @@ class LoginViewModel : ViewModel() {
|
|||||||
|
|
||||||
// Si connexion ok
|
// Si connexion ok
|
||||||
if (responseService.code.equals("200")){
|
if (responseService.code.equals("200")){
|
||||||
// Je notifie que c'est ok
|
//AlertDialogHelpers.get().show(responseService.message, onClose = { onSuccess() })
|
||||||
println("Connexion OK")
|
AlertDialogHelpers.get().show(responseService.message, onClose = onSuccess)
|
||||||
// Note: J'appel la fonction que j'envoie en parametre de la fonction
|
|
||||||
onSuccess();
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
// Erreur
|
// Erreur
|
||||||
println("Connexion échouée")
|
AlertDialogHelpers.get().show(responseService.message, onClose = {})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,75 @@
|
|||||||
|
package com.example.tpfilrouge.helpers
|
||||||
|
|
||||||
|
import androidx.compose.foundation.background
|
||||||
|
import androidx.compose.foundation.layout.Box
|
||||||
|
import androidx.compose.foundation.layout.Column
|
||||||
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
|
import androidx.compose.material3.CircularProgressIndicator
|
||||||
|
import androidx.compose.material3.Text
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.collectAsState
|
||||||
|
import androidx.compose.runtime.getValue
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
|
import androidx.compose.ui.window.Dialog
|
||||||
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
|
|
||||||
|
class AlertDialogHelpers {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val instance : AlertDialogHelpers by lazy { AlertDialogHelpers() }
|
||||||
|
|
||||||
|
fun get() : AlertDialogHelpers {
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sert à savoir en temps réel si il faut afficher ou pas la dialog
|
||||||
|
var alertDialogModelData = MutableStateFlow(AlertDialogModelData());
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Afficher la popup
|
||||||
|
*/
|
||||||
|
fun show(message: String, onClose : () -> Unit){
|
||||||
|
// Forcer le rafraichissement de l'etat
|
||||||
|
alertDialogModelData.value = alertDialogModelData.value.copy(
|
||||||
|
isShow = true,
|
||||||
|
message = message,
|
||||||
|
onClose = onClose);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fermer la popup
|
||||||
|
*/
|
||||||
|
fun closeDialog() {
|
||||||
|
// Forcer le rafraichissement de l'etat
|
||||||
|
alertDialogModelData.value = alertDialogModelData.value.copy(isShow = false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun AlertDialog(){
|
||||||
|
// Je vais ecouter quand la dialog est true ou false
|
||||||
|
// Donc quand je dois afficher ou pas
|
||||||
|
val alertDialogModelDataState by AlertDialogHelpers.get().alertDialogModelData.collectAsState();
|
||||||
|
|
||||||
|
if (alertDialogModelDataState.isShow) {
|
||||||
|
Dialog(onDismissRequest = {
|
||||||
|
// Fermer la popup
|
||||||
|
AlertDialogHelpers.get().closeDialog();
|
||||||
|
// Appeler le callback
|
||||||
|
alertDialogModelDataState.onClose();
|
||||||
|
}){
|
||||||
|
Box(modifier = Modifier.background(
|
||||||
|
color = Color(0xFFFFFFFF),
|
||||||
|
shape = RoundedCornerShape(30.dp)
|
||||||
|
)
|
||||||
|
.padding(20.dp)) {
|
||||||
|
Text(text = alertDialogModelDataState.message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
package com.example.tpfilrouge.helpers
|
||||||
|
|
||||||
|
data class AlertDialogModelData(var isShow : Boolean = false, var message : String = "", var onClose : () -> Unit = {}) {
|
||||||
|
}
|
||||||
@@ -25,6 +25,7 @@ import androidx.compose.ui.res.painterResource
|
|||||||
import androidx.compose.ui.text.TextStyle
|
import androidx.compose.ui.text.TextStyle
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.example.tpfilrouge.R
|
import com.example.tpfilrouge.R
|
||||||
|
import com.example.tpfilrouge.helpers.AlertDialog
|
||||||
import com.example.tpfilrouge.helpers.ProgressDialog
|
import com.example.tpfilrouge.helpers.ProgressDialog
|
||||||
|
|
||||||
class AppTheme {
|
class AppTheme {
|
||||||
@@ -40,6 +41,7 @@ fun EniPage(content: @Composable () -> Unit){
|
|||||||
content()
|
content()
|
||||||
}
|
}
|
||||||
ProgressDialog()
|
ProgressDialog()
|
||||||
|
AlertDialog()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user