diff --git a/src/components/Nip22ReplyNoteList/index.tsx b/src/components/Nip22ReplyNoteList/index.tsx
index 9dbf1db2..7fc3600c 100644
--- a/src/components/Nip22ReplyNoteList/index.tsx
+++ b/src/components/Nip22ReplyNoteList/index.tsx
@@ -167,14 +167,16 @@ export default function Nip22ReplyNoteList({
return (
<>
-
- {loading ? t('loading...') : until ? t('load more older replies') : null}
-
- {replies.length > 0 && (loading || until) && }
-
+ {(loading || until) && (
+
+ {loading ? t('loading...') : t('load more older replies')}
+
+ )}
+ {replies.length > 0 && (loading || until) &&
}
+
{replies.map((reply) => {
const info = replyMap[reply.id]
return (
diff --git a/src/components/Note/index.tsx b/src/components/Note/index.tsx
index 0ec0c34a..01de7cee 100644
--- a/src/components/Note/index.tsx
+++ b/src/components/Note/index.tsx
@@ -6,6 +6,7 @@ import { Event } from 'nostr-tools'
import { useMemo } from 'react'
import Content from '../Content'
import { FormattedTimestamp } from '../FormattedTimestamp'
+import NoteOptions from '../NoteOptions'
import NoteStats from '../NoteStats'
import ParentNotePreview from '../ParentNotePreview'
import UserAvatar from '../UserAvatar'
@@ -36,25 +37,28 @@ export default function Note({
return (
-
-
-
-
-
- {usingClient && size === 'normal' && (
-
using {usingClient}
- )}
-
-
-
+
+
+
+
+
+
+ {usingClient && size === 'normal' && (
+
using {usingClient}
+ )}
+
+
+
+
+ {size === 'normal' &&
}
{parentEventId && (
mutePubkeys.includes(event.pubkey), [mutePubkeys, event])
+
+ const trigger = (
+
+ )
+
+ const rawEventDialog = (
+ setIsRawEventDialogOpen(false)}
+ />
+ )
+
+ if (isSmallScreen) {
+ return (
+ e.stopPropagation()}>
+ {trigger}
+
+ setIsDrawerOpen(false)} />
+
+
+
+
+
+ {pubkey && (
+
+ )}
+
+
+
+ {rawEventDialog}
+
+ )
+ }
+
+ return (
+ e.stopPropagation()}>
+
+ {trigger}
+
+ navigator.clipboard.writeText(getSharableEventId(event))}
+ >
+
+ {t('Copy event ID')}
+
+ navigator.clipboard.writeText(pubkeyToNpub(event.pubkey) ?? '')}
+ >
+
+ {t('Copy user ID')}
+
+
+ setIsRawEventDialogOpen(true)}>
+
+ {t('View raw event')}
+
+ {pubkey && (
+ <>
+
+ (isMuted ? unmutePubkey(event.pubkey) : mutePubkey(event.pubkey))}
+ className="text-destructive focus:text-destructive"
+ >
+ {isMuted ? : }
+ {isMuted ? t('Unmute user') : t('Mute user')}
+
+ >
+ )}
+
+
+ {rawEventDialog}
+
+ )
+}
diff --git a/src/components/NoteStats/LikeButton.tsx b/src/components/NoteStats/LikeButton.tsx
index c57144b6..e2fc0c40 100644
--- a/src/components/NoteStats/LikeButton.tsx
+++ b/src/components/NoteStats/LikeButton.tsx
@@ -55,7 +55,7 @@ export default function LikeButton({ event }: { event: Event }) {
return (
diff --git a/src/components/NoteStats/NoteOptions/index.tsx b/src/components/NoteStats/NoteOptions/index.tsx
deleted file mode 100644
index fbe13d62..00000000
--- a/src/components/NoteStats/NoteOptions/index.tsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import {
- DropdownMenu,
- DropdownMenuContent,
- DropdownMenuItem,
- DropdownMenuTrigger
-} from '@/components/ui/dropdown-menu'
-import { getSharableEventId } from '@/lib/event'
-import { pubkeyToNpub } from '@/lib/pubkey'
-import { useMuteList } from '@/providers/MuteListProvider'
-import { useNostr } from '@/providers/NostrProvider'
-import { Bell, BellOff, Code, Copy, Ellipsis } from 'lucide-react'
-import { Event } from 'nostr-tools'
-import { useMemo, useState } from 'react'
-import { useTranslation } from 'react-i18next'
-import RawEventDialog from './RawEventDialog'
-
-export default function NoteOptions({ event }: { event: Event }) {
- const { t } = useTranslation()
- const { pubkey } = useNostr()
- const [isRawEventDialogOpen, setIsRawEventDialogOpen] = useState(false)
- const { mutePubkey, unmutePubkey, mutePubkeys } = useMuteList()
- const isMuted = useMemo(() => mutePubkeys.includes(event.pubkey), [mutePubkeys, event])
-
- return (
- e.stopPropagation()}>
-
-
-
-
-
- navigator.clipboard.writeText(getSharableEventId(event))}
- >
-
- {t('Copy event ID')}
-
- navigator.clipboard.writeText(pubkeyToNpub(event.pubkey) ?? '')}
- >
-
- {t('Copy user ID')}
-
- setIsRawEventDialogOpen(true)}>
-
- {t('View raw event')}
-
- {pubkey && (
- (isMuted ? unmutePubkey(event.pubkey) : mutePubkey(event.pubkey))}
- className="text-destructive focus:text-destructive"
- >
- {isMuted ? : }
- {isMuted ? t('Unmute user') : t('Mute user')}
-
- )}
-
-
- setIsRawEventDialogOpen(false)}
- />
-
- )
-}
diff --git a/src/components/NoteStats/ReplyButton.tsx b/src/components/NoteStats/ReplyButton.tsx
index 1d0a426e..c7393969 100644
--- a/src/components/NoteStats/ReplyButton.tsx
+++ b/src/components/NoteStats/ReplyButton.tsx
@@ -26,7 +26,7 @@ export default function ReplyButton({
return (
<>