MethodChannelFlutterselligent constructor

MethodChannelFlutterselligent()

Implementation

MethodChannelFlutterselligent() {
  log.onRecord.listen((record) {
    debugPrint('[FlutterSelligent] ${record.message}');
  });

  if (Platform.environment.containsKey('FLUTTER_TEST')) { return; }

  methodChannel.setMethodCallHandler((call) async {
    var eventType = call.arguments['broadcastEventType'];
    var data = getData(call.arguments['data']);

    if (call.method == 'broadcastEvent') {
      if (eventType == BroadcastEventType.buttonClick.value) {
        handleEvents(BroadcastEvent(
          BroadcastEventType.buttonClick,
          ButtonData(
            data['id'] as String,
            data['label'] as String,
            NotificationButtonType.getByValue(data['type'] as int),
            data['value'] as String,
            data['data']
          )
        ));
      }
      else if (eventType == BroadcastEventType.universalLink.value) {
        handleEvents(BroadcastEvent(
          BroadcastEventType.universalLink,
          UniversalLinkData(data['url'] as String)
        ));
      }
      else if (eventType == BroadcastEventType.receivedNotification.value) {
        handleEvents(BroadcastEvent(
          BroadcastEventType.receivedNotification,
          NotificationData(
            data['pushId'] as String,
            data['name'] as String
          )
        ));
      }
      else if (eventType == BroadcastEventType.receivedIAM.value) {
        List<InAppMessageEventData> newMessages = [];

        for (var message in data['messages']) {
          newMessages.add(InAppMessageEventData(message['id'] as String, message['title'] as String));
        }

        handleEvents(BroadcastEvent(
          BroadcastEventType.receivedIAM,
          InAppMessageEventListData(
            newMessages
          )
        ));
      }
      else if (eventType == BroadcastEventType.receiveDeviceId.value) {
        handleEvents(BroadcastEvent(
          BroadcastEventType.receiveDeviceId,
          DeviceIdData(data['deviceId'] as String)
        ));
      }
      else if (eventType == BroadcastEventType.receivedGcmToken.value) {
        handleEvents(BroadcastEvent(
          BroadcastEventType.receivedGcmToken,
          GcmTokenData(data['token'] as String)
        ));
      }
      else if (eventType == BroadcastEventType.displayingIAM.value) {
        var messageId = data['id'] as String;

        await displayIAM(messageId);

        handleEvents(BroadcastEvent(
          BroadcastEventType.displayingIAM,
          InAppMessageEventData(
            messageId,
            data['title'] as String
          )
        ));
      }
      else if (eventType == BroadcastEventType.displayNotification.value) {
        handleEvents(BroadcastEvent(BroadcastEventType.displayNotification, null));
      }
      else if (eventType == BroadcastEventType.dismissNotification.value) {
        displayingIAM = "";
        handleEvents(BroadcastEvent(BroadcastEventType.dismissNotification, null));
      }
      else if (call.arguments['name'] == BroadcastEventType.customEvent.value) {
        handleEvents(BroadcastEvent(BroadcastEventType.customEvent, eventType));
      }
    }
    else {
      log.warning('Method not implemented: ${call.method}');
    }
  });
}