checkPermissionStatus method

Future<(NotificationFailure?, PermissionStatus)> checkPermissionStatus()

Checks the current status of all notification permissions.

Implementation

Future<(NotificationFailure?, PermissionStatus)>
checkPermissionStatus() async {
  try {
    final (NotificationFailure? error, bool? enabled) = await _repository
        .areNotificationsEnabled();

    if (error != null) {
      return (error, PermissionStatus.unknown);
    }

    if (enabled != true) {
      return (null, PermissionStatus.denied);
    }

    final PermissionStatus platformStatus =
        await _checkPlatformSpecificPermissions();
    final PermissionStatus finalStatus = _combinePermissionStatus(
      PermissionStatus.granted,
      platformStatus,
    );

    return (null, finalStatus);
  } catch (e, stackTrace) {
    return (
      NotificationFailure.permission(
        details: e.toString(),
        stackTrace: stackTrace,
      ),
      PermissionStatus.unknown,
    );
  }
}