From ddcb85e8dd281c795cb92fe26446e389123d7263 Mon Sep 17 00:00:00 2001 From: "mr.mojtaba" Date: Sat, 13 Sep 2025 13:52:25 +0330 Subject: [PATCH] fix : exit logic -> chicken chore : profile page -> poultry science --- packages/chicken/lib/data/di/chicken_di.dart | 2 +- .../{steward => common}/profile/logic.dart | 1 + .../{steward => common}/profile/view.dart | 12 +- .../pages/poultry_science/profile/logic.dart | 150 ----- .../pages/poultry_science/profile/view.dart | 609 ------------------ .../pages/poultry_science/root/logic.dart | 6 +- .../pages/steward/root/logic.dart | 4 +- .../presentation/pages/steward/steward.dart | 2 - .../lib/presentation/routes/pages.dart | 8 +- .../core/lib/data/services/g_service.dart | 14 +- .../data/services/token_storage_service.dart | 5 +- .../lib/injection/inspection_di.dart | 2 +- .../lib/injection/live_stock_di.dart | 2 +- .../lib/presentation/page/profile/view.dart | 10 +- 14 files changed, 40 insertions(+), 787 deletions(-) rename packages/chicken/lib/presentation/pages/{steward => common}/profile/logic.dart (99%) rename packages/chicken/lib/presentation/pages/{steward => common}/profile/view.dart (98%) delete mode 100644 packages/chicken/lib/presentation/pages/poultry_science/profile/logic.dart delete mode 100644 packages/chicken/lib/presentation/pages/poultry_science/profile/view.dart diff --git a/packages/chicken/lib/data/di/chicken_di.dart b/packages/chicken/lib/data/di/chicken_di.dart index 03d5a80..5878805 100644 --- a/packages/chicken/lib/data/di/chicken_di.dart +++ b/packages/chicken/lib/data/di/chicken_di.dart @@ -98,7 +98,7 @@ Future newSetupAuthDI(String newUrl) async { // await tokenService.saveAccessToken(newToken); }, clearTokenCallback: () async { - await tokenService.deleteAllTokens(); + await tokenService.deleteModuleTokens(Module.chicken); Get.offAllNamed(ChickenRoutes.auth, arguments: Module.chicken); }, ), diff --git a/packages/chicken/lib/presentation/pages/steward/profile/logic.dart b/packages/chicken/lib/presentation/pages/common/profile/logic.dart similarity index 99% rename from packages/chicken/lib/presentation/pages/steward/profile/logic.dart rename to packages/chicken/lib/presentation/pages/common/profile/logic.dart index 09d4ce6..37723f7 100644 --- a/packages/chicken/lib/presentation/pages/steward/profile/logic.dart +++ b/packages/chicken/lib/presentation/pages/common/profile/logic.dart @@ -8,6 +8,7 @@ import 'package:rasadyar_core/core.dart'; class ProfileLogic extends GetxController { StewardRootLogic rootLogic = Get.find(); + GService gService = Get.find(); RxInt selectedInformationType = 0.obs; Rxn birthDate = Rxn(); diff --git a/packages/chicken/lib/presentation/pages/steward/profile/view.dart b/packages/chicken/lib/presentation/pages/common/profile/view.dart similarity index 98% rename from packages/chicken/lib/presentation/pages/steward/profile/view.dart rename to packages/chicken/lib/presentation/pages/common/profile/view.dart index 31d5192..71a4a27 100644 --- a/packages/chicken/lib/presentation/pages/steward/profile/view.dart +++ b/packages/chicken/lib/presentation/pages/common/profile/view.dart @@ -2,11 +2,10 @@ import 'dart:io'; import 'package:flutter/cupertino.dart' hide Image; import 'package:flutter/material.dart'; -import 'package:rasadyar_chicken/chicken.dart'; import 'package:rasadyar_chicken/data/di/chicken_di.dart'; import 'package:rasadyar_chicken/data/models/response/iran_province_city/iran_province_city_model.dart'; import 'package:rasadyar_chicken/data/models/response/user_profile/user_profile.dart'; -import 'package:rasadyar_core/core.dart' hide Image; +import 'package:rasadyar_core/core.dart'; import 'logic.dart'; @@ -613,9 +612,12 @@ class ProfilePage extends GetView { text: 'خروج', backgroundColor: AppColor.error, onPressed: () async { - await controller.rootLogic.tokenService.deleteAllTokens().then((value){ - Get.back(); - Get.offAllNamed(ChickenRoutes.auth, arguments: Module.chicken); + await Future.wait([ + controller.rootLogic.tokenService.deleteModuleTokens(Module.chicken), + controller.gService.clearSelectedModule(), + ]).then((value) async { + await removeChickenDI(); + Get.offAllNamed("/moduleList"); }); }, ), diff --git a/packages/chicken/lib/presentation/pages/poultry_science/profile/logic.dart b/packages/chicken/lib/presentation/pages/poultry_science/profile/logic.dart deleted file mode 100644 index c008b24..0000000 --- a/packages/chicken/lib/presentation/pages/poultry_science/profile/logic.dart +++ /dev/null @@ -1,150 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:rasadyar_chicken/data/models/response/iran_province_city/iran_province_city_model.dart'; -import 'package:rasadyar_chicken/data/models/response/user_profile/user_profile.dart'; -import 'package:rasadyar_chicken/presentation/pages/poultry_science/root/logic.dart'; -import 'package:rasadyar_core/core.dart'; - -class PoultryScienceProfileLogic extends GetxController { - PoultryScienceRootLogic rootLogic = Get.find(); - RxInt selectedInformationType = 0.obs; - Rxn birthDate = Rxn(); - - Rx> userProfile = Rx>( - Resource.loading(), - ); - - TextEditingController nameController = TextEditingController(); - TextEditingController lastNameController = TextEditingController(); - TextEditingController nationalCodeController = TextEditingController(); - TextEditingController nationalIdController = TextEditingController(); - TextEditingController birthdayController = TextEditingController(); - - TextEditingController oldPasswordController = TextEditingController(); - TextEditingController newPasswordController = TextEditingController(); - TextEditingController retryNewPasswordController = TextEditingController(); - - RxList cites = [].obs; - Rxn selectedProvince = Rxn(); - Rxn selectedCity = Rxn(); - - GlobalKey formKey = GlobalKey(); - ImagePicker imagePicker = ImagePicker(); - Rxn selectedImage = Rxn(); - RxnString _base64Image = RxnString(); - RxBool isOnLoading = false.obs; - - @override - void onInit() { - super.onInit(); - ever(selectedImage, (data) async { - if (data?.path != null) { - _base64Image.value = await convertImageToBase64(data!.path); - } - }); - } - - @override - void onReady() { - super.onReady(); - getUserProfile(); - selectedProvince.listen((p0) => getCites()); - userProfile.listen((data) { - nameController.text = data.data?.firstName ?? ''; - lastNameController.text = data.data?.lastName ?? ''; - nationalCodeController.text = data.data?.nationalCode ?? ''; - nationalIdController.text = data.data?.nationalId ?? ''; - birthdayController.text = - data.data?.birthday?.toJalali.formatCompactDate() ?? ''; - birthDate.value = data.data?.birthday?.toJalali; - selectedProvince.value = IranProvinceCityModel( - name: data.data?.province ?? '', - id: data.data?.provinceNumber ?? 0, - ); - - selectedCity.value = IranProvinceCityModel( - name: data.data?.city ?? '', - id: data.data?.cityNumber ?? 0, - ); - }); - } - - @override - void onClose() { - super.onClose(); - } - - Future getUserProfile() async { - /* userProfile.value = Resource.loading(); - await safeCall( - call: () async => await rootLogic.poultryRepository.getUserProfile( - token: rootLogic.tokenService.accessToken.value!, - ), - onSuccess: (result) { - if (result != null) { - userProfile.value = Resource.success(result); - } - }, - onError: (error, stackTrace) {}, - );*/ - } - - Future getCites() async { - /* await safeCall( - call: () => - rootLogic.chickenRepository.getCity(provinceName: selectedProvince.value?.name ?? ''), - onSuccess: (result) { - if (result != null && result.isNotEmpty) { - cites.value = result; - } - }, - );*/ - } - - Future updateUserProfile() async { - /* UserProfile userProfile = UserProfile( - firstName: nameController.text, - lastName: lastNameController.text, - nationalCode: nationalCodeController.text, - nationalId: nationalIdController.text, - birthday: birthDate.value?.toDateTime().formattedDashedGregorian.toString(), - image: _base64Image.value, - personType: 'self', - type: 'self_profile', - ); - isOnLoading.value = true; - await safeCall( - call: () async => await rootLogic.chickenRepository.updateUserProfile( - token: rootLogic.tokenService.accessToken.value!, - userProfile: userProfile, - ), - onSuccess: (result) { - isOnLoading.value = false; - }, - onError: (error, stackTrace) { - isOnLoading.value = false; - }, - );*/ - } - - Future updatePassword() async { - /*if (formKey.currentState?.validate() ?? false) { - ChangePasswordRequestModel model = ChangePasswordRequestModel( - username: userProfile.value.data?.mobile, - password: newPasswordController.text, - ); - - await safeCall( - call: () async => await rootLogic.chickenRepository.updatePassword( - token: rootLogic.tokenService.accessToken.value!, - model: model, - ), - ); - }*/ - } - - void clearPasswordForm() { - oldPasswordController.clear(); - newPasswordController.clear(); - retryNewPasswordController.clear(); - } -} diff --git a/packages/chicken/lib/presentation/pages/poultry_science/profile/view.dart b/packages/chicken/lib/presentation/pages/poultry_science/profile/view.dart deleted file mode 100644 index b313cd8..0000000 --- a/packages/chicken/lib/presentation/pages/poultry_science/profile/view.dart +++ /dev/null @@ -1,609 +0,0 @@ -import 'dart:io'; - -import 'package:flutter/cupertino.dart' hide Image; -import 'package:flutter/material.dart'; -import 'package:rasadyar_chicken/chicken.dart'; -import 'package:rasadyar_chicken/data/models/response/iran_province_city/iran_province_city_model.dart'; -import 'package:rasadyar_chicken/data/models/response/user_profile/user_profile.dart'; -import 'package:rasadyar_core/core.dart'; - -import 'logic.dart'; - -class PoultryScienceProfilePage extends GetView { - const PoultryScienceProfilePage({super.key}); - - @override - Widget build(BuildContext context) { - return Column( - spacing: 30, - children: [ - Expanded( - flex: 1, - child: Container( - color: AppColor.blueNormal, - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Row(), - ObxValue((data) { - final status = data.value.status; - - if (status == ResourceStatus.loading) { - return Container( - width: 128.w, - height: 128.h, - child: Center(child: CupertinoActivityIndicator(color: AppColor.greenNormal)), - ); - } - - if (status == ResourceStatus.error) { - return Container( - width: 128.w, - height: 128.h, - child: Center(child: Text('خطا در دریافت اطلاعات')), - ); - } - - // Default UI - return Container( - width: 128.w, - height: 128.h, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.blueLightActive, - ), - child: Center( - child: CircleAvatar( - radius: 64.w, - backgroundImage: NetworkImage(data.value.data!.image!), - ), - ), - ); - }, controller.userProfile), - ], - ), - ), - ), - Expanded( - flex: 3, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - spacing: 16, - children: [ - Expanded( - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 30, vertical: 10), - child: userProfileInformation(), - ), - ), - - Center( - child: Wrap( - alignment: WrapAlignment.center, - spacing: 20, - runSpacing: 10, - children: [ - cardActionWidget( - title: 'تغییر رمز عبور', - selected: true, - onPressed: () { - Get.bottomSheet(changePasswordBottomSheet(), isScrollControlled: true); - }, - icon: Assets.vec.lockSvg.path, - ), - cardActionWidget( - title: 'خروج', - selected: true, - color: ColorFilter.mode(Colors.redAccent, BlendMode.srcIn), - cardColor: Color(0xFFEFEFEF), - textColor: AppColor.redDarkerText, - onPressed: () { - Get.bottomSheet(exitBottomSheet(), isScrollControlled: true); - }, - icon: Assets.vec.logoutSvg.path, - ), - ], - ), - ), - - SizedBox(height: 100), - ], - ), - ), - ], - ); - } - - Container invoiceIssuanceInformation() => Container(); - - Widget bankInformationWidget() => Column( - spacing: 16, - children: [ - itemList(title: 'نام بانک', content: 'سامان'), - itemList(title: 'نام صاحب حساب', content: 'رضا رضایی'), - itemList(title: 'شماره کارت ', content: '54154545415'), - itemList(title: 'شماره حساب', content: '62565263263652'), - itemList(title: 'شماره شبا', content: '62565263263652'), - ], - ); - - Widget userProfileInformation() { - return ObxValue((data) { - if (data.value.status == ResourceStatus.loading) { - return LoadingWidget(); - } else if (data.value.status == ResourceStatus.error) { - return ErrorWidget('خطا در دریافت اطلاعات کاربر'); - } else if (data.value.status == ResourceStatus.success) { - UserProfile item = data.value.data!; - return Column( - spacing: 6, - children: [ - buildRowOnTapped( - onTap: () { - Get.bottomSheet( - userInformationBottomSheet(), - isScrollControlled: true, - ignoreSafeArea: false, - ); - }, - titleWidget: Column( - spacing: 3, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - 'اطلاعات هویتی', - style: AppFonts.yekan16Bold.copyWith(color: AppColor.blueNormal), - ), - Container(width: 37.w, height: 1.h, color: AppColor.greenNormal), - ], - ), - valueWidget: Assets.vec.editSvg.svg( - width: 24.w, - height: 24.h, - colorFilter: ColorFilter.mode(AppColor.blueNormal, BlendMode.srcIn), - ), - ), - itemList( - title: 'نام و نام خانوادگی', - content: item.fullname ?? 'نامشخص', - icon: Assets.vec.userSvg.path, - hasColoredBox: true, - ), - itemList( - title: 'موبایل', - content: item.mobile ?? 'نامشخص', - icon: Assets.vec.callSvg.path, - ), - itemList( - title: 'کدملی', - content: item.nationalId ?? 'نامشخص', - icon: Assets.vec.tagUserSvg.path, - ), - itemList( - title: 'شماره شناسنامه', - content: item.nationalCode ?? 'نامشخص', - icon: Assets.vec.userSquareSvg.path, - ), - itemList( - title: 'تاریخ تولد', - content: item.birthday?.toJalali.formatCompactDate() ?? 'نامشخص', - icon: Assets.vec.calendarSvg.path, - ), - itemList( - title: 'استان', - content: item.province ?? 'نامشخص', - icon: Assets.vec.pictureFrameSvg.path, - ), - itemList(title: 'شهر', content: item.city ?? 'نامشخص', icon: Assets.vec.mapSvg.path), - ], - ); - } else { - return SizedBox.shrink(); - } - }, controller.userProfile); - } - - Widget itemList({ - required String title, - required String content, - String? icon, - bool hasColoredBox = false, - }) => Container( - padding: EdgeInsets.symmetric(horizontal: 12.h, vertical: 6.h), - decoration: BoxDecoration( - color: hasColoredBox ? AppColor.greenLight : Colors.transparent, - borderRadius: BorderRadius.circular(8), - border: hasColoredBox - ? Border.all(width: 0.25, color: AppColor.bgDark) - : Border.all(width: 0, color: Colors.transparent), - ), - child: Row( - spacing: 4, - children: [ - if (icon != null) - Padding( - padding: const EdgeInsets.only(left: 8.0), - child: SvgGenImage.vec(icon).svg( - width: 20.w, - height: 20.h, - colorFilter: ColorFilter.mode(AppColor.mediumGreyNormalActive, BlendMode.srcIn), - ), - ), - Text(title, style: AppFonts.yekan12.copyWith(color: AppColor.mediumGreyNormalActive)), - Spacer(), - Text(content, style: AppFonts.yekan13.copyWith(color: AppColor.mediumGreyNormalHover)), - ], - ), - ); - - Widget cardActionWidget({ - required String title, - required VoidCallback onPressed, - required String icon, - bool selected = false, - ColorFilter? color, - Color? cardColor, - Color? textColor, - }) { - return GestureDetector( - onTap: onPressed, - child: Column( - spacing: 4, - children: [ - Container( - width: 52, - height: 52, - padding: EdgeInsets.all(8), - decoration: ShapeDecoration( - color: cardColor ?? AppColor.blueLight, - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), - ), - child: SvgGenImage.vec(icon).svg( - width: 40, - height: 40, - colorFilter: - color ?? - ColorFilter.mode( - selected ? AppColor.blueNormal : AppColor.whiteLight, - BlendMode.srcIn, - ), - ), - ), - SizedBox(height: 2), - Text( - title, - style: AppFonts.yekan10.copyWith( - color: textColor ?? (selected ? AppColor.blueNormal : AppColor.blueLightActive), - ), - textAlign: TextAlign.center, - ), - ], - ), - ); - } - - Widget userInformationBottomSheet() { - return BaseBottomSheet( - height: 750.h, - child: SingleChildScrollView( - child: Column( - spacing: 8, - children: [ - Text( - 'ویرایش اطلاعات هویتی', - style: AppFonts.yekan16Bold.copyWith(color: AppColor.darkGreyDarkHover), - ), - - Container( - padding: EdgeInsets.all(8), - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(8), - border: Border.all(color: AppColor.darkGreyLight, width: 1), - ), - child: Column( - spacing: 12, - children: [ - RTextField( - controller: controller.nameController, - label: 'نام', - borderColor: AppColor.darkGreyLight, - filledColor: AppColor.bgLight, - filled: true, - ), - RTextField( - controller: controller.lastNameController, - label: 'نام خانوادگی', - borderColor: AppColor.darkGreyLight, - filledColor: AppColor.bgLight, - filled: true, - ), - RTextField( - controller: controller.nationalCodeController, - label: 'شماره شناسنامه', - borderColor: AppColor.darkGreyLight, - filledColor: AppColor.bgLight, - filled: true, - ), - RTextField( - controller: controller.nationalIdController, - label: 'کد ملی', - borderColor: AppColor.darkGreyLight, - filledColor: AppColor.bgLight, - filled: true, - ), - - ObxValue((data) { - return RTextField( - controller: controller.birthdayController, - label: 'تاریخ تولد', - initText: data.value?.formatCompactDate() ?? '', - borderColor: AppColor.darkGreyLight, - filledColor: AppColor.bgLight, - filled: true, - onTap: () {}, - ); - }, controller.birthDate), - - SizedBox(), - ], - ), - ), - SizedBox(), - - Container( - padding: EdgeInsets.all(8), - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(8), - border: Border.all(color: AppColor.darkGreyLight, width: 1), - ), - child: Column( - spacing: 8, - children: [ - Text( - 'عکس پروفایل', - style: AppFonts.yekan16Bold.copyWith(color: AppColor.blueNormal), - ), - ObxValue((data) { - return Container( - width: Get.width, - height: 270, - decoration: BoxDecoration( - color: AppColor.lightGreyNormal, - borderRadius: BorderRadius.circular(8), - border: Border.all(width: 1, color: AppColor.blackLight), - ), - child: Center( - child: data.value == null - ? Padding( - padding: const EdgeInsets.fromLTRB(30, 10, 10, 30), - child: Image.network( - controller.userProfile.value.data?.image ?? '', - ), - ) - : Image.file(File(data.value!.path), fit: BoxFit.cover), - ), - ); - }, controller.selectedImage), - - Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - RElevated( - text: 'گالری', - width: 150.w, - height: 40.h, - textStyle: AppFonts.yekan20.copyWith(color: Colors.white), - onPressed: () async { - controller.selectedImage.value = await controller.imagePicker.pickImage( - source: ImageSource.gallery, - imageQuality: 60, - maxWidth: 1080, - maxHeight: 720, - ); - }, - ), - SizedBox(width: 16), - ROutlinedElevated( - text: 'دوربین', - width: 150.w, - height: 40.h, - textStyle: AppFonts.yekan20.copyWith(color: AppColor.blueNormal), - onPressed: () async { - controller.selectedImage.value = await controller.imagePicker.pickImage( - source: ImageSource.camera, - imageQuality: 60, - maxWidth: 1080, - maxHeight: 720, - ); - }, - ), - ], - ), - ], - ), - ), - Row( - spacing: 16, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - ObxValue((data) { - return RElevated( - height: 40.h, - text: 'ویرایش', - isLoading: data.value, - onPressed: () async { - await controller.updateUserProfile(); - controller.getUserProfile(); - Get.back(); - }, - ); - }, controller.isOnLoading), - ROutlinedElevated( - height: 40.h, - text: 'انصراف', - borderColor: AppColor.blueNormal, - onPressed: () { - Get.back(); - }, - ), - ], - ), - ], - ), - ), - ); - } - - Widget changePasswordBottomSheet() { - return BaseBottomSheet( - height: 400.h, - child: SingleChildScrollView( - child: Form( - key: controller.formKey, - child: Column( - spacing: 8, - children: [ - Text( - 'تغییر رمز عبور', - style: AppFonts.yekan16Bold.copyWith(color: AppColor.darkGreyDarkHover), - ), - SizedBox(), - RTextField( - controller: controller.oldPasswordController, - hintText: 'رمز عبور قبلی', - borderColor: AppColor.darkGreyLight, - filledColor: AppColor.bgLight, - filled: true, - validator: (value) { - if (value == null || value.isEmpty) { - return 'رمز عبور را وارد کنید'; - } else if (controller.userProfile.value.data?.password != value) { - return 'رمز عبور صحیح نیست'; - } - return null; - }, - ), - RTextField( - controller: controller.newPasswordController, - hintText: 'رمز عبور جدید', - borderColor: AppColor.darkGreyLight, - filledColor: AppColor.bgLight, - filled: true, - validator: (value) { - if (value == null || value.isEmpty) { - return 'رمز عبور را وارد کنید'; - } else if (value.length < 6) { - return 'رمز عبور باید بیش از 6 کارکتر باشد.'; - } - return null; - }, - ), - RTextField( - controller: controller.retryNewPasswordController, - hintText: 'تکرار رمز عبور جدید', - borderColor: AppColor.darkGreyLight, - filledColor: AppColor.bgLight, - filled: true, - validator: (value) { - if (value == null || value.isEmpty) { - return 'رمز عبور را وارد کنید'; - } else if (value.length < 6) { - return 'رمز عبور باید بیش از 6 کارکتر باشد.'; - } else if (controller.newPasswordController.text != value) { - return 'رمز عبور جدید یکسان نیست'; - } - return null; - }, - ), - - SizedBox(), - - Row( - spacing: 16, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - RElevated( - height: 40.h, - text: 'ویرایش', - onPressed: () async { - if (controller.formKey.currentState?.validate() != true) { - return; - } - await controller.updatePassword(); - controller.getUserProfile(); - controller.clearPasswordForm(); - Get.back(); - }, - ), - ROutlinedElevated( - height: 40.h, - text: 'انصراف', - borderColor: AppColor.blueNormal, - onPressed: () { - Get.back(); - }, - ), - ], - ), - ], - ), - ), - ), - ); - } - - Widget exitBottomSheet() { - return BaseBottomSheet( - height: 220.h, - child: SingleChildScrollView( - child: Form( - key: controller.formKey, - child: Column( - spacing: 8, - children: [ - Text('خروج', style: AppFonts.yekan16Bold.copyWith(color: AppColor.error)), - SizedBox(), - Text( - 'آیا مطمئن هستید که می‌خواهید از حساب کاربری خود خارج شوید؟', - textAlign: TextAlign.center, - style: AppFonts.yekan16Bold.copyWith(color: AppColor.textColor), - ), - - SizedBox(), - - Row( - spacing: 16, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - RElevated( - height: 40.h, - text: 'خروج', - backgroundColor: AppColor.error, - onPressed: () async { - await controller.rootLogic.tokenService.deleteAllTokens().then((value) { - Get.back(); - Get.offAllNamed(ChickenRoutes.auth, arguments: Module.chicken); - }); - }, - ), - ROutlinedElevated( - height: 40.h, - text: 'انصراف', - borderColor: AppColor.blueNormal, - onPressed: () { - Get.back(); - }, - ), - ], - ), - ], - ), - ), - ), - ); - } -} diff --git a/packages/chicken/lib/presentation/pages/poultry_science/root/logic.dart b/packages/chicken/lib/presentation/pages/poultry_science/root/logic.dart index e362fba..38ae72c 100644 --- a/packages/chicken/lib/presentation/pages/poultry_science/root/logic.dart +++ b/packages/chicken/lib/presentation/pages/poultry_science/root/logic.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; import 'package:rasadyar_chicken/data/di/chicken_di.dart'; import 'package:rasadyar_chicken/data/repositories/poultry_science/poultry_science_repository.dart'; +import 'package:rasadyar_chicken/presentation/pages/common/profile/view.dart'; import 'package:rasadyar_chicken/presentation/pages/poultry_science/home/view.dart'; import 'package:rasadyar_chicken/presentation/pages/poultry_science/poultry_action/view.dart'; -import 'package:rasadyar_chicken/presentation/pages/poultry_science/profile/view.dart'; import 'package:rasadyar_chicken/presentation/utils/utils.dart'; import 'package:rasadyar_core/core.dart'; @@ -11,7 +11,7 @@ enum ErrorLocationType { serviceDisabled, permissionDenied, none } class PoultryScienceRootLogic extends GetxController { RxInt currentPage = 1.obs; - List pages = [PoultryActionPage(), PoultryScienceHomePage(), PoultryScienceProfilePage()]; + List pages = [PoultryActionPage(), PoultryScienceHomePage(), ProfilePage()]; late DioRemote dioRemote; var tokenService = Get.find(); late PoultryScienceRepository poultryRepository; @@ -39,7 +39,7 @@ class PoultryScienceRootLogic extends GetxController { void rootErrorHandler(DioException error) { handleGeneric(error, () { - tokenService.deleteAllTokens(); + tokenService.deleteModuleTokens(Module.chicken); }); } diff --git a/packages/chicken/lib/presentation/pages/steward/root/logic.dart b/packages/chicken/lib/presentation/pages/steward/root/logic.dart index 26d0dd9..3042252 100644 --- a/packages/chicken/lib/presentation/pages/steward/root/logic.dart +++ b/packages/chicken/lib/presentation/pages/steward/root/logic.dart @@ -8,9 +8,9 @@ import 'package:rasadyar_chicken/data/models/response/inventory/inventory_model. import 'package:rasadyar_chicken/data/models/response/iran_province_city/iran_province_city_model.dart'; import 'package:rasadyar_chicken/data/models/response/roles_products/roles_products.dart'; import 'package:rasadyar_chicken/data/repositories/chicken/chicken_repository.dart'; +import 'package:rasadyar_chicken/presentation/pages/common/profile/view.dart'; import 'package:rasadyar_chicken/presentation/pages/steward/buy/view.dart'; import 'package:rasadyar_chicken/presentation/pages/steward/home/view.dart'; -import 'package:rasadyar_chicken/presentation/pages/steward/profile/view.dart'; import 'package:rasadyar_chicken/presentation/pages/steward/sale/view.dart'; import 'package:rasadyar_chicken/presentation/pages/steward/segmentation/view.dart'; import 'package:rasadyar_chicken/presentation/routes/routes.dart'; @@ -114,7 +114,7 @@ class StewardRootLogic extends GetxController { void rootErrorHandler(DioException error) { handleGeneric(error, () { - tokenService.deleteAllTokens(); + tokenService.deleteModuleTokens(Module.chicken); }); } diff --git a/packages/chicken/lib/presentation/pages/steward/steward.dart b/packages/chicken/lib/presentation/pages/steward/steward.dart index 7f91b94..2139d13 100644 --- a/packages/chicken/lib/presentation/pages/steward/steward.dart +++ b/packages/chicken/lib/presentation/pages/steward/steward.dart @@ -10,8 +10,6 @@ export 'buy_out_of_province/logic.dart'; export 'buy_out_of_province/view.dart'; export 'home/logic.dart'; export 'home/view.dart'; -export 'profile/logic.dart'; -export 'profile/view.dart'; export 'root/logic.dart'; export 'root/view.dart'; export 'sale/logic.dart'; diff --git a/packages/chicken/lib/presentation/routes/pages.dart b/packages/chicken/lib/presentation/routes/pages.dart index faa7487..74af044 100644 --- a/packages/chicken/lib/presentation/routes/pages.dart +++ b/packages/chicken/lib/presentation/routes/pages.dart @@ -1,5 +1,8 @@ import 'package:rasadyar_chicken/presentation/pages/common/auth/logic.dart'; import 'package:rasadyar_chicken/presentation/pages/common/auth/view.dart'; +import 'package:rasadyar_chicken/presentation/pages/common/profile/logic.dart'; +import 'package:rasadyar_chicken/presentation/pages/common/role/logic.dart'; +import 'package:rasadyar_chicken/presentation/pages/common/role/view.dart'; import 'package:rasadyar_chicken/presentation/pages/poultry_science/active_hatching/logic.dart'; import 'package:rasadyar_chicken/presentation/pages/poultry_science/active_hatching/view.dart'; import 'package:rasadyar_chicken/presentation/pages/poultry_science/farm/logic.dart'; @@ -9,11 +12,8 @@ import 'package:rasadyar_chicken/presentation/pages/poultry_science/inspection/l import 'package:rasadyar_chicken/presentation/pages/poultry_science/inspection/view.dart'; import 'package:rasadyar_chicken/presentation/pages/poultry_science/poultry_action/logic.dart'; import 'package:rasadyar_chicken/presentation/pages/poultry_science/poultry_action/view.dart'; -import 'package:rasadyar_chicken/presentation/pages/poultry_science/profile/logic.dart'; import 'package:rasadyar_chicken/presentation/pages/poultry_science/root/logic.dart'; import 'package:rasadyar_chicken/presentation/pages/poultry_science/root/view.dart'; -import 'package:rasadyar_chicken/presentation/pages/common/role/logic.dart'; -import 'package:rasadyar_chicken/presentation/pages/common/role/view.dart'; import 'package:rasadyar_chicken/presentation/pages/steward/steward.dart'; import 'package:rasadyar_chicken/presentation/routes/routes.dart'; import 'package:rasadyar_chicken/presentation/widget/base_page/logic.dart'; @@ -159,7 +159,7 @@ sealed class ChickenPages { Get.lazyPut(() => SearchLogic()); Get.lazyPut(() => PoultryScienceRootLogic()); Get.lazyPut(() => PoultryScienceHomeLogic()); - Get.lazyPut(() => PoultryScienceProfileLogic()); + Get.lazyPut(() => ProfileLogic()); Get.lazyPut(() => PoultryActionLogic()); }), ), diff --git a/packages/core/lib/data/services/g_service.dart b/packages/core/lib/data/services/g_service.dart index 8516eeb..abfde90 100644 --- a/packages/core/lib/data/services/g_service.dart +++ b/packages/core/lib/data/services/g_service.dart @@ -32,6 +32,12 @@ class GService extends GetxService { await model.save(); } + Future clearSelectedModule() async { + AppModel model = box.values.first; + model.selectedModule = null; + await model.save(); + } + TargetPage? getTargetPage(Module? module) { if (isFirstTime()) { return null; @@ -40,11 +46,11 @@ class GService extends GetxService { return res; } - Future saveSelectedRole(Module module,String route) async { + Future saveSelectedRole(Module module, String route) async { AppModel model = box.values.first; - TargetPage? targetPage = model.targetPages?.firstWhere((element) => element.module == module); - if(targetPage!=null){ - targetPage.route =route; + TargetPage? targetPage = model.targetPages?.firstWhere((element) => element.module == module); + if (targetPage != null) { + targetPage.route = route; model.save(); } } diff --git a/packages/core/lib/data/services/token_storage_service.dart b/packages/core/lib/data/services/token_storage_service.dart index 0e0d3eb..08fb12d 100644 --- a/packages/core/lib/data/services/token_storage_service.dart +++ b/packages/core/lib/data/services/token_storage_service.dart @@ -68,7 +68,10 @@ class TokenStorageService extends GetxService { Future deleteModuleTokens(Module module) async { UserLocalModel? user = getUserLocal(module); - await user?.delete(); + user?.token = null; + user?.refreshToken = null; + user?.backend = null; + await user?.save(); accessToken.value = null; refreshToken.value = null; } diff --git a/packages/inspection/lib/injection/inspection_di.dart b/packages/inspection/lib/injection/inspection_di.dart index c85d164..4560765 100644 --- a/packages/inspection/lib/injection/inspection_di.dart +++ b/packages/inspection/lib/injection/inspection_di.dart @@ -25,7 +25,7 @@ Future setupInspectionDI() async { // await tokenService.saveAccessToken(newToken); }, clearTokenCallback: () async { - await tokenService.deleteAllTokens(); + await tokenService.deleteModuleTokens(Module.inspection); Get.offAllNamed(InspectionRoutes.auth, arguments: Module.inspection); }, authArguments: Module.inspection, diff --git a/packages/livestock/lib/injection/live_stock_di.dart b/packages/livestock/lib/injection/live_stock_di.dart index 192340c..17958ab 100644 --- a/packages/livestock/lib/injection/live_stock_di.dart +++ b/packages/livestock/lib/injection/live_stock_di.dart @@ -45,7 +45,7 @@ Future setupLiveStockDI() async { // await tokenService.saveAccessToken(newToken); }, clearTokenCallback: () async { - await tokenService.deleteAllTokens(); + await tokenService.deleteModuleTokens(Module.liveStocks); Get.offAllNamed(LiveStockRoutes.auth, arguments: Module.liveStocks); }, authArguments: Module.liveStocks, diff --git a/packages/livestock/lib/presentation/page/profile/view.dart b/packages/livestock/lib/presentation/page/profile/view.dart index 1ea95ac..ee0dd10 100644 --- a/packages/livestock/lib/presentation/page/profile/view.dart +++ b/packages/livestock/lib/presentation/page/profile/view.dart @@ -683,10 +683,12 @@ class ProfilePage extends GetView { text: 'خروج', backgroundColor: AppColor.error, onPressed: () async { - await controller.rootLogic.tokenService.deleteAllTokens().then((value) { - Get.back(); - Get.offAllNamed(LiveStockRoutes.auth, arguments: Module.chicken); - }); + await controller.rootLogic.tokenService + .deleteModuleTokens(Module.liveStocks) + .then((value) { + Get.back(); + Get.offAllNamed(LiveStockRoutes.auth, arguments: Module.chicken); + }); }, ), ROutlinedElevated(