diff --git a/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart b/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart index 4bb1a0fd..81d232fa 100644 --- a/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart +++ b/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart @@ -239,8 +239,8 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency ?? "ريال").toLowerCase() == "ريال")), ], ).paddingSymmetrical(24.h, 0.h), - // (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.total == "0" || immediateLiveCareVM.liveCareImmediateAppointmentFeesList.total == "0.0") - (true) + (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.total == "0" || immediateLiveCareVM.liveCareImmediateAppointmentFeesList.total == "0.0") + // (true) ? CustomButton( text: LocaleKeys.confirmLiveCare.tr(context: context), onPressed: () async { @@ -357,24 +357,25 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { } Future askVideoCallPermission(BuildContext context) async { - final statuses = await LiveCarePermissionService.instance.requestCameraMicAndNotification(context); + final statuses = await LiveCarePermissionService.instance.requestCameraMicAndNotification(false, context); // If service returned nothing (error), treat as not granted if (statuses.isEmpty) return false; - bool cameraGranted = statuses[Permission.camera]?.isGranted ?? false; - bool micGranted = statuses[Permission.microphone]?.isGranted ?? false; + // bool cameraGranted = statuses[Permission.camera]?.isGranted ?? false; + // bool micGranted = statuses[Permission.microphone]?.isGranted ?? false; bool notifGranted = statuses[Permission.notification]?.isGranted ?? false; // bool alertWindowGranted = Platform.isAndroid ? (statuses[Permission.systemAlertWindow]?.isGranted ?? false) : true; bool alertWindowGranted = true; // If all required permissions are already granted - if (cameraGranted && micGranted && notifGranted && alertWindowGranted) return true; + // if (cameraGranted && micGranted && notifGranted && alertWindowGranted) return true; + if (notifGranted && alertWindowGranted) return true; // Collect only the missing permissions final missing = []; - if (!cameraGranted) missing.add(Permission.camera); - if (!micGranted) missing.add(Permission.microphone); + // if (!cameraGranted) missing.add(Permission.camera); + // if (!micGranted) missing.add(Permission.microphone); if (!notifGranted) missing.add(Permission.notification); if (Platform.isAndroid && !alertWindowGranted) missing.add(Permission.systemAlertWindow); @@ -415,8 +416,8 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { } // Update grant state (preserve previously granted ones) - cameraGranted = newStatuses[Permission.camera]?.isGranted ?? cameraGranted; - micGranted = newStatuses[Permission.microphone]?.isGranted ?? micGranted; + // cameraGranted = newStatuses[Permission.camera]?.isGranted ?? cameraGranted; + // micGranted = newStatuses[Permission.microphone]?.isGranted ?? micGranted; notifGranted = newStatuses[Permission.notification]?.isGranted ?? notifGranted; alertWindowGranted = newStatuses[Permission.systemAlertWindow]?.isGranted ?? alertWindowGranted; @@ -435,7 +436,8 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { } // return cameraGranted && micGranted && notifGranted && alertWindowGranted; - return cameraGranted && micGranted && notifGranted; + // return cameraGranted && micGranted && notifGranted; + return notifGranted; } // Future askVideoCallPermission() async { diff --git a/lib/presentation/tele_consultation/zoom/call_screen.dart b/lib/presentation/tele_consultation/zoom/call_screen.dart index f499bba0..2d3e9dbf 100644 --- a/lib/presentation/tele_consultation/zoom/call_screen.dart +++ b/lib/presentation/tele_consultation/zoom/call_screen.dart @@ -92,7 +92,7 @@ class _CallScreenState extends State { useEffect(() { Future.microtask(() async { - final statuses = await LiveCarePermissionService.instance.requestCameraMicAndNotification(context); + final statuses = await LiveCarePermissionService.instance.requestCameraMicAndNotification(true, context); bool cameraGranted = statuses[Permission.camera]?.isGranted ?? false; bool micGranted = statuses[Permission.microphone]?.isGranted ?? false; if (cameraGranted && micGranted) { @@ -623,7 +623,7 @@ class _CallScreenState extends State { } void onPressAudio() async { - final statuses = await LiveCarePermissionService.instance.requestCameraMicAndNotification(context); + final statuses = await LiveCarePermissionService.instance.requestCameraMicAndNotification(true, context); bool cameraGranted = statuses[Permission.camera]?.isGranted ?? false; bool micGranted = statuses[Permission.microphone]?.isGranted ?? false; @@ -650,7 +650,7 @@ class _CallScreenState extends State { } void onPressVideo() async { - final statuses = await LiveCarePermissionService.instance.requestCameraMicAndNotification(context); + final statuses = await LiveCarePermissionService.instance.requestCameraMicAndNotification(true, context); bool cameraGranted = statuses[Permission.camera]?.isGranted ?? false; bool micGranted = statuses[Permission.microphone]?.isGranted ?? false; diff --git a/lib/services/livecare_permission_service.dart b/lib/services/livecare_permission_service.dart index b8d71ff1..bc5f2eef 100644 --- a/lib/services/livecare_permission_service.dart +++ b/lib/services/livecare_permission_service.dart @@ -18,7 +18,7 @@ class LiveCarePermissionService { /// Requests camera, microphone and notification permissions together and /// returns the final map of permission statuses. /// This method does NOT show any dialogs — UI decisions must be done by caller. - Future> requestCameraMicAndNotification(BuildContext context) async { + Future> requestCameraMicAndNotification(bool isCheckCameraMicPermissions, BuildContext context) async { if (_ongoingRequest != null) { return _ongoingRequest!.future; } @@ -26,10 +26,17 @@ class LiveCarePermissionService { _ongoingRequest = Completer>(); final completer = _ongoingRequest!; - final permissions = [ - Permission.camera, + final permissions = isCheckCameraMicPermissions + ? [ + Permission.camera, Permission.microphone, - Permission.notification, + Permission.notification, + if (Platform.isAndroid) Permission.systemAlertWindow, + ] + : [ + // Permission.camera, + // Permission.microphone, + Permission.notification, if (Platform.isAndroid) Permission.systemAlertWindow, ];