parse.ts (996B)
1 import { KIND_PROFILE, type RadrootsProfile, type RadrootsProfileType } from "@radroots/events-bindings"; 2 import type { NostrEvent } from "../../types/nostr.js"; 3 import { parse_nostr_event_basis } from "../lib.js"; 4 import type { NostrEventBasis } from "../subscription.js"; 5 import { parse_profile_type_tag } from "./tags.js"; 6 7 export type RadrootsProfileNostrEvent = NostrEventBasis<typeof KIND_PROFILE> & { 8 profile: RadrootsProfile; 9 profile_type?: RadrootsProfileType; 10 }; 11 12 export const parse_nostr_profile_event = ( 13 event: NostrEvent, 14 ): RadrootsProfileNostrEvent | undefined => { 15 const ev = parse_nostr_event_basis(event, KIND_PROFILE); 16 if (!ev) return undefined; 17 try { 18 const parsed = JSON.parse(event.content); 19 const profile = parsed as RadrootsProfile; 20 const profile_type = parse_profile_type_tag(event.tags); 21 return profile_type ? { ...ev, profile, profile_type } : { ...ev, profile }; 22 } catch { 23 return undefined; 24 } 25 };