feat: support media files upload via paste and drop

This commit is contained in:
codytseng 2025-05-09 23:23:17 +08:00
parent 533e00d4ee
commit 4bfdd4f334
20 changed files with 162 additions and 85 deletions

View file

@ -6,14 +6,17 @@ import {
DialogTitle
} from '@/components/ui/dialog'
import { ScrollArea } from '@/components/ui/scroll-area'
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'
import {
Sheet,
SheetContent,
SheetDescription,
SheetHeader,
SheetTitle
} from '@/components/ui/sheet'
import { useScreenSize } from '@/providers/ScreenSizeProvider'
import { Event } from 'nostr-tools'
import { Dispatch, useMemo } from 'react'
import { useTranslation } from 'react-i18next'
import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '../ui/sheet'
import NormalPostContent from './NormalPostContent'
import PicturePostContent from './PicturePostContent'
import Title from './Title'
export default function PostEditor({
@ -27,35 +30,17 @@ export default function PostEditor({
open: boolean
setOpen: Dispatch<boolean>
}) {
const { t } = useTranslation()
const { isSmallScreen } = useScreenSize()
const content = useMemo(() => {
return parentEvent || defaultContent ? (
return (
<NormalPostContent
defaultContent={defaultContent}
parentEvent={parentEvent}
close={() => setOpen(false)}
/>
) : (
<Tabs defaultValue="normal" className="space-y-4">
<TabsList>
<TabsTrigger value="normal">{t('Normal Note')}</TabsTrigger>
<TabsTrigger value="picture">{t('Picture Note')}</TabsTrigger>
</TabsList>
<TabsContent value="normal">
<NormalPostContent
defaultContent={defaultContent}
parentEvent={parentEvent}
close={() => setOpen(false)}
/>
</TabsContent>
<TabsContent value="picture">
<PicturePostContent close={() => setOpen(false)} />
</TabsContent>
</Tabs>
)
}, [parentEvent, defaultContent])
}, [])
if (isSmallScreen) {
return (