requestNotificationPermissionWeb method

Future<String> requestNotificationPermissionWeb()

Implementation

Future<String> requestNotificationPermissionWeb() async {
  try {
    // Check if notifications are supported
    debugPrint('Checking notification support...');
    try {
      final permission = web.Notification.permission;
      debugPrint('Notification permission API available: $permission');
    } catch (e) {
      debugPrint('Notifications not supported: $e');
      return 'unsupported';
    }

    final permissions = web.window.navigator.permissions;
    final queryOptions = {'name': 'notifications'}.jsify() as JSObject;
    final result = await permissions.query(queryOptions).toDart;

    final state = result.state;
    if (state == 'granted') {
      return 'granted';
    } else if (state == 'denied') {
      return 'denied';
    } else if (state == 'prompt') {
      // Request permission
      final permission = await web.Notification.requestPermission().toDart;
      return permission.toDart == 'granted' ? 'granted' : 'denied';
    }

    return 'denied';
  } catch (e) {
    debugPrint('Notification permission error: $e');
    return 'error';
  }
}