diff --git a/src/stores/RoomViewStore.tsx b/src/stores/RoomViewStore.tsx index faf54f1a8f..743f6c4f74 100644 --- a/src/stores/RoomViewStore.tsx +++ b/src/stores/RoomViewStore.tsx @@ -445,13 +445,21 @@ export class RoomViewStore extends EventEmitter { this.setState(newState); if (payload.auto_join) { - this.dis?.dispatch({ + const joinPayload: JoinRoomPayload = { ...payload, action: Action.JoinRoom, roomId: payload.room_id, metricsTrigger: payload.metricsTrigger as JoinRoomPayload["metricsTrigger"], canAskToJoin: SettingsStore.getValue("feature_ask_to_join"), - }); + }; + // Explicitly pass viaServers in case state doesn't contain the same due to + // some race issues. + if (payload.via_servers) { + joinPayload.opts = { + viaServers: payload.via_servers, + }; + } + this.dis?.dispatch(joinPayload); } if (room) {