joinRoom function
Implementation
Future<String?> joinRoom(
BuildContext context,
WidgetRef ref,
String displayMsg,
String roomIdOrAlias,
String? server,
Function(String)? forward,
) async {
EasyLoading.show(status: displayMsg);
final client = ref.read(alwaysClientProvider);
try {
final newRoom = await client.joinRoom(roomIdOrAlias, server);
final roomId = newRoom.roomIdStr();
EasyLoading.dismiss();
// ensure we re-evaluate the room data on our end. This is necessary
// if we knew of the room prior (e.g. we had left it), but hadn’t joined
// this should properly re-evaluate all possible readers
ref.invalidate(maybeRoomProvider(roomId));
ref.invalidate(chatProvider(roomId));
ref.invalidate(spaceProvider(roomId));
if (forward != null) forward(roomId);
return roomId;
} catch (e, s) {
_log.severe('Failed to join room', e, s);
if (!context.mounted) {
EasyLoading.dismiss();
return null;
}
EasyLoading.showError(
L10n.of(context).joiningFailed(e),
duration: const Duration(seconds: 3),
);
return null;
}
}