OmicallSDKController constructor

OmicallSDKController()

Implementation

OmicallSDKController() {
  _methodChannel.setMethodCallHandler((call) async {
    final method = call.method;
    final data = call.arguments;
    debugPrint("method OmicallSDKController:: $method  --> data: $data");

    switch (method) {
      case OmiEventList.onMuted:
        muteListener?.call(data);
        return;
     case OmiEventList.onHold:
        bool result = false;
        try {
          result = data["isHold"] as bool;
        } catch (e) {
          if (data is bool) {
            result = data;
          } else {
            debugPrint("Error extracting 'isHold': $e, data is not a bool: $data");
          }
        }
        holdListener?.call(result);
        return;
      case OmiEventList.onSpeaker:
        speakerListener?.call(data);
        return;
      case OmiEventList.onRemoteVideoReady:
        final param = {"name": method, "data": data};
        videoListener?.call(param);
        return;
      case OmiEventList.onMissedCall:
        missedCallListener?.call(data);
        return;
      case OmiEventList.onCallQuality:
        callQualityListener?.call(data);
        return;
      case OmiEventList.onHistoryCallLog:
        callLogListener?.call(data);
        return;
      case OmiEventList.onAudioChanged:
        final rawData = data["data"];
        final correctData = rawData is List ? rawData : [rawData];
        audioChangedListener?.call(correctData);
        return;
      default:
        _callStateChangeController.sink.add(
          OmiAction(
            actionName: method,
            data: data ?? <dynamic, dynamic>{},
          ),
        );
    }
  });
}