Store invites in database
This commit is contained in:
		
							parent
							
								
									f9be1e39a1
								
							
						
					
					
						commit
						978eb40e1d
					
				
					 3 changed files with 24 additions and 0 deletions
				
			
		
							
								
								
									
										10
									
								
								src/db/migrations/0019-add-invite.sql
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								src/db/migrations/0019-add-invite.sql
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | |||
| BEGIN TRANSACTION; | ||||
| 
 | ||||
| CREATE TABLE "invite" ( | ||||
| 	"mxid"	TEXT NOT NULL, | ||||
| 	"room_id"	TEXT NOT NULL, | ||||
| 	"type"	TEXT, | ||||
| 	PRIMARY KEY("mxid","room_id") | ||||
| ) WITHOUT ROWID; | ||||
| 
 | ||||
| COMMIT; | ||||
							
								
								
									
										6
									
								
								src/db/orm-defs.d.ts
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								src/db/orm-defs.d.ts
									
										
									
									
										vendored
									
									
								
							|  | @ -40,6 +40,12 @@ export type Models = { | |||
| 		autocreate: 0 | 1 | ||||
| 	} | ||||
| 
 | ||||
| 	invite: { | ||||
| 		mxid: string | ||||
| 		room_id: string | ||||
| 		type: string | null | ||||
| 	} | ||||
| 
 | ||||
| 	lottie: { | ||||
| 		sticker_id: string | ||||
| 		mxc_url: string | ||||
|  |  | |||
|  | @ -214,6 +214,14 @@ sync.addTemporaryListener(as, "type:m.room.member", guard("m.room.member", | |||
|  */ | ||||
| async event => { | ||||
| 	if (event.state_key[0] !== "@") return | ||||
| 
 | ||||
| 	if (event.content.membership === "invite" && event.state_key === `@${reg.sender_localpart}:${reg.ooye.server_name}`) { | ||||
| 		// We were invited to a room. We should join, and register the invite details for future reference in web.
 | ||||
| 		await api.joinRoom(event.room_id) | ||||
| 		const creation = await api.getStateEvent(event.room_id, "m.room.create", "") | ||||
| 		db.prepare("INSERT OR IGNORE INTO invite (mxid, room_id, type) VALUES (?, ?, ?)").run(event.sender, event.room_id, creation.type || null) | ||||
| 	} | ||||
| 
 | ||||
| 	if (utils.eventSenderIsFromDiscord(event.state_key)) return | ||||
| 
 | ||||
| 	if (event.content.membership === "leave" || event.content.membership === "ban") { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue