feat: bookmarks (#279)

This commit is contained in:
M.Abubakar 2025-04-18 18:51:36 +05:00 committed by GitHub
parent 085adeb096
commit 7876f26d0c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 390 additions and 15 deletions

View file

@ -6,7 +6,7 @@ import { cn } from '@/lib/utils'
import { useFavoriteRelays } from '@/providers/FavoriteRelaysProvider'
import { useFeed } from '@/providers/FeedProvider'
import { useScreenSize } from '@/providers/ScreenSizeProvider'
import { ChevronDown, Server, UsersRound } from 'lucide-react'
import { BookmarkIcon, ChevronDown, Server, UsersRound } from 'lucide-react'
import { forwardRef, HTMLAttributes, useMemo, useState } from 'react'
import { useTranslation } from 'react-i18next'
@ -55,6 +55,9 @@ const FeedSwitcherTrigger = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivEle
if (feedInfo.feedType === 'following') {
return t('Following')
}
if (feedInfo.feedType === 'bookmarks') {
return t('Bookmarks')
}
if (relayUrls.length === 0) {
return t('Choose a relay')
}
@ -77,7 +80,13 @@ const FeedSwitcherTrigger = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivEle
ref={ref}
{...props}
>
{feedInfo.feedType === 'following' ? <UsersRound /> : <Server />}
{feedInfo.feedType === 'following' ? (
<UsersRound />
) : feedInfo.feedType === 'bookmarks' ? (
<BookmarkIcon />
) : (
<Server />
)}
<div className="text-lg font-semibold truncate">{title}</div>
<ChevronDown />
</div>

View file

@ -1,3 +1,4 @@
import BookmarksList from '@/components/BookmarksList'
import NoteList from '@/components/NoteList'
import PostEditor from '@/components/PostEditor'
import SaveRelayDropdownMenu from '@/components/SaveRelayDropdownMenu'
@ -35,6 +36,18 @@ const NoteListPage = forwardRef((_, ref) => {
</Button>
</div>
)
} else if (feedInfo.feedType === 'bookmarks') {
if (!pubkey) {
content = (
<div className="flex justify-center w-full">
<Button size="lg" onClick={() => checkLogin()}>
{t('Please login to view bookmarks')}
</Button>
</div>
)
} else {
content = <BookmarksList />
}
} else if (isReady) {
content = (
<NoteList