diff --git a/lib/features/medical_file/medical_file_view_model.dart b/lib/features/medical_file/medical_file_view_model.dart index 9f1a692d..6fb8c8a2 100644 --- a/lib/features/medical_file/medical_file_view_model.dart +++ b/lib/features/medical_file/medical_file_view_model.dart @@ -29,7 +29,11 @@ class MedicalFileViewModel extends ChangeNotifier { bool isPatientSickLeavePDFLoading = false; bool isPatientMedicalReportsListLoading = false; bool isPatientAllergiesListLoading = false; + bool _isFamilyFilesLoading = false; + bool get isFamilyFilesLoading => _isFamilyFilesLoading; + + set setIsFamilyFilesLoading(bool value) => _isFamilyFilesLoading = value; MedicalFileRepo medicalFileRepo; ErrorHandlerService errorHandlerService; @@ -431,6 +435,9 @@ class MedicalFileViewModel extends ChangeNotifier { } Future getFamilyFiles({int? status, Function(dynamic)? onSuccess, Function(String)? onError}) async { + + setIsFamilyFilesLoading = true; + final shouldShowLoader = patientFamilyFiles.isEmpty; if (shouldShowLoader) { LoaderBottomSheet.showLoader(); @@ -439,24 +446,31 @@ class MedicalFileViewModel extends ChangeNotifier { final result = await medicalFileRepo.getPatientFamilyFiles(status, _appState.getSuperUserID != null ? _appState.getSuperUserID! : _appState.getAuthenticatedUser()!.patientId!); result.fold( - (failure) async => await errorHandlerService.handleError( - failure: failure, - onOkPressed: () { - if (shouldShowLoader) { - LoaderBottomSheet.hideLoader(); - } - onError!(failure.message); - }, - ), + (failure) async { + + setIsFamilyFilesLoading = false; + + await errorHandlerService.handleError( + failure: failure, + onOkPressed: () { + if (shouldShowLoader) { + LoaderBottomSheet.hideLoader(); + } + onError!(failure.message); + }, + ); + }, (apiResponse) { if (apiResponse.messageStatus == 2) { + + setIsFamilyFilesLoading = false; + // _dialogService.showErrorBottomSheet(message: apiResponse.errorMessage!, onOkPressed: () {}); if (shouldShowLoader) { LoaderBottomSheet.hideLoader(); } } else if (apiResponse.messageStatus == 1) { if (apiResponse.data != null) { - // Add current user as the first active family file final currentUser = _appState.getAuthenticatedUser()!; final currentUserFamilyFile = FamilyFileResponseModelLists( patientId: currentUser.patientId, @@ -536,6 +550,9 @@ class MedicalFileViewModel extends ChangeNotifier { pendingFamilyFiles = newPendingFamilyFiles; } + // Clear loading state on success + setIsFamilyFilesLoading = false; + if (shouldShowLoader) { LoaderBottomSheet.hideLoader(); } diff --git a/lib/presentation/my_family/my_family.dart b/lib/presentation/my_family/my_family.dart index 62d1fb62..4b6f820a 100644 --- a/lib/presentation/my_family/my_family.dart +++ b/lib/presentation/my_family/my_family.dart @@ -34,26 +34,14 @@ class _FamilyMedicalScreenState extends State { super.initState(); medicalVM = context.read(); WidgetsBinding.instance.addPostFrameCallback((_) async { - final vm = medicalVM; - if (vm == null) return; - - final shouldShowInitialLoader = vm.patientFamilyFiles.isEmpty; - if (shouldShowInitialLoader) { + if(medicalVM!.isFamilyFilesLoading) { LoaderBottomSheet.showLoader(); + } else { + LoaderBottomSheet.hideLoader(); } + medicalVM?.onFamilyFileTabChange(0); + medicalVM?.getAllPendingRecordsByResponseId(); - vm.onFamilyFileTabChange(0); - try { - AppState appState = getIt.get(); - if (!appState.getIsChildLoggedIn) { - await vm.getFamilyFiles(status: 0); - } - await vm.getAllPendingRecordsByResponseId(); - } finally { - if (shouldShowInitialLoader) { - LoaderBottomSheet.hideLoader(); - } - } }); }