35 lines
921 B
TypeScript
35 lines
921 B
TypeScript
import { EventKind, NostrLink, TaggedNostrEvent, Nip10 } from "@snort/system";
|
|
|
|
export function getNotificationContext(ev: TaggedNostrEvent) {
|
|
switch (ev.kind) {
|
|
case EventKind.ZapReceipt: {
|
|
const aTag = ev.tags.find(a => a[0] === "a");
|
|
if (aTag) {
|
|
return NostrLink.fromTag(aTag);
|
|
}
|
|
const eTag = ev.tags.find(a => a[0] === "e");
|
|
if (eTag) {
|
|
return NostrLink.fromTag(eTag);
|
|
}
|
|
const pTag = ev.tags.find(a => a[0] === "p");
|
|
if (pTag) {
|
|
return NostrLink.fromTag(pTag);
|
|
}
|
|
break;
|
|
}
|
|
case EventKind.Repost:
|
|
case EventKind.Reaction: {
|
|
const thread = Nip10.parseThread(ev);
|
|
const tag = thread?.replyTo ?? thread?.root;
|
|
if (tag) {
|
|
return tag;
|
|
} else {
|
|
throw new Error("Unknown thread context");
|
|
}
|
|
}
|
|
case EventKind.TextNote: {
|
|
return NostrLink.fromEvent(ev);
|
|
}
|
|
}
|
|
}
|