Something went wrong. Try again.
a tool for shared writing and social publishing
Something went wrong. Try again.
1.0 kB · 35 lines
TypeScript
at perf/paste
123456789101112131415161718192021222324252627282930313233343536"use client";import { useMemo } from "react";import { useIdentityData } from "components/IdentityProvider";
export type ViewerUser = { loggedIn: boolean; email: string | undefined; handle: string | undefined; atprotoSubscribed: boolean; emailSubscribed: boolean;};
export function useViewerSubscription(publicationUri: string): ViewerUser { const { identity } = useIdentityData();
return useMemo(() => { const atprotoSubscribed = !!identity && (identity.publication_subscriptions ?? []).some( (s) => s.publication === publicationUri, ); const emailSubscribed = !!identity && (identity.publication_email_subscribers ?? []).some( (s) => s.publication === publicationUri && s.state === "confirmed", ); return { loggedIn: !!identity, email: identity?.email ?? undefined, handle: identity?.bsky_profiles?.handle ?? undefined, atprotoSubscribed, emailSubscribed, }; }, [identity, publicationUri]);}