notificationHandler static method

void notificationHandler(
  1. String notiJson
)

Implementation

static void notificationHandler(String notiJson) {
  if (kDebugMode) print("Notified $notiJson");
  final Map notification = jsonDecode(notiJson);
  final data = notification["data"];
  final bool inPreview = notification["inPreview"] ?? false;

  switch (notification["type"]) {
    case "JOINED":
      _meetingStreamController.sink.add({
        "event_name": "on_join_room",
        "data": {"room": data}
      });
      break;
    case "ROOM_UPDATED":
      {
        final args = {"event_name": "on_room_update", "data": data};
        _meetingStreamController.sink.add(args);
        if (inPreview) {
          _previewStreamController.sink.add(args);
        }
        break;
      }
    case 'HMS_STAT':
      {
        _rtcStreamController.sink
            .add({"event_name": notification["event"], "data": data});
        break;
      }
    case "PEER_LIST":
      //print('$data are the peers in the room'); // received right after join
      break;
    case "NEW_MESSAGE":
      _meetingStreamController.sink
          .add({"event_name": "on_message", "data": data});
      break;
    case "ERROR":
      {
        final args = {
          "event_name": "on_error",
          "data": {"error": data}
        };
        _meetingStreamController.sink.add(args);
        if (inPreview) {
          _previewStreamController.sink.add(args);
        }
        break;
      }
    case "RECONNECTING":
      _meetingStreamController.sink.add({
        "event_name": "on_re_connecting",
      });
      break;
    case "RECONNECTED":
      _meetingStreamController.sink.add({
        "event_name": "on_re_connected",
      });
      break;
    case 'PEER_UPDATE':
      {
        final args = {
          "event_name": "on_peer_update",
          "data": {
            'peer': data,
            'update': notification['update'],
          }
        };
        _meetingStreamController.sink.add(args);
        if (inPreview) {
          _previewStreamController.sink.add(args);
        }
        break;
      }
    case 'TRACK_UPDATE':
      _meetingStreamController.sink.add({
        "event_name": "on_track_update",
        "data": {
          'track': data,
          'peer': notification['peer'],
          'update': notification['update'],
        }
      });
      break;
    case "ROOM_ENDED":
      _meetingStreamController.sink
          .add({"event_name": "on_removed_from_room", "data": data});
      break;
    case "REMOVED_FROM_ROOM":
      _meetingStreamController.sink
          .add({"event_name": "on_removed_from_room", "data": data});
      break;
    case "DEVICE_CHANGE_UPDATE":
      //print('device changed - $data');
      break;
    default:
      break;
  }
}