Files
eranos/src/contexts/CommunityModerationContext.ts
T
2026-05-11 11:12:13 -07:00

27 lines
1.1 KiB
TypeScript

import { createContext, useContext } from 'react';
import type { CommunityMember, CommunityModeration } from '@/lib/communityUtils';
/**
* Context that lets nested components (e.g. NoteMoreMenu, NoteCard) discover
* community moderation state when rendered inside a community detail page.
* `null` outside any community context.
*/
export interface CommunityModerationContextValue {
/** The community `A` tag coordinate (e.g. `34550:<pubkey>:<d-tag>`). */
communityATag: string;
/** Resolved moderation data (bans, reports, content warnings). */
moderation: CommunityModeration;
/** Flat membership lookup (pubkey -> authority rank). Includes banned members for authority checks only. */
rankMap: Map<string, CommunityMember>;
}
export const CommunityModerationContext = createContext<CommunityModerationContextValue | null>(null);
/**
* Returns community moderation context, or `null` outside a community page.
*/
export function useCommunityModerationContext(): CommunityModerationContextValue | null {
return useContext(CommunityModerationContext);
}