diff options
Diffstat (limited to 'gui/src/pages/Feed.tsx')
| -rw-r--r-- | gui/src/pages/Feed.tsx | 91 |
1 files changed, 2 insertions, 89 deletions
diff --git a/gui/src/pages/Feed.tsx b/gui/src/pages/Feed.tsx index ac596dd..02f7b1a 100644 --- a/gui/src/pages/Feed.tsx +++ b/gui/src/pages/Feed.tsx @@ -8,10 +8,8 @@ import { useParams } from "wouter"; import spinner from "@/assets/triangles.svg"; import { useState } from "react"; import Composer from "@/components/composer/Composer"; -import Icon from "@/components/Icon"; -import toast from "react-hot-toast"; -import { eventsToFc } from "@/logic/nostrill"; import { ErrorPage } from "@/Router"; +import NostrFeed from "@/components/nostr/Feed"; type FeedType = "global" | "following" | "nostr"; function Loader() { @@ -59,7 +57,7 @@ function FeedPage({ t }: { t: FeedType }) { ) : active === "following" ? ( <Following /> ) : active === "nostr" ? ( - <Nostr /> + <NostrFeed /> ) : null} </div> </main> @@ -102,91 +100,6 @@ function Following() { </div> ); } -function Nostr() { - const { nostrFeed, api } = useLocalState((s) => ({ - nostrFeed: s.nostrFeed, - api: s.api, - })); - const [isSyncing, setIsSyncing] = useState(false); - const feed = eventsToFc(nostrFeed); - console.log({ feed }); - const refetch = () => feed; - - const handleResync = async () => { - if (!api) return; - - setIsSyncing(true); - try { - await api.syncRelays(); - toast.success("Nostr feed sync initiated"); - } catch (error) { - toast.error("Failed to sync Nostr feed"); - console.error("Sync error:", error); - } finally { - setIsSyncing(false); - } - }; - - // Show empty state with resync option when no feed data - if (!feed || !feed.feed || Object.keys(feed.feed).length === 0) { - return ( - <div className="nostr-empty-state"> - <div className="empty-content"> - <Icon name="nostr" size={48} color="textMuted" /> - <h3>No Nostr Posts</h3> - <p> - Your Nostr feed appears to be empty. Try syncing with your relays to - fetch the latest posts. - </p> - <button - onClick={handleResync} - disabled={isSyncing} - className="resync-btn" - > - {isSyncing ? ( - <> - <img src={spinner} alt="Loading" className="btn-spinner" /> - Syncing... - </> - ) : ( - <> - <Icon name="settings" size={16} /> - Sync Relays - </> - )} - </button> - </div> - </div> - ); - } - - // Show feed with resync button in header - return ( - <div className="nostr-feed"> - <div className="nostr-header"> - <div className="feed-info"> - <h4>Nostr Feed</h4> - <span className="post-count"> - {Object.keys(feed.feed).length} posts - </span> - </div> - <button - onClick={handleResync} - disabled={isSyncing} - className="resync-btn-small" - title="Sync with Nostr relays" - > - {isSyncing ? ( - <img src={spinner} alt="Loading" className="btn-spinner-small" /> - ) : ( - <Icon name="settings" size={16} /> - )} - </button> - </div> - <PostList data={feed} refetch={refetch} /> - </div> - ); -} export default Loader; // TODO |
