Support multiple versions of rooms
This commit is contained in:
+15
-3
@@ -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
@@ -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
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user