Store invites in database

This commit is contained in:
Cadence Ember
2025-02-03 16:37:56 +13:00
parent f9be1e39a1
commit 978eb40e1d
3 changed files with 24 additions and 0 deletions

View 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;

View File

@@ -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

View File

@@ -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") {