E41220983_MuhamadSugengCahy.../praresi/lib/presentation/controllers/profile_controller.dart

94 lines
2.2 KiB
Dart

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
class ProfileController extends GetxController {
final FirebaseAuth _auth = FirebaseAuth.instance;
final FirebaseFirestore _firestore = FirebaseFirestore.instance;
var name = ''.obs;
var email = ''.obs;
var isLoading = true.obs;
@override
void onInit() {
super.onInit();
loadProfile();
}
Future<void> loadProfile() async {
try {
isLoading.value = true;
final user = _auth.currentUser;
if (user != null) {
email.value = user.email ?? "";
final doc =
await _firestore.collection('users').doc(user.uid).get();
if (doc.exists) {
name.value = doc.data()?['name'] ?? "";
}
}
} catch (e) {
Get.snackbar("Error", "Gagal memuat profil: $e");
} finally {
isLoading.value = false;
}
}
Future<void> updateName() async {
try {
final user = _auth.currentUser;
if (user == null) return;
/// ✅ VALIDASI NAMA
if (name.value.trim().isEmpty) {
Get.snackbar(
"Peringatan",
"Nama tidak boleh kosong",
snackPosition: SnackPosition.TOP,
backgroundColor: Colors.white,
colorText: Colors.black,
margin: const EdgeInsets.all(12),
borderRadius: 12,
duration: const Duration(seconds: 2),
);
return;
}
await _firestore
.collection('users')
.doc(user.uid)
.update({
"name": name.value.trim(),
});
Get.snackbar(
"Berhasil",
"Nama pengguna berhasil diperbarui",
snackPosition: SnackPosition.TOP,
backgroundColor: Colors.white,
colorText: Colors.black,
margin: const EdgeInsets.all(12),
borderRadius: 12,
duration: const Duration(seconds: 2),
);
} catch (e) {
Get.snackbar(
"Error",
"Gagal memperbarui nama",
snackPosition: SnackPosition.TOP,
backgroundColor: Colors.white,
colorText: Colors.black,
margin: const EdgeInsets.all(12),
borderRadius: 12,
duration: const Duration(seconds: 2),
);
}
}
}