diff --git a/lib/service_request_latest/service_request_detail_provider.dart b/lib/service_request_latest/service_request_detail_provider.dart index c737394b..42188a57 100644 --- a/lib/service_request_latest/service_request_detail_provider.dart +++ b/lib/service_request_latest/service_request_detail_provider.dart @@ -56,8 +56,16 @@ class ServiceRequestDetailProvider extends ChangeNotifier { bool _isLoading = false; bool _isArrivalLoading = false; + bool _isVerifyArrivalBottomSheetOpen = false; + bool get isVerifyArrivalBottomSheetOpen => _isVerifyArrivalBottomSheetOpen; + + set isVerifyArrivalBottomSheetOpen(bool value) { + _isVerifyArrivalBottomSheetOpen = value; + notifyListeners(); + } + bool get isArrivalLoading => _isArrivalLoading; set isArrivalLoading(bool value) { diff --git a/lib/service_request_latest/views/components/verify_arrival_view.dart b/lib/service_request_latest/views/components/verify_arrival_view.dart index db04e872..a79b22d7 100644 --- a/lib/service_request_latest/views/components/verify_arrival_view.dart +++ b/lib/service_request_latest/views/components/verify_arrival_view.dart @@ -141,7 +141,7 @@ class _VerifyArrivalViewState extends State { break; case 2: try { - showWaitingBottomSheet(requestDetailProvider: requestDetailProvider, verificationTypeId: verificationTypeId); + showWaitingBottomSheet(requestDetailProvider: requestDetailProvider, verificationTypeId: verificationTypeId,parentContext: context); } catch (e) { "Requester not confirmed you arrival".showToast; } @@ -215,9 +215,10 @@ class _VerifyArrivalViewState extends State { return fileImage; } - void showWaitingBottomSheet({required ServiceRequestDetailProvider requestDetailProvider, int? verificationTypeId}) async { + void showWaitingBottomSheet({required ServiceRequestDetailProvider requestDetailProvider, int? verificationTypeId,required BuildContext parentContext}) async { await requestDetailProvider.engineerConfirmArrival( workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!, verificationTypeId: verificationTypeId ?? 2, photoInfo: '', otp: ''); + requestDetailProvider.isVerifyArrivalBottomSheetOpen = true; bool? isArrived = (await showModalBottomSheet( context: context, useSafeArea: true, @@ -225,26 +226,23 @@ class _VerifyArrivalViewState extends State { backgroundColor: Colors.transparent, builder: (context) => RequestApprovalBottomSheet(), )); - if (isArrived == null) { - //Requester not confirmed you arrival".showToast; - } else if (isArrived) { - // try { - // // todo @waseeem call api to confirm - // int? status; - // showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); - // status = await requestDetailProvider.engineerConfirmArrival( - // workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!, verificationTypeId: verificationTypeId ?? 1, photoInfo: '', otp: ''); - // if (status == 200) { - // Navigator.pop(context); - // requestDetailProvider.getWorkOrderById(id: requestDetailProvider.currentWorkOrder!.data!.requestId!); - // Navigator.pop(context); - // requestDetailProvider.startTimer(); - // } else { - // Navigator.pop(context); - // } - // } catch (ex) {} - } else { - "Requester not confirmed you arrival".showToast; + if (requestDetailProvider.isVerifyArrivalBottomSheetOpen) { + print('is arrival value is ${isArrived}'); + if (isArrived == null) { + "Requester not confirmed you arrival".showToast; + } else if (isArrived) { + requestDetailProvider.getWorkOrderById(id: requestDetailProvider.currentWorkOrder!.data!.requestId!); + Navigator.pop(parentContext); + requestDetailProvider.startTimer(); + } else { + requestDetailProvider.getWorkOrderById(id: requestDetailProvider.currentWorkOrder!.data!.requestId!); + "Requester not confirmed you arrival".showToast; + Navigator.pop(parentContext); + + } + } + else{ + print('bottomsheet closed ...'); } } } diff --git a/lib/views/widgets/bottom_sheets/request_approval_waiting_bottom_sheet.dart b/lib/views/widgets/bottom_sheets/request_approval_waiting_bottom_sheet.dart index 4fb70c59..4a768e74 100644 --- a/lib/views/widgets/bottom_sheets/request_approval_waiting_bottom_sheet.dart +++ b/lib/views/widgets/bottom_sheets/request_approval_waiting_bottom_sheet.dart @@ -31,22 +31,25 @@ class _RequestApprovalBottomState extends State { print('listen for approval called..'); if (Platform.isAndroid && !(await isGoogleServicesAvailable())) { h_push.Push.onMessageReceivedStream.listen((h_push.RemoteMessage remoteMessage) { - print("onMessageReceivedStream:${remoteMessage.toMap()}"); + // ConfirmArrivalNotificationModel notificationModel = ConfirmArrivalNotificationModel.fromJson(remoteMessage); + // if(notificationModel.requestId!=null&¬ificationModel.accept!=null){ + // if(notificationModel.accept=='True'){ + // Navigator.pop(context, true); + // }else if(notificationModel.accept=='False'){ + // Navigator.pop(context, false); + // } + // } }, onError: (Object error) { - print("onMessageReceivedStream:${error?.toString()}"); + print("onMessageReceivedStream:${error.toString()}"); }); } else { FirebaseMessaging.onMessage.listen((RemoteMessage message) { - print('mesage ${message.data}'); ConfirmArrivalNotificationModel notificationModel = ConfirmArrivalNotificationModel.fromJson(message.data); - print('notification model i got is ${notificationModel.toJson()}'); if(notificationModel.requestId!=null&¬ificationModel.accept!=null){ - print('accept value is ${notificationModel.accept==false}'); - if(notificationModel.accept!=null&&!notificationModel.accept!){ - ServiceRequestDetailProvider requestDetailProvider = Provider.of(context,listen: false); - requestDetailProvider.getWorkOrderById(id: notificationModel.requestId??0); - Navigator.pop(context, true); + if(notificationModel.accept=='True'){ Navigator.pop(context, true); + }else if(notificationModel.accept=='False'){ + Navigator.pop(context, false); } } // Map messageData = message.data; @@ -75,6 +78,8 @@ class _RequestApprovalBottomState extends State { @override void dispose() { + print('bottomsheet disposed..'); + super.dispose(); } @@ -115,10 +120,10 @@ class _RequestApprovalBottomState extends State { } class ConfirmArrivalNotificationModel { final String? transactionType; - final int? requestId; + final String? requestId; final String? notificationType; final String? userId; - final bool? accept; + final String? accept; ConfirmArrivalNotificationModel({ this.transactionType,