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 => {
 | 
			
		||||
	const api = getAPI(event)
 | 
			
		||||
	const {mxid, next} = await readValidatedBody(event, schema.form.parse)
 | 
			
		||||
	let roomID = null
 | 
			
		||||
 | 
			
		||||
	// Don't extend a duplicate invite for the same user
 | 
			
		||||
	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 = {}
 | 
			
		||||
	try {
 | 
			
		||||
		directData = await api.getAccountData("m.direct")
 | 
			
		||||
	} catch (e) {}
 | 
			
		||||
	const rooms = directData[mxid] || []
 | 
			
		||||
	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
 | 
			
		||||
	}
 | 
			
		||||
	let roomID = directData[mxid]?.at(-1)
 | 
			
		||||
 | 
			
		||||
	// No candidates available, create a new room and invite
 | 
			
		||||
	if (!roomID) {
 | 
			
		||||
	// Reuse an existing DM, if able
 | 
			
		||||
	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({
 | 
			
		||||
			invite: [mxid],
 | 
			
		||||
			is_direct: true,
 | 
			
		||||
| 
						 | 
				
			
			@ -116,7 +111,6 @@ as.router.post("/api/log-in-with-matrix", defineEventHandler(async event => {
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	const token = randomUUID()
 | 
			
		||||
	validToken.set(token, mxid)
 | 
			
		||||
 | 
			
		||||
	console.log(`web log in requested for ${mxid}`)
 | 
			
		||||
	const paramsObject = {token}
 | 
			
		||||
| 
						 | 
				
			
			@ -129,5 +123,7 @@ as.router.post("/api/log-in-with-matrix", defineEventHandler(async event => {
 | 
			
		|||
		body
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	validToken.set(token, mxid)
 | 
			
		||||
 | 
			
		||||
	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