17c1936817
The /follow route now accepts naddr1 identifiers for follow packs (kind 39089) and follow sets (kind 30000) in addition to npub/nprofile. Renders an immersive fullscreen layout with pack info hero, avatar stack, big Follow All CTA with status indicator, and Feed/Members tabs using the standard SubHeaderBar arc. Follow All uses the safe fetch-fresh -> modify -> publish pattern with prev for published_at preservation. Shared components (PackFeedTab, MemberCard, MemberCardSkeleton) and parsePackEvent are reused from FollowPackDetailContent and packUtils. Also fixes SubHeaderBar tab indicator positioning when innerClassName centers the tab container (adds containerOffset + ResizeObserver for layout-dependent recalculation).
13 lines
598 B
TypeScript
13 lines
598 B
TypeScript
import type { NostrEvent } from '@nostrify/nostrify';
|
|
|
|
/** Parse a follow pack / starter pack event into structured data. */
|
|
export function parsePackEvent(event: NostrEvent) {
|
|
const getTag = (name: string) => event.tags.find(([n]) => n === name)?.[1];
|
|
const title = getTag('title') || getTag('name') || 'Untitled Pack';
|
|
const description = getTag('description') || getTag('summary') || '';
|
|
const image = getTag('image') || getTag('thumb') || getTag('banner');
|
|
const pubkeys = event.tags.filter(([n]) => n === 'p').map(([, pk]) => pk);
|
|
|
|
return { title, description, image, pubkeys };
|
|
}
|