Ulak/lib/modules/splash/splash_controller.dart
2026-04-07 09:52:29 +03:00

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;
}
}
}