@@ -70,7 +62,6 @@ export default function MailboxSetting() {
{t('write relays description')}
{t('read & write relays notice')}
{relays.map((relay) => (
diff --git a/src/components/NoteList/index.tsx b/src/components/NoteList/index.tsx
index cad007f..f802e66 100644
--- a/src/components/NoteList/index.tsx
+++ b/src/components/NoteList/index.tsx
@@ -25,13 +25,13 @@ const ALGO_LIMIT = 500
const SHOW_COUNT = 10
export default function NoteList({
- relayUrls,
+ relayUrls = [],
filter = {},
className,
filterMutedNotes = true,
needCheckAlgoRelay = false
}: {
- relayUrls: string[]
+ relayUrls?: string[]
filter?: Filter
className?: string
filterMutedNotes?: boolean
@@ -60,7 +60,7 @@ export default function NoteList({
const topRef = useRef
(null)
useEffect(() => {
- if (relayUrls.length === 0) return
+ if (relayUrls.length === 0 && !noteFilter.authors?.length) return
async function init() {
setRefreshing(true)
diff --git a/src/components/NoteStats/SeenOnButton.tsx b/src/components/NoteStats/SeenOnButton.tsx
index 7cb2ebd..2ad4753 100644
--- a/src/components/NoteStats/SeenOnButton.tsx
+++ b/src/components/NoteStats/SeenOnButton.tsx
@@ -62,7 +62,9 @@ export default function SeenOnButton({ event }: { event: Event }) {
key={relay}
onClick={() => {
setIsDrawerOpen(false)
- push(toRelay(relay))
+ setTimeout(() => {
+ push(toRelay(relay))
+ }, 50) // Timeout to allow the drawer to close before navigating
}}
>
{simplifyUrl(relay)}
diff --git a/src/components/ZapDialog/index.tsx b/src/components/ZapDialog/index.tsx
index ded731a..08d8742 100644
--- a/src/components/ZapDialog/index.tsx
+++ b/src/components/ZapDialog/index.tsx
@@ -1,14 +1,29 @@
import { Button } from '@/components/ui/button'
-import { Dialog, DialogContent, DialogHeader, DialogTitle } from '@/components/ui/dialog'
+import {
+ Dialog,
+ DialogContent,
+ DialogDescription,
+ DialogHeader,
+ DialogOverlay,
+ DialogTitle
+} from '@/components/ui/dialog'
+import {
+ Drawer,
+ DrawerContent,
+ DrawerHeader,
+ DrawerOverlay,
+ DrawerTitle
+} from '@/components/ui/drawer'
import { Input } from '@/components/ui/input'
import { Label } from '@/components/ui/label'
import { useToast } from '@/hooks'
import { useNostr } from '@/providers/NostrProvider'
import { useNoteStats } from '@/providers/NoteStatsProvider'
+import { useScreenSize } from '@/providers/ScreenSizeProvider'
import { useZap } from '@/providers/ZapProvider'
import lightning from '@/services/lightning.service'
import { Loader } from 'lucide-react'
-import { Dispatch, SetStateAction, useState } from 'react'
+import { Dispatch, SetStateAction, useEffect, useRef, useState } from 'react'
import { useTranslation } from 'react-i18next'
import UserAvatar from '../UserAvatar'
import Username from '../Username'
@@ -27,10 +42,62 @@ export default function ZapDialog({
defaultAmount?: number
}) {
const { t } = useTranslation()
+ const { isSmallScreen } = useScreenSize()
+ const drawerContentRef = useRef(null)
+
+ useEffect(() => {
+ const handleResize = () => {
+ if (drawerContentRef.current) {
+ drawerContentRef.current.style.setProperty('bottom', `env(safe-area-inset-bottom)`)
+ }
+ }
+
+ if (window.visualViewport) {
+ window.visualViewport.addEventListener('resize', handleResize)
+ handleResize() // Initial call in case the keyboard is already open
+ }
+
+ return () => {
+ if (window.visualViewport) {
+ window.visualViewport.removeEventListener('resize', handleResize)
+ }
+ }
+ }, [])
+
+ if (isSmallScreen) {
+ return (
+
+ setOpen(false)} />
+ e.preventDefault()}
+ ref={drawerContentRef}
+ className="flex flex-col gap-4 px-4 mb-4"
+ >
+
+
+ {t('Zap to')}
+
+
+
+
+
+
+
+
+ )
+ }
return (