1
0
Fork 0

bridge both ways and prevent reflections

This commit is contained in:
Cadence Ember 2023-07-04 00:39:42 +12:00
parent 3578ca28b5
commit 39cdba9f90
15 changed files with 67 additions and 51 deletions

View file

@ -17,7 +17,6 @@ const createRoom = sync.require("../actions/create-room")
async function addReaction(data) {
const user = data.member?.user
assert.ok(user && user.username)
// TODO: should add my own sent messages to event_message so they can be reacted to?
const parentID = db.prepare("SELECT event_id FROM event_message WHERE message_id = ? AND part = 0").pluck().get(data.message_id) // 0 = primary
if (!parentID) return // TODO: how to handle reactions for unbridged messages? is there anything I can do?
assert.equal(typeof parentID, "string")

View file

@ -37,7 +37,7 @@ async function sendMessage(message, guild) {
delete eventWithoutType.$type
const eventID = await api.sendEvent(roomID, eventType, event, senderMxid)
db.prepare("INSERT INTO event_message (event_id, message_id, part) VALUES (?, ?, ?)").run(eventID, message.id, eventPart)
db.prepare("INSERT INTO event_message (event_id, message_id, part, source) VALUES (?, ?, ?, 1)").run(eventID, message.id, eventPart) // source 1 = discord
eventPart = 1 // TODO: use more intelligent algorithm to determine whether primary or supporting
eventIDs.push(eventID)

View file

@ -1,5 +1,4 @@
const {test} = require("supertape")
const assert = require("assert")
const {messageToEvent} = require("./message-to-event")
const data = require("../../test/data")

View file

@ -1,5 +1,5 @@
const assert = require("assert").strict
const {sync} = require("../passthrough")
const {sync, db} = require("../passthrough")
/** @type {import("./actions/send-message")}) */
const sendMessage = sync.require("./actions/send-message")
@ -18,6 +18,13 @@ module.exports = {
const channel = client.channels.get(message.channel_id)
const guild = client.guilds.get(channel.guild_id)
if (message.guild_id !== "112760669178241024" && message.guild_id !== "497159726455455754") return // TODO: activate on other servers (requires the space creation flow to be done first)
if (message.webhook_id) {
const row = db.prepare("SELECT webhook_id FROM webhook WHERE webhook_id = ?").pluck().get(message.webhook_id)
if (row) {
// The message was sent by the bridge's own webhook on discord. We don't want to reflect this back, so just drop it.
return
}
}
sendMessage.sendMessage(message, guild)
},