55 lines
1.6 KiB
Dart
55 lines
1.6 KiB
Dart
import 'package:get/get_instance/get_instance.dart';
|
|
import 'package:get/route_manager.dart';
|
|
import 'package:get/state_manager.dart';
|
|
import 'package:Ulak/core/base_controller.dart';
|
|
import 'package:Ulak/routes/app_pages.dart';
|
|
import 'package:Ulak/services/api_services.dart';
|
|
import 'package:Ulak/services/auth_service.dart';
|
|
import 'package:Ulak/services/storage_service.dart';
|
|
|
|
class SplashController extends BaseController {
|
|
late final isServicesWait = false.obs;
|
|
final _storageService = StorageService();
|
|
|
|
@override
|
|
void onReady() async {
|
|
super.onReady();
|
|
await _storageService.init();
|
|
await checkServices();
|
|
await waitForServices();
|
|
isServicesWait.value = true;
|
|
if (isServicesWait == true) {
|
|
await checkTokenAndRedirect();
|
|
}
|
|
}
|
|
|
|
Future<void> checkServices() async {
|
|
while (!Get.isRegistered<StorageService>() &&
|
|
!Get.isRegistered<ApiServices>() &&
|
|
!Get.isRegistered<AuthService>()) {
|
|
await Future.delayed(Duration(seconds: 3));
|
|
}
|
|
}
|
|
|
|
Future<void> waitForServices() async {
|
|
while (!Get.isRegistered<StorageService>() &&
|
|
!Get.isRegistered<ApiServices>() &&
|
|
!Get.isRegistered<AuthService>()) {
|
|
await Future.delayed(Duration(seconds: 1));
|
|
}
|
|
}
|
|
|
|
Future<bool> checkTokenAndRedirect() async {
|
|
final authService = Get.find<AuthService>();
|
|
final isAuthenticated = await authService.isAuthenticated();
|
|
if (isAuthenticated == true) {
|
|
// final account = await _authService.getAccount();
|
|
Get.offAllNamed(AppRoutes.HOME);
|
|
return true;
|
|
} else {
|
|
Get.offAllNamed(AppRoutes.LOGIN);
|
|
return false;
|
|
}
|
|
}
|
|
}
|