TKK_E32230859/lib/app/modules/splash-screen/controllers/splash_screen_controller.dart

59 lines
1.6 KiB
Dart

import 'package:get/get.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import '../../../routes/app_pages.dart';
class SplashScreenController extends GetxController {
final FirebaseAuth _auth = FirebaseAuth.instance;
final FirebaseFirestore _firestore = FirebaseFirestore.instance;
@override
void onInit() {
super.onInit();
_checkAuthStatus();
}
void _checkAuthStatus() async {
await Future.delayed(const Duration(seconds: 4));
User? user = _auth.currentUser;
if (user != null) {
try {
final userDoc = await _firestore
.collection('users')
.doc(user.uid)
.get();
if (userDoc.exists) {
final userData = userDoc.data()!;
final deviceId = userData['device_id'] as String?;
final userName = userData['name'] as String? ?? 'User';
if (deviceId != null && deviceId.isNotEmpty) {
Get.offAllNamed(
Routes.HOME_PATIENT,
arguments: {
'deviceId': deviceId,
'userName': userName,
'userEmail': user.email ?? '',
},
);
} else {
await _auth.signOut();
Get.offAllNamed(Routes.LOGIN);
}
} else {
Get.offAllNamed(Routes.NAVBAR);
}
} catch (e) {
print('Error checking user data: $e');
await _auth.signOut();
Get.offAllNamed(Routes.LOGIN);
}
} else {
Get.offAllNamed(Routes.LOGIN);
}
}
}