import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '@/components/ui/dialog' import { ScrollArea } from '@/components/ui/scroll-area' import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '@/components/ui/sheet' import { useScreenSize } from '@/providers/ScreenSizeProvider' import { pubkeyToNpub } from '@/lib/pubkey' import postEditor from '@/services/post-editor.service' import { Event } from 'nostr-tools' import { Dispatch, useMemo } from 'react' import PostContent from './PostContent' export default function PostEditor({ defaultContent = '', parentEvent, open, setOpen, openFrom, initialHighlightData, initialPublicMessageTo, onPublishSuccess }: { defaultContent?: string parentEvent?: Event open: boolean setOpen: Dispatch openFrom?: string[] initialHighlightData?: import('./HighlightEditor').HighlightData /** When set, opens in public message mode with this pubkey in the mention list. */ initialPublicMessageTo?: string /** Called after a reply/post is successfully published, before closing. */ onPublishSuccess?: () => void }) { const { isSmallScreen } = useScreenSize() const effectiveDefaultContent = useMemo(() => { if (initialPublicMessageTo) { const npub = pubkeyToNpub(initialPublicMessageTo) const suffix = defaultContent ? ` ${defaultContent}` : ' ' return npub ? `nostr:${npub}${suffix}`.trimEnd() : defaultContent } return defaultContent }, [initialPublicMessageTo, defaultContent]) const content = useMemo(() => { return ( setOpen(false)} openFrom={openFrom} initialHighlightData={initialHighlightData} initialPublicMessageTo={initialPublicMessageTo} onPublishSuccess={onPublishSuccess} /> ) }, [effectiveDefaultContent, parentEvent, openFrom, setOpen, initialHighlightData, initialPublicMessageTo, onPublishSuccess]) if (isSmallScreen) { return ( { if (postEditor.isSuggestionPopupOpen) { e.preventDefault() postEditor.closeSuggestionPopup() } }} >
Post Editor Create a new post or reply {content}
) } return ( { if (postEditor.isSuggestionPopupOpen) { e.preventDefault() postEditor.closeSuggestionPopup() } }} >
Post Editor Create a new post or reply {content}
) }