59 lines
1.6 KiB
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);
|
|
}
|
|
}
|
|
}
|