handleContactPermissionFlow function

Future<bool> handleContactPermissionFlow(
  1. BuildContext context,
  2. PermissionService permissionService
)

Implementation

Future<bool> handleContactPermissionFlow(BuildContext context, PermissionService permissionService) async {
  final isGranted = await permissionService.requestContactsPermission();

  if (isGranted) return true;

  if (!context.mounted) return false;

  final alertDialog = AlertDialog(
    title: const Text("Contacts Permission Required"),
    content: const Text(
      "To use become a Champion, please enable contact sync. Go to your app settings and turn on contact permissions.",
    ),
    actions: [
      TextButton(
        onPressed: () {
          Navigator.pop(context);
          ScaffoldMessenger.of(context).showSnackBar(
            const SnackBar(
              content: Text(
                'Contacts sync is required for Becoming a Champion!',
                style: TextStyle(fontSize: 12, color: Colors.white),
              ),
            ),
          );
        },
        child: const Text("Cancel"),
      ),
      TextButton(
        onPressed: () async {
          Navigator.pop(context);
          await openAppSettings();
        },
        child: const Text("Open Settings"),
      ),
    ],
  );

  showDialog(context: context, builder: (_) => alertDialog);

  return false;
}