preemptively cache members as we find them
This commit is contained in:
		
							parent
							
								
									3ebfa8e3a7
								
							
						
					
					
						commit
						3f2a8d959c
					
				
					 3 changed files with 12 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -80,7 +80,7 @@ async function getMemberFromCacheOrHomeserver(roomID, mxid, api) {
 | 
			
		|||
	const row = db.prepare("SELECT displayname, avatar_url FROM member_cache WHERE room_id = ? AND mxid = ?").get(roomID, mxid)
 | 
			
		||||
	if (row) return row
 | 
			
		||||
	return api.getStateEvent(roomID, "m.room.member", mxid).then(event => {
 | 
			
		||||
		db.prepare("INSERT INTO member_cache (room_id, mxid, displayname, avatar_url) VALUES (?, ?, ?, ?)").run(roomID, mxid, event?.displayname || null, event?.avatar_url || null)
 | 
			
		||||
		db.prepare("REPLACE INTO member_cache (room_id, mxid, displayname, avatar_url) VALUES (?, ?, ?, ?)").run(roomID, mxid, event?.displayname || null, event?.avatar_url || null)
 | 
			
		||||
		return event
 | 
			
		||||
	}).catch(() => {
 | 
			
		||||
		return {displayname: null, avatar_url: null}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -91,3 +91,13 @@ async event => {
 | 
			
		|||
	const name = event.content.name || null
 | 
			
		||||
	db.prepare("UPDATE channel_room SET nick = ? WHERE room_id = ?").run(name, event.room_id)
 | 
			
		||||
}))
 | 
			
		||||
 | 
			
		||||
sync.addTemporaryListener(as, "type:m.room.member", guard("m.room.member",
 | 
			
		||||
/**
 | 
			
		||||
 * @param {Ty.Event.StateOuter<Ty.Event.M_Room_Member>} event
 | 
			
		||||
 */
 | 
			
		||||
async event => {
 | 
			
		||||
	if (event.state_key[0] !== "@") return
 | 
			
		||||
	if (utils.eventSenderIsFromDiscord(event.sender)) return
 | 
			
		||||
	db.prepare("REPLACE INTO member_cache (room_id, mxid, displayname, avatar_url) VALUES (?, ?, ?, ?)").run(event.room_id, event.sender, event.content.displayname || null, event.content.avatar_url || null)
 | 
			
		||||
}))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								types.d.ts
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								types.d.ts
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -80,7 +80,7 @@ export namespace Event {
 | 
			
		|||
 | 
			
		||||
	export type M_Room_Member = {
 | 
			
		||||
		membership: string
 | 
			
		||||
		display_name?: string
 | 
			
		||||
		displayname?: string
 | 
			
		||||
		avatar_url?: string
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue