handleNotificationActions static method

Future<void> handleNotificationActions(
  1. String type,
  2. dynamic event, {
  3. void navHandler(
    1. String url
    )?,
})

Implementation

static Future<void> handleNotificationActions(
  String type,
  dynamic event, {
  void Function(String url)? navHandler,
}) async {
  try {
    String url = '';
    String action = '';

    if (type == 'clicked') {
      action = event['pressAction']?['id'] ?? '';
      final data = event['notification']?['data'] ?? {};

      switch (action) {
        case 'default':
          url = data['url'] ?? '';
          break;
        case 'action-1':
          url = data['action1_url'] ?? '';
          break;
        case 'action-2':
          url = data['action2_url'] ?? '';
          break;
        case 'action-3':
          url = data['action3_url'] ?? '';
          break;
      }
    }

    final messageId = event['notification']?['data']?['message_id'];
    NotificationHelper.sendNotificationStatus(messageId, type,
        failureReason: '', buttonId: action);

    if (url.isNotEmpty) {
      if (navHandler != null) {
        navHandler(url);
      } else {
        if (await canLaunchUrl(Uri.parse(url))) {
          await launchUrl(Uri.parse(url));
        } else {
        }
      }
    }
  // ignore: empty_catches
  } catch (e) {
  }
}