pull/289/head
haroon amjad 12 hours ago
parent 83f816e271
commit 2fd4a3e1a7

@ -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<bool> 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 = <Permission>[];
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<bool> askVideoCallPermission() async {

@ -92,7 +92,7 @@ class _CallScreenState extends State<CallScreen> {
useEffect(() {
Future<void>.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<CallScreen> {
}
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<CallScreen> {
}
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;

@ -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<Map<Permission, PermissionStatus>> requestCameraMicAndNotification(BuildContext context) async {
Future<Map<Permission, PermissionStatus>> requestCameraMicAndNotification(bool isCheckCameraMicPermissions, BuildContext context) async {
if (_ongoingRequest != null) {
return _ongoingRequest!.future;
}
@ -26,11 +26,18 @@ class LiveCarePermissionService {
_ongoingRequest = Completer<Map<Permission, PermissionStatus>>();
final completer = _ongoingRequest!;
final permissions = <Permission>[
final permissions = isCheckCameraMicPermissions
? <Permission>[
Permission.camera,
Permission.microphone,
Permission.notification,
if (Platform.isAndroid) Permission.systemAlertWindow,
]
: <Permission>[
// Permission.camera,
// Permission.microphone,
Permission.notification,
if (Platform.isAndroid) Permission.systemAlertWindow,
];
try {

Loading…
Cancel
Save