ditto/packages/policies/MuteListPolicy.ts
2025-02-18 13:13:05 -06:00

23 lines
700 B
TypeScript

import type { NostrEvent, NostrRelayOK, NPolicy, NStore } from '@nostrify/nostrify';
export class MuteListPolicy implements NPolicy {
constructor(private pubkey: string, private store: NStore) {}
async call(event: NostrEvent): Promise<NostrRelayOK> {
const pubkeys = new Set<string>();
const [muteList] = await this.store.query([{ authors: [this.pubkey], kinds: [10000], limit: 1 }]);
for (const [name, value] of muteList?.tags ?? []) {
if (name === 'p') {
pubkeys.add(value);
}
}
if (pubkeys.has(event.pubkey)) {
return ['OK', event.id, false, 'blocked: Your account has been deactivated.'];
}
return ['OK', event.id, true, ''];
}
}