matrix-search

A small nodejs script which indexes a whole matrix account into meilisearch and has a pdf rendering UI
git clone git://archive.git.mtrnord.blog/MTRNord/matrix-search.git
Log | Files | Refs | README | LICENSE

commit 0e5ac276bb30eabd0d9083c003d4e56843a73859
parent 00aa68c2cd47e0a2e3e9409b3af7315da780121f
Author: MTRNord <mtrnord1@gmail.com>
Date:   Sun,  9 Jun 2024 18:33:14 +0200

Deduplicate code for consistency

Diffstat:
Msrc/bot.ts | 21++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/bot.ts b/src/bot.ts @@ -79,7 +79,7 @@ async function backfill(client: MatrixClient, indexer: Indexer) { if (await client.crypto.isRoomEncrypted(room)) { await client.crypto.onRoomEvent(room, event); } else { - const res = await indexer.insert({ id: event["event_id"].replace("$", "").replace(":", "_").replace(".", "_"), sender: event["sender"], content: cleanContent(event["content"]), room_id: room }); + const res = await indexer.insert(convertEventToDocument(event, room)); console.info(`Indexed message:`, res); } } @@ -91,8 +91,20 @@ async function backfill(client: MatrixClient, indexer: Indexer) { } } -async function run() { +function normalizeEventId(eventId: string) { + return eventId.replace("$", "").replace(":", "_").replace(".", "_"); +} + +function convertEventToDocument(event: any, roomId: string) { + return { + id: normalizeEventId(event["event_id"]), + sender: event["sender"], + content: cleanContent(event["content"]), + room_id: roomId + } +} +async function run() { const storageProvider = new SimpleFsStorageProvider("./storage/bot.json"); const cryptoProvider = new RustSdkCryptoStorageProvider("./storage/crypto", RustSdkCryptoStoreType.Sqlite); @@ -106,15 +118,14 @@ async function run() { client.on("room.message", async (roomId, event) => { if (event["content"]["msgtype"] === "m.text") { console.info(`Received message in room ${roomId}`); - // TODO: Remove the original event if we have an edit if (event.content["m.relates_to"]) { if (event.content["m.relates_to"].rel_type === "m.replace") { console.info(`Removing original event ${event.content["m.relates_to"].event_id}`); - await indexer.delete(event.content["m.relates_to"].event_id.replace("$", "").replace(":", "_").replace(".", "_")); + await indexer.delete(normalizeEventId(event.content["m.relates_to"].event_id)); } } - const res = await indexer.insert({ id: event["event_id"].replace("$", "").replace(":", "_").replace(".", "_"), sender: event["sender"], content: cleanContent(event["content"]), room_id: roomId }); + const res = await indexer.insert(convertEventToDocument(event, roomId)); console.info(`Indexed message:`, res); } });