// import spinner from "@/assets/icons/spinner.svg"; import "@/styles/trill.css"; import "@/styles/feed.css"; import UserLoader from "./User"; import PostList from "@/components/feed/PostList"; import useLocalState from "@/state/state"; 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"; type FeedType = "global" | "following" | "nostr"; function Loader() { // const { api } = useLocalState(); const params = useParams(); console.log({ params }); // const [loc, navigate] = useLocation(); // console.log({ loc }); // const our = api!.airlock.ship; if (params.taip === "global") return ; if (params.taip === "nostr") return ; // else if (param === FeedType.Rumors) return ; // else if (param === FeedType.Home) return ; else if (params.taip) return ; else return ; } function FeedPage({ t }: { t: FeedType }) { const [active, setActive] = useState(t); return (
setActive("global")} > Global
setActive("following")} > Following
setActive("nostr")} > Nostr
{active === "global" ? ( ) : active === "following" ? ( ) : active === "nostr" ? ( ) : null}
); } // {active === "global" ? ( // // ) : active === "following" ? ( // // ) : ( // // )} function Global() { // const { api } = useLocalState(); // const { isPending, data, refetch } = useQuery({ // queryKey: ["globalFeed"], // queryFn: () => { // return api!.scryFeed(null, null); // }, // }); // console.log(data, "scry feed data"); // if (isPending) return ; // else if ("bucun" in data) return

Error

; // else return ; return

Error

; } 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 (

No Nostr Posts

Your Nostr feed appears to be empty. Try syncing with your relays to fetch the latest posts.

); } // Show feed with resync button in header return (

Nostr Feed

{Object.keys(feed.feed).length} posts
); } export default Loader; // TODO type MixFeed = any; function Inner({ data, refetch }: { data: MixFeed; refetch: Function }) { return ; }