From 1a8a83a925e8e7d014ec90b052ea668545075f23 Mon Sep 17 00:00:00 2001 From: nwuensche Date: Sun, 16 Feb 2025 16:40:52 +0100 Subject: [PATCH] Check for permissions --- lib/ui/setup/pair_page.dart | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/lib/ui/setup/pair_page.dart b/lib/ui/setup/pair_page.dart index 8389b949..69864046 100644 --- a/lib/ui/setup/pair_page.dart +++ b/lib/ui/setup/pair_page.dart @@ -24,6 +24,8 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; final ConnectionControl connectionControl = ConnectionControl(); final UiConnectionControl uiConnectionControl = UiConnectionControl(); final ScanControl scanControl = ScanControl(); +final PermissionCheck permissionCheck = PermissionCheck(); +final PermissionControl permissionControl = PermissionControl(); class PairPage extends HookConsumerWidget implements CobbleScreen { final bool fromLanding; @@ -99,11 +101,22 @@ class PairPage extends HookConsumerWidget implements CobbleScreen { }, [scan, /*pair,*/ connectionState]); useEffect(() { - if (Platform.isIOS) { - scanControl.startBleScan(); - } else { - scanControl.startClassicScan(); + Future initializeScan() async { + // Check and request permissions before starting scan + if (!(await permissionCheck.hasLocationPermission()).value!) { + await permissionControl.requestLocationPermission(); + } + await permissionControl.requestBluetoothPermissions(); + + // Start scan after permissions are granted + if (Platform.isIOS) { + scanControl.startBleScan(); + } else { + scanControl.startClassicScan(); + } } + + initializeScan(); return null; }, []);