Store invites in database
This commit is contained in:
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
|
autocreate: 0 | 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
invite: {
|
||||||
|
mxid: string
|
||||||
|
room_id: string
|
||||||
|
type: string | null
|
||||||
|
}
|
||||||
|
|
||||||
lottie: {
|
lottie: {
|
||||||
sticker_id: string
|
sticker_id: string
|
||||||
mxc_url: string
|
mxc_url: string
|
||||||
|
@@ -214,6 +214,14 @@ sync.addTemporaryListener(as, "type:m.room.member", guard("m.room.member",
|
|||||||
*/
|
*/
|
||||||
async event => {
|
async event => {
|
||||||
if (event.state_key[0] !== "@") return
|
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 (utils.eventSenderIsFromDiscord(event.state_key)) return
|
||||||
|
|
||||||
if (event.content.membership === "leave" || event.content.membership === "ban") {
|
if (event.content.membership === "leave" || event.content.membership === "ban") {
|
||||||
|
Reference in New Issue
Block a user