checkSingleContactPermission method

Future<bool> checkSingleContactPermission(
  1. BuildContext context
)

Implementation

Future<bool> checkSingleContactPermission(BuildContext context) async {
  final isDeviceContactEnabled = await _prefs.get(enableDeviceContacts);
  if (isDeviceContactEnabled.isBlank) {
    final status = await checkAndRequestPermissions(
      context,
      permission: Permission.contacts,
      title: (intl) => "Save to iOS Contacts?",
      subtitleWidget:
          Text("When you update a contact in Sunny, would you like the option to apply the change to your iOS contacts?"),
    );
    switch (status) {
      case SunnyPermissionStatus.rejected:
        await _prefs.set(enableDeviceContacts, false);
        return false;
      case SunnyPermissionStatus.granted:
        await _prefs.set(enableDeviceContacts, true);
        return true;
      case SunnyPermissionStatus.later:
        await _prefs.set(enableDeviceContacts, false);
        return false;
      default:
        return false;
    }
  } else {
    /// THey've opted out of the behavior
    if (isDeviceContactEnabled != "true") {
      return false;
    }

    PermissionStatus status = await Permission.contacts.status;
    return status == PermissionStatus.granted;
  }
}