edit alur navigasi ke homescreen
This commit is contained in:
parent
e722ad430c
commit
afb99b16dd
|
|
@ -36,12 +36,22 @@ class _SignUpScreenState extends State<SignUpScreen> {
|
|||
setState(() {
|
||||
signUpRequired = false;
|
||||
});
|
||||
// User sudah terdaftar dan auth state akan otomatis update via AuthenticationBloc
|
||||
// Tungur sebentar agar Firestore selesai menyimpan data
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(content: Text('Registrasi berhasil! Mengarahkan...')),
|
||||
);
|
||||
} else if (state is SignUpProcess) {
|
||||
setState(() {
|
||||
signUpRequired = true;
|
||||
});
|
||||
} else if (state is SignUpFailure) {
|
||||
return;
|
||||
setState(() {
|
||||
signUpRequired = false;
|
||||
});
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(content: Text('Registrasi gagal, silakan coba lagi')),
|
||||
);
|
||||
}
|
||||
},
|
||||
child: Form(
|
||||
|
|
|
|||
|
|
@ -18,8 +18,24 @@ class FirebaseUserRepo implements UserRepository {
|
|||
if (firebaseUser == null) {
|
||||
yield MyUser.empty;
|
||||
} else {
|
||||
yield await userCollection.doc(firebaseUser.uid).get()
|
||||
.then((value) => MyUser.fromEntity(MyUserEntity.fromDocument(value.data()!)));
|
||||
try {
|
||||
final userData = await userCollection.doc(firebaseUser.uid).get();
|
||||
if (userData.exists && userData.data() != null) {
|
||||
yield MyUser.fromEntity(MyUserEntity.fromDocument(userData.data()!));
|
||||
} else {
|
||||
// User baru yang belum ada data di Firestore, tunggu sebentar
|
||||
await Future.delayed(const Duration(milliseconds: 500));
|
||||
final retryData = await userCollection.doc(firebaseUser.uid).get();
|
||||
if (retryData.exists && retryData.data() != null) {
|
||||
yield MyUser.fromEntity(MyUserEntity.fromDocument(retryData.data()!));
|
||||
} else {
|
||||
yield MyUser.empty;
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
log('Error fetching user data: $e');
|
||||
yield MyUser.empty;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -63,6 +79,8 @@ class FirebaseUserRepo implements UserRepository {
|
|||
await userCollection
|
||||
.doc(myUser.userId)
|
||||
.set(myUser.toEntity().toDocument());
|
||||
// Tunggu sebentar agar data tersimpan dengan baik sebelum stream update
|
||||
await Future.delayed(const Duration(milliseconds: 500));
|
||||
} catch (e) {
|
||||
log(e.toString());
|
||||
rethrow;
|
||||
|
|
|
|||
Loading…
Reference in New Issue