Fix matrix api joinRoom() for remote rooms #60
2 changed files with 3 additions and 3 deletions
|
|
@ -76,13 +76,13 @@ as.router.post("/api/link-space", defineEventHandler(async event => {
|
|||
if (existing) throw createError({status: 400, message: "Bad Request", data: `Guild ID ${guildID} or space ID ${spaceID} are already bridged and cannot be reused`})
|
||||
|
||||
const inviteSender = select("invite", "mxid", {mxid: session.data.mxid, room_id: spaceID}).pluck().get()
|
||||
const via = [ inviteSender?.match(/:(.*)/)?.[1] ?? "" ]
|
||||
const via = [ inviteSender?.match(/:(.*)/)?.[1] ?? "" ]
|
||||
|
||||
|
|
||||
// Check space exists and bridge is joined
|
||||
try {
|
||||
await api.joinRoom(parsedBody.space_id, null, via)
|
||||
} catch (e) {
|
||||
throw createError({status: 400, message: "Unable To Join", data: `Unable to join the requested Matrix space. Please invite the bridge to the space and try again. (Server said: ${e.errcode} - ${e.message})`})
|
||||
throw createError({status: 400, message: "Unable To Join", data: `Unable to join the requested Matrix space. Please invite the bridge to the space and try again. (Server said: ${e.errcode} - ${e.message})`})
|
||||
}
|
||||
|
||||
// Check bridge has PL 100
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ test("web link space: check that OOYE is joined", async t => {
|
|||
}
|
||||
}
|
||||
}))
|
||||
t.equal(error.data, "M_FORBIDDEN - not allowed to join I guess")
|
||||
t.equal(error.data, "Unable to join the requested Matrix space. Please invite the bridge to the space and try again. (Server said: M_FORBIDDEN - not allowed to join I guess)")
|
||||
t.equal(called, 1)
|
||||
})
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue
Where are you going to find
viahere?Hmmm, I didn't change that because the bridge needed to be manually invited to the space so that it can be selected.
However indeed, if the bridge is invited to the space, then kicked, the button to the space remains and if clicked, we have the same issue than for joining rooms, didn't notice that.
From the Client-Server API doc there doesn't seem to be "via" or "server_name" information on the
m.room.memberevent, so I'm not sure.I guess it should be safe to take the HS part of the user from
senderin them.room.member: as this user is able to send an invite, the space must be reachable through the inviter's HS(unless the invite is old, all users from this HS left the space, and the room was purged from the HS, but nothing we can do about that)
Last commit uses that, should we add a check to enrich the error message too if for some reasons we cannot detect the via?
Added the error message asking to manually invite in case if /api/link-space joinRoom fails, similarly to /api/link