joinRoom method
Joins a Multi-User Chat room.
Joins the specified MUC room using the provided nickname. Sends a presence
stanza with the appropriate attributes to join the room. Returns a Result
with a boolean value indicating success or failure, or an MUCError
if applicable.
Implementation
Future<Result<bool, MUCError>> joinRoom(
JID roomJid,
String nick, {
int? maxHistoryStanzas,
}) async {
if (nick.isEmpty) {
return Result(NoNicknameSpecified());
}
final completer =
await _cacheLock.synchronized<Completer<Result<bool, MUCError>>>(
() {
_mucRoomCache[roomJid] = RoomState(
roomJid: roomJid,
nick: nick,
joined: false,
);
final completer = Completer<Result<bool, MUCError>>();
_mucRoomJoinCompleter[roomJid] = completer;
return completer;
},
);
await _sendMucJoin(roomJid, nick, maxHistoryStanzas);
return completer.future;
}