decentralised message store

feat: basic channel set checking

serenity 84bfaff4 5e893623

Changed files
+8
src
lib
handlers
+8
src/lib/handlers/connect.ts
···
} from "@/lib/sessions";
import { shardMessageSchema } from "@/lib/types/messages";
import type { PreHandler, WsRouteHandler } from "@/lib/types/routes";
import { storeMessageInDb } from "@/lib/utils/gmstn";
import {
rawDataToString,
···
return;
}
socket.on("message", (rawData) => {
const event = rawDataToString(rawData);
···
console.error(z.treeifyError(error));
return;
}
storeMessageInDb(shardMessage)
.then(() => {
console.log("stored", shardMessage);
···
} from "@/lib/sessions";
import { shardMessageSchema } from "@/lib/types/messages";
import type { PreHandler, WsRouteHandler } from "@/lib/types/routes";
+
import { atUriToString } from "@/lib/utils/atproto";
import { storeMessageInDb } from "@/lib/utils/gmstn";
import {
rawDataToString,
···
return;
}
+
// convert at uri objects array to set of at uri strings for easier lookup.
+
const socketAllowedChannels = new Set(sessionInfo.allowedChannels.map(channel => atUriToString(channel)));
+
socket.on("message", (rawData) => {
const event = rawDataToString(rawData);
···
console.error(z.treeifyError(error));
return;
}
+
+
const { channel } = shardMessage
+
if(!socketAllowedChannels.has(channel)) return;
+
storeMessageInDb(shardMessage)
.then(() => {
console.log("stored", shardMessage);