From 268a160f17267e7246e8b0b8a02a58c93d0c6b0b Mon Sep 17 00:00:00 2001 From: codytseng Date: Mon, 11 Nov 2024 17:31:14 +0800 Subject: [PATCH] feat: following list page --- src/renderer/src/App.tsx | 4 +- src/renderer/src/components/Nip05/index.tsx | 3 +- src/renderer/src/components/Note/index.tsx | 10 ++- .../src/components/NoteList/index.tsx | 4 +- .../src/components/PostDialog/index.tsx | 2 + .../src/components/ReplyNote/index.tsx | 2 +- .../src/components/Username/index.tsx | 4 +- src/renderer/src/hooks/index.tsx | 5 +- ...seFetchEvent.tsx => useFetchEventById.tsx} | 0 src/renderer/src/hooks/useFetchFollowings.tsx | 33 +++++++++ src/renderer/src/lib/link.ts | 4 ++ .../src/pages/primary/NoteListPage/index.tsx | 2 + .../secondary/FollowingListPage/index.tsx | 71 +++++++++++++++++++ .../src/pages/secondary/ProfilePage/index.tsx | 18 +++-- src/renderer/src/services/client.service.ts | 38 +++++----- 15 files changed, 167 insertions(+), 33 deletions(-) rename src/renderer/src/hooks/{useFetchEvent.tsx => useFetchEventById.tsx} (100%) create mode 100644 src/renderer/src/hooks/useFetchFollowings.tsx create mode 100644 src/renderer/src/pages/secondary/FollowingListPage/index.tsx diff --git a/src/renderer/src/App.tsx b/src/renderer/src/App.tsx index 21033d40..c24dd6f0 100644 --- a/src/renderer/src/App.tsx +++ b/src/renderer/src/App.tsx @@ -5,6 +5,7 @@ import { Toaster } from '@renderer/components/ui/toaster' import { ThemeProvider } from '@renderer/providers/ThemeProvider' import { PageManager } from './PageManager' import NoteListPage from './pages/primary/NoteListPage' +import FollowingListPage from './pages/secondary/FollowingListPage' import HashtagPage from './pages/secondary/HashtagPage' import NotePage from './pages/secondary/NotePage' import ProfilePage from './pages/secondary/ProfilePage' @@ -15,7 +16,8 @@ import { RelaySettingsProvider } from './providers/RelaySettingsProvider' const routes = [ { pageName: 'note', element: }, { pageName: 'profile', element: }, - { pageName: 'hashtag', element: } + { pageName: 'hashtag', element: }, + { pageName: 'followingList', element: } ] export default function App(): JSX.Element { diff --git a/src/renderer/src/components/Nip05/index.tsx b/src/renderer/src/components/Nip05/index.tsx index 887a5560..426fd06a 100644 --- a/src/renderer/src/components/Nip05/index.tsx +++ b/src/renderer/src/components/Nip05/index.tsx @@ -1,8 +1,9 @@ import { useFetchNip05 } from '@renderer/hooks/useFetchNip05' import { BadgeAlert, BadgeCheck } from 'lucide-react' -export default function Nip05({ nip05, pubkey }: { nip05: string; pubkey: string }) { +export default function Nip05({ nip05, pubkey }: { nip05?: string; pubkey: string }) { const { nip05IsVerified, nip05Name, nip05Domain } = useFetchNip05(nip05, pubkey) + return ( nip05Name && nip05Domain && ( diff --git a/src/renderer/src/components/Note/index.tsx b/src/renderer/src/components/Note/index.tsx index bcd95d16..4f8cec3f 100644 --- a/src/renderer/src/components/Note/index.tsx +++ b/src/renderer/src/components/Note/index.tsx @@ -29,12 +29,16 @@ export default function Note({
-
+
-
{formatTimestamp(event.created_at)}
+
+ {formatTimestamp(event.created_at)} +
{parentEvent && ( diff --git a/src/renderer/src/components/NoteList/index.tsx b/src/renderer/src/components/NoteList/index.tsx index 2da3c99e..920b719b 100644 --- a/src/renderer/src/components/NoteList/index.tsx +++ b/src/renderer/src/components/NoteList/index.tsx @@ -32,8 +32,6 @@ export default function NoteList({ }, [JSON.stringify(filter)]) useEffect(() => { - if (relayUrls.length === 0) return - setInitialized(false) setEvents([]) setNewEvents([]) @@ -86,7 +84,7 @@ export default function NoteList({ observer.current.unobserve(bottomRef.current) } } - }, [until, initialized]) + }, [until, initialized, hasMore]) const loadMore = async () => { const events = await client.fetchEvents(relayUrls, { ...noteFilter, until }) diff --git a/src/renderer/src/components/PostDialog/index.tsx b/src/renderer/src/components/PostDialog/index.tsx index a15945d0..f00501ad 100644 --- a/src/renderer/src/components/PostDialog/index.tsx +++ b/src/renderer/src/components/PostDialog/index.tsx @@ -2,6 +2,7 @@ import { Button } from '@renderer/components/ui/button' import { Dialog, DialogContent, + DialogDescription, DialogHeader, DialogTitle, DialogTrigger @@ -100,6 +101,7 @@ export default function PostDialog({ 'New post' )} +