forked from cadence/out-of-your-element
Remove useless loop
This commit is contained in:
parent
344822cec0
commit
5e4bea6ce6
1 changed files with 18 additions and 22 deletions
|
@ -71,7 +71,6 @@ as.router.get("/log-in-with-matrix", defineEventHandler(async event => {
|
||||||
as.router.post("/api/log-in-with-matrix", defineEventHandler(async event => {
|
as.router.post("/api/log-in-with-matrix", defineEventHandler(async event => {
|
||||||
const api = getAPI(event)
|
const api = getAPI(event)
|
||||||
const {mxid, next} = await readValidatedBody(event, schema.form.parse)
|
const {mxid, next} = await readValidatedBody(event, schema.form.parse)
|
||||||
let roomID = null
|
|
||||||
|
|
||||||
// Don't extend a duplicate invite for the same user
|
// Don't extend a duplicate invite for the same user
|
||||||
for (const alreadyInvited of validToken.values()) {
|
for (const alreadyInvited of validToken.values()) {
|
||||||
|
@ -80,31 +79,27 @@ as.router.post("/api/log-in-with-matrix", defineEventHandler(async event => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// See if we can reuse an existing room from account data
|
// Get list of existing DMs from account data
|
||||||
let directData = {}
|
let directData = {}
|
||||||
try {
|
try {
|
||||||
directData = await api.getAccountData("m.direct")
|
directData = await api.getAccountData("m.direct")
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
const rooms = directData[mxid] || []
|
let roomID = directData[mxid]?.at(-1)
|
||||||
for (const candidate of rooms) {
|
|
||||||
// Check that the person is/still in the room
|
|
||||||
let member
|
|
||||||
try {
|
|
||||||
member = await api.getStateEvent(candidate, "m.room.member", mxid)
|
|
||||||
} catch (e) {}
|
|
||||||
if (!member || member.membership === "leave") {
|
|
||||||
// We can reinvite them back to the same room!
|
|
||||||
await api.inviteToRoom(candidate, mxid)
|
|
||||||
roomID = candidate
|
|
||||||
} else {
|
|
||||||
// Member is in this room
|
|
||||||
roomID = candidate
|
|
||||||
}
|
|
||||||
if (roomID) break // no need to check other candidates
|
|
||||||
}
|
|
||||||
|
|
||||||
// No candidates available, create a new room and invite
|
// Reuse an existing DM, if able
|
||||||
if (!roomID) {
|
if (typeof roomID === "string") {
|
||||||
|
// Check that the person is/still in the room
|
||||||
|
try {
|
||||||
|
var member = await api.getStateEvent(roomID, "m.room.member", mxid)
|
||||||
|
} catch (e) {}
|
||||||
|
|
||||||
|
// Invite them back to the room if needed
|
||||||
|
if (!member || member.membership === "leave") {
|
||||||
|
await api.inviteToRoom(roomID, mxid)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// No existing DMs, create a new room and invite
|
||||||
|
else {
|
||||||
roomID = await api.createRoom({
|
roomID = await api.createRoom({
|
||||||
invite: [mxid],
|
invite: [mxid],
|
||||||
is_direct: true,
|
is_direct: true,
|
||||||
|
@ -116,7 +111,6 @@ as.router.post("/api/log-in-with-matrix", defineEventHandler(async event => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const token = randomUUID()
|
const token = randomUUID()
|
||||||
validToken.set(token, mxid)
|
|
||||||
|
|
||||||
console.log(`web log in requested for ${mxid}`)
|
console.log(`web log in requested for ${mxid}`)
|
||||||
const paramsObject = {token}
|
const paramsObject = {token}
|
||||||
|
@ -129,5 +123,7 @@ as.router.post("/api/log-in-with-matrix", defineEventHandler(async event => {
|
||||||
body
|
body
|
||||||
})
|
})
|
||||||
|
|
||||||
|
validToken.set(token, mxid)
|
||||||
|
|
||||||
return sendRedirect(event, "../ok?msg=Please check your inbox on Matrix!&spot=SpotMailXL", 302)
|
return sendRedirect(event, "../ok?msg=Please check your inbox on Matrix!&spot=SpotMailXL", 302)
|
||||||
}))
|
}))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue