Support multiple versions of rooms

This commit is contained in:
Cadence Ember
2025-11-26 15:43:48 +13:00
parent e6c30f80b5
commit a441c476f8
29 changed files with 520 additions and 349 deletions
+15 -3
View File
@@ -26,16 +26,28 @@ as.router.get("/api/message", defineEventHandler(async event => {
const api = getAPI(event)
const {message_id} = await getValidatedQuery(event, schema.message.parse)
const metadatas = from("event_message").join("message_channel", "message_id").join("channel_room", "channel_id").where({message_id})
.select("event_id", "event_type", "event_subtype", "part", "reaction_part", "room_id", "source").and("ORDER BY part ASC, reaction_part DESC").all()
const metadatas = from("event_message").join("message_room", "message_id").join("historical_channel_room", "historical_room_index").where({message_id})
.select("event_id", "event_type", "event_subtype", "part", "reaction_part", "reference_channel_id", "room_id", "source").and("ORDER BY part ASC, reaction_part DESC").all()
if (metadatas.length === 0) {
return new Response("Message not found", {status: 404, statusText: "Not Found"})
}
const current_room_id = select("channel_room", "room_id", {channel_id: metadatas[0].reference_channel_id}).pluck().get()
const events = await Promise.all(metadatas.map(metadata =>
api.getEvent(metadata.room_id, metadata.event_id).then(raw => ({
metadata: Object.assign({sender: raw.sender}, metadata),
metadata: {
event_id: metadata.event_id,
event_type: metadata.event_type,
event_subtype: metadata.event_subtype,
part: metadata.part,
reaction_part: metadata.reaction_part,
channel_id: metadata.reference_channel_id,
room_id: metadata.room_id,
source: metadata.source,
sender: raw.sender,
current_room_id: current_room_id
},
raw
}))
))
+32 -24
View File
@@ -57,14 +57,16 @@ test("web info: returns data for a matrix message and profile", async t => {
},
events: [{
metadata: {
event_id: "$51gH61p_eJc2RylOdE2lAr4-ogP7dS0WJI62lCFzBvk",
event_subtype: "m.text",
event_type: "m.room.message",
part: 0,
reaction_part: 0,
room_id: "!qzDBLKlildpzrrOnFZ:cadence.moe",
sender: "@cadence:cadence.moe",
source: 0
event_id: "$51gH61p_eJc2RylOdE2lAr4-ogP7dS0WJI62lCFzBvk",
event_subtype: "m.text",
event_type: "m.room.message",
part: 0,
reaction_part: 0,
room_id: "!qzDBLKlildpzrrOnFZ:cadence.moe",
channel_id: "176333891320283136",
current_room_id: "!qzDBLKlildpzrrOnFZ:cadence.moe",
sender: "@cadence:cadence.moe",
source: 0
},
raw
}]
@@ -113,14 +115,16 @@ test("web info: returns data for a matrix message without profile", async t => {
},
events: [{
metadata: {
event_id: "$51gH61p_eJc2RylOdE2lAr4-ogP7dS0WJI62lCFzBvk",
event_subtype: "m.text",
event_type: "m.room.message",
part: 0,
reaction_part: 0,
room_id: "!qzDBLKlildpzrrOnFZ:cadence.moe",
sender: "@cadence:cadence.moe",
source: 0
event_id: "$51gH61p_eJc2RylOdE2lAr4-ogP7dS0WJI62lCFzBvk",
event_subtype: "m.text",
event_type: "m.room.message",
part: 0,
reaction_part: 0,
room_id: "!qzDBLKlildpzrrOnFZ:cadence.moe",
channel_id: "176333891320283136",
current_room_id: "!qzDBLKlildpzrrOnFZ:cadence.moe",
sender: "@cadence:cadence.moe",
source: 0
},
raw
}]
@@ -191,14 +195,16 @@ test("web info: returns data for a discord message", async t => {
matrix_author: undefined,
events: [{
metadata: {
event_id: "$AfrB8hzXkDMvuoWjSZkDdFYomjInWH7jMBPkwQMN8AI",
event_subtype: "m.text",
event_type: "m.room.message",
part: 0,
reaction_part: 1,
room_id: "!kLRqKKUQXcibIMtOpl:cadence.moe",
sender: "@_ooye_accavish:cadence.moe",
source: 1
event_id: "$AfrB8hzXkDMvuoWjSZkDdFYomjInWH7jMBPkwQMN8AI",
event_subtype: "m.text",
event_type: "m.room.message",
part: 0,
reaction_part: 1,
room_id: "!kLRqKKUQXcibIMtOpl:cadence.moe",
channel_id: "112760669178241024",
current_room_id: "!kLRqKKUQXcibIMtOpl:cadence.moe",
sender: "@_ooye_accavish:cadence.moe",
source: 1
},
raw: raw1
}, {
@@ -209,6 +215,8 @@ test("web info: returns data for a discord message", async t => {
part: 1,
reaction_part: 0,
room_id: "!kLRqKKUQXcibIMtOpl:cadence.moe",
channel_id: "112760669178241024",
current_room_id: "!kLRqKKUQXcibIMtOpl:cadence.moe",
sender: "@_ooye_accavish:cadence.moe",
source: 1
},