joinRoom method

Future<WhiteRoom> joinRoom({
  1. required RoomOptions options,
  2. RoomStateChangedCallback? onRoomStateChanged,
  3. RoomPhaseChangedCallback? onRoomPhaseChanged,
  4. RoomDisconnectedCallback? onRoomDisconnected,
  5. RoomKickedCallback? onRoomKicked,
  6. UndoStepsUpdatedCallback? onCanUndoStepsUpdate,
  7. RedoStepsUpdatedCallback? onCanRedoStepsUpdate,
  8. RoomErrorCallback? onRoomError,
})

Implementation

Future<WhiteRoom> joinRoom({
  required RoomOptions options,
  RoomStateChangedCallback? onRoomStateChanged,
  RoomPhaseChangedCallback? onRoomPhaseChanged,
  RoomDisconnectedCallback? onRoomDisconnected,
  RoomKickedCallback? onRoomKicked,
  UndoStepsUpdatedCallback? onCanUndoStepsUpdate,
  RedoStepsUpdatedCallback? onCanRedoStepsUpdate,
  RoomErrorCallback? onRoomError,
}) {
  var completer = Completer<WhiteRoom>();
  var room = WhiteRoom(
    dsBridge: dsBridge,
    options: options,
    onRoomStateChanged: onRoomStateChanged,
    onRoomPhaseChanged: onRoomPhaseChanged,
    onRoomDisconnected: onRoomDisconnected,
    onRoomKicked: onRoomKicked,
    onCanUndoStepsUpdate: onCanUndoStepsUpdate,
    onCanRedoStepsUpdate: onCanRedoStepsUpdate,
    onRoomError: onRoomError,
  );
  dsBridge.callHandler("sdk.joinRoom", [options.toJson()], ([value]) {
    var error = WhiteException.parseValueError(value);
    if (error == null) {
      room._initRoomState(jsonDecode(value));
      completer.complete(room);
    } else {
      completer.completeError(error);
    }
  });
  return completer.future;
}