diff --git a/lib/infrastructure/service/local_storage_service.dart b/lib/infrastructure/service/local_storage_service.dart index f31e32b..498ac4c 100644 --- a/lib/infrastructure/service/local_storage_service.dart +++ b/lib/infrastructure/service/local_storage_service.dart @@ -3,7 +3,6 @@ import 'package:rasadyar_chicken/data/di/chicken_di.dart'; import 'package:rasadyar_chicken/presentation/routes/routes.dart'; import 'package:rasadyar_core/core.dart'; import 'package:rasadyar_core/data/model/local/target_page/target_page.dart'; -import 'package:rasadyar_core/hive_registrar.g.dart'; import 'package:rasadyar_inspection/injection/inspection_di.dart'; import 'package:rasadyar_inspection/inspection.dart'; import 'package:rasadyar_livestock/injection/live_stock_di.dart'; @@ -13,20 +12,20 @@ class LocalStorageService extends GetxService { static const String _targetPageBox = 'targetPageBox'; final HiveLocalStorage _localStorage = diCore.get(); - late Box _targetBox; + Future init() async { - Hive.registerAdapters(); - await _localStorage.init(); await _localStorage.openBox(_targetPageBox); + seedTargetPage(); + } Future seedTargetPage() async { var existing = getTargetPage(null); if (existing == null) { - _localStorage.addAll( + _localStorage.addAll( boxName: _targetPageBox, - values: [ + values: [ TargetPage( route: InspectionRoutes.init, module: Module.inspection, @@ -59,24 +58,18 @@ class LocalStorageService extends GetxService { await _localStorage.add(boxName: _targetPageBox, value: targetPage); } - Iterable? getFunctionsList(List? functions) { - return functions?.map((e) => getFunctionByName(e)); + Iterable? getFunctionsList(List? functions) { + return functions?.map((e) async => getFunctionByName(e)); } Future? getFunctionByName(String? name) { switch (name) { case "setupInspectionDI": return setupInspectionDI(); - case "removeInspectionDI": - return removeInspectionDI(); case "setupLiveStockDI": return setupLiveStockDI(); - case "removeLiveStockDI": - return removeLiveStockDI(); case "setupChickenDI": return setupChickenDI(); - case "removeChickenDI": - return removeChickenDI(); default: return null; } diff --git a/lib/main.dart b/lib/main.dart index 2912a8a..8026836 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -12,8 +12,9 @@ Future main() async { await Hive.initFlutter(); await setupPreInjection(); Get.put(TokenStorageService()); - Get.put(LocalStorageService()); await Get.find().init(); + Get.put(LocalStorageService()); + await Get.find().init(); Get.put(AppAuthRouteResolver()); Get.put(AuthMiddleware()); diff --git a/lib/presentation/pages/modules/logic.dart b/lib/presentation/pages/modules/logic.dart index 85685ad..133e14d 100644 --- a/lib/presentation/pages/modules/logic.dart +++ b/lib/presentation/pages/modules/logic.dart @@ -89,7 +89,7 @@ class ModulesLogic extends GetxController { selectedIndex.value = index; await Future.delayed(Duration(milliseconds: 300)); selectedIndex.value = null; - saveModule(module); + // saveModule(module); await navigateToModule(module); } @@ -98,14 +98,14 @@ class ModulesLogic extends GetxController { if (target.value?[0] != null) { isLoading.value = !isLoading.value; - await target.value?[0]; + await target.value?[0]?.call(); isLoading.value = !isLoading.value; } await Get.toNamed(target.key, arguments: module); if (target.value?[1] != null) { - await target.value?[1]; + await target.value?[1]?.call(); } } diff --git a/lib/presentation/pages/splash/logic.dart b/lib/presentation/pages/splash/logic.dart index d15b7cb..efd507a 100644 --- a/lib/presentation/pages/splash/logic.dart +++ b/lib/presentation/pages/splash/logic.dart @@ -87,26 +87,25 @@ class SplashLogic extends GetxController with GetTickerProviderStateMixin { children: [ const Text('در حال دانلود بروزرسانی برنامه...'), Obx( - () => - Row( - spacing: 8, - children: [ - Expanded( - child: LinearProgressIndicator( - value: percent.value, - color: AppColor.greenNormal, - minHeight: 4, - ), - ), - SizedBox( - width: 55.w, - child: Text( - '${(percent.value * 100).toStringAsFixed(2)}%', - textAlign: TextAlign.center, - ), - ), - ], + () => Row( + spacing: 8, + children: [ + Expanded( + child: LinearProgressIndicator( + value: percent.value, + color: AppColor.greenNormal, + minHeight: 4, + ), ), + SizedBox( + width: 55.w, + child: Text( + '${(percent.value * 100).toStringAsFixed(2)}%', + textAlign: TextAlign.center, + ), + ), + ], + ), ), Row( @@ -119,9 +118,9 @@ class SplashLogic extends GetxController with GetTickerProviderStateMixin { height: 40.h, onPressed: data.value != null ? () { - installApk(); - Get.back(); - } + installApk(); + Get.back(); + } : null, text: 'نصب', ); @@ -163,10 +162,7 @@ class SplashLogic extends GetxController with GetTickerProviderStateMixin { await Future.wait(funs ?? []); Get.offAndToNamed(target.route!); - } - - } catch (e, st) { debugPrint("onReady error: $e\n$st"); } diff --git a/lib/presentation/routes/app_pages.dart b/lib/presentation/routes/app_pages.dart index 438eb6a..b122522 100644 --- a/lib/presentation/routes/app_pages.dart +++ b/lib/presentation/routes/app_pages.dart @@ -44,32 +44,20 @@ sealed class AppPages { ]; } -Map?> getTargetModule(Module? value) { - switch (value) { - case Module.inspection: - return {InspectionRoutes.init: setupInspectionDI()}; - case Module.liveStocks: - return {LiveStockRoutes.init: setupLiveStockDI()}; - case Module.chicken: - return {ChickenRoutes.initSteward: setupChickenDI()}; - default: - return {AppPaths.moduleList: null}; - } -} -Map?>?> getAuthTargetPage(Module? value) { +Map Function()?>?> getAuthTargetPage(Module? value) { switch (value) { case Module.inspection: return { - InspectionRoutes.auth: [setupInspectionDI(), removeInspectionDI()], + InspectionRoutes.auth: [setupInspectionDI, removeInspectionDI], }; case Module.liveStocks: return { - LiveStockRoutes.auth: [setupLiveStockDI(), removeLiveStockDI()], + LiveStockRoutes.auth: [setupLiveStockDI, removeLiveStockDI], }; case Module.chicken: return { - ChickenRoutes.auth: [setupChickenDI(), removeChickenDI()], + ChickenRoutes.auth: [setupChickenDI, removeChickenDI], }; default: return {AppPaths.moduleList: null}; diff --git a/packages/chicken/lib/data/di/chicken_di.dart b/packages/chicken/lib/data/di/chicken_di.dart index 031671e..67ea7c9 100644 --- a/packages/chicken/lib/data/di/chicken_di.dart +++ b/packages/chicken/lib/data/di/chicken_di.dart @@ -12,7 +12,7 @@ import 'package:rasadyar_chicken/data/repositories/chicken/chicken_repository.da import 'package:rasadyar_chicken/data/repositories/chicken/chicken_repository_imp.dart'; import 'package:rasadyar_core/core.dart'; -GetIt diChicken = GetIt.instance; +GetIt diChicken = GetIt.asNewInstance(); Future setupChickenDI() async { diChicken.registerSingleton(DioErrorHandler()); @@ -45,9 +45,7 @@ Future setupChickenDI() async { final dioRemote = diChicken.get(); await dioRemote.init(); - diChicken.registerLazySingleton( - () => AuthRemoteDataSourceImp(dioRemote), - ); + diChicken.registerLazySingleton(() => AuthRemoteDataSourceImp(dioRemote)); diChicken.registerLazySingleton( () => AuthRepositoryImpl(diChicken.get()), @@ -78,7 +76,7 @@ Future newSetupAuthDI(String newUrl) async { await diChicken.unregister(instanceName: 'chickenInterceptor'); } diChicken.registerLazySingleton( - () => AppInterceptor( + () => AppInterceptor( refreshTokenCallback: () async => null, saveTokenCallback: (String newToken) async { await tokenService.saveAccessToken(newToken); @@ -96,7 +94,7 @@ Future newSetupAuthDI(String newUrl) async { await diChicken.unregister(); } diChicken.registerLazySingleton( - () => DioRemote( + () => DioRemote( baseUrl: newUrl, interceptors: diChicken.get(instanceName: 'chickenInterceptor'), ), @@ -109,10 +107,12 @@ Future newSetupAuthDI(String newUrl) async { await reRegister(() => AuthRepositoryImpl(diChicken.get())); await reRegister(() => ChickenRemoteDatasourceImp(dioRemote)); await reRegister(() => ChickenLocalDataSourceImp()); - await reRegister(() => ChickenRepositoryImp( - remote: diChicken.get(), - local: diChicken.get(), - )); + await reRegister( + () => ChickenRepositoryImp( + remote: diChicken.get(), + local: diChicken.get(), + ), + ); } Future reRegister(T Function() factory) async { @@ -121,8 +121,11 @@ Future reRegister(T Function() factory) async { } diChicken.registerLazySingleton(factory); } + Future removeChickenDI() async { - if (diChicken.isRegistered()) { + eLog("removeChickenDI"); + await diChicken.resetScope(); + /* if (diChicken.isRegistered()) { diChicken.unregister(); } if (diChicken.isRegistered(instanceName: 'chickenInterceptor')) { @@ -145,5 +148,5 @@ Future removeChickenDI() async { } if (diChicken.isRegistered()) { diChicken.unregister(); - } -} \ No newline at end of file + }*/ +} diff --git a/packages/inspection/lib/injection/inspection_di.dart b/packages/inspection/lib/injection/inspection_di.dart index b266b78..3571514 100644 --- a/packages/inspection/lib/injection/inspection_di.dart +++ b/packages/inspection/lib/injection/inspection_di.dart @@ -9,7 +9,7 @@ import 'package:rasadyar_inspection/data/repositories/user/user_repository_imp.d import 'package:rasadyar_inspection/data/utils/dio_exception_handeler.dart'; import 'package:rasadyar_inspection/presentation/routes/app_routes.dart'; -GetIt diInspection = GetIt.instance; +GetIt diInspection = GetIt.asNewInstance(); Future setupInspectionDI() async { diInspection.registerSingleton(DioErrorHandler()); @@ -71,7 +71,9 @@ Future setupInspectionDI() async { Future removeInspectionDI() async { - if (diInspection.isRegistered()) { + eLog("removeInspectionDI"); + await diInspection.resetScope(); + /* if (diInspection.isRegistered()) { diInspection.unregister(); } if (diInspection.isRegistered()) { @@ -100,5 +102,5 @@ Future removeInspectionDI() async { } if (diInspection.isRegistered()) { diInspection.unregister(); - } + }*/ } diff --git a/packages/livestock/lib/hive_registrar.g.dart b/packages/livestock/lib/hive_registrar.g.dart index a9f8f96..289bd98 100644 --- a/packages/livestock/lib/hive_registrar.g.dart +++ b/packages/livestock/lib/hive_registrar.g.dart @@ -19,11 +19,11 @@ extension HiveRegistrar on HiveInterface { extension IsolatedHiveRegistrar on IsolatedHiveInterface { void registerAdapters() { - registerAdapter(HerdLocalAdapter()); - registerAdapter(LivestockLocalAdapter()); - registerAdapter(LivestockLocalModelAdapter()); - registerAdapter(LocationLocalAdapter()); - registerAdapter(RancherLocalAdapter()); - registerAdapter(TmpLocationsAdapter()); + registerAdapter(HerdLocalAdapter(), override: true); + registerAdapter(LivestockLocalAdapter(), override: true); + registerAdapter(LivestockLocalModelAdapter(), override: true); + registerAdapter(LocationLocalAdapter(), override: true); + registerAdapter(RancherLocalAdapter(), override: true); + registerAdapter(TmpLocationsAdapter(), override: true); } } diff --git a/packages/livestock/lib/injection/live_stock_di.dart b/packages/livestock/lib/injection/live_stock_di.dart index 8530104..7853315 100644 --- a/packages/livestock/lib/injection/live_stock_di.dart +++ b/packages/livestock/lib/injection/live_stock_di.dart @@ -1,5 +1,4 @@ import 'package:rasadyar_core/core.dart'; -import 'package:rasadyar_livestock/data/common/constant.dart'; import 'package:rasadyar_livestock/data/common/dio_exception_handeler.dart'; import 'package:rasadyar_livestock/data/data_source/remote/auth/auth_remote.dart'; import 'package:rasadyar_livestock/data/data_source/remote/auth/auth_remote_imp.dart'; @@ -14,10 +13,11 @@ import 'package:rasadyar_livestock/presentation/routes/app_pages.dart'; import '../data/data_source/local/tmp/tmp_local_data-source.dart'; -GetIt get diLiveStock => GetIt.instance; +GetIt diLiveStock= GetIt.asNewInstance(); Future setupLiveStockDI() async { diLiveStock.registerSingleton(DioErrorHandler()); + await IsolatedHive.initFlutter(); IsolatedHive.registerAdapters(); final tokenService = Get.find(); @@ -30,7 +30,7 @@ Future setupLiveStockDI() async { diLiveStock.registerLazySingleton( () => AppInterceptor( refreshTokenCallback: () async { - // Use lazy access to avoid circular dependency + // Use lazy access to avoid circular dependency final authRepository = diLiveStock.get(); final hasAuthenticated = await authRepository.hasAuthenticated(); if (hasAuthenticated) { @@ -95,7 +95,12 @@ Future setupLiveStockDI() async { } Future removeLiveStockDI() async { - if (diLiveStock.isRegistered()) { + eLog("removeLiveStockDI"); + await diLiveStock.resetScope(); + + + + /* if (diLiveStock.isRegistered()) { diLiveStock.unregister(); } if (diLiveStock.isRegistered()) { @@ -121,5 +126,5 @@ Future removeLiveStockDI() async { } if (diLiveStock.isRegistered()) { diLiveStock.unregister(); - } + }*/ }