// import spinner from "@/assets/icons/spinner.svg"; import Composer from "@/components/composer/Composer"; import PostList from "@/components/feed/PostList"; import Profile from "@/components/profile/Profile"; import useLocalState, { useStore } from "@/state/state"; import Icon from "@/components/Icon"; import toast from "react-hot-toast"; import { useEffect, useState } from "react"; import type { FC } from "@/types/trill"; import type { UserType } from "@/types/nostrill"; import { isValidPatp } from "urbit-ob"; import { ErrorPage } from "@/pages/Error"; import { useParams } from "wouter"; import { isValidNostrKey } from "@/logic/nostr"; import TrillFeed from "@/components/trill/User"; import NostrFeed from "@/components/nostr/User"; function UserLoader() { const params = useParams(); console.log({ params }); const userString = params.user; if (!userString) return ; else if (isValidPatp(userString)) return ; else if (isValidNostrKey(userString)) return ; else return ; } function UserFeed({ user, userString, }: { user: UserType; userString: string; }) { const { api, pubkey } = useLocalState((s) => ({ api: s.api, addProfile: s.addProfile, addNotification: s.addNotification, lastFact: s.lastFact, pubkey: s.pubkey, })); const isMe = "urbit" in user ? user.urbit === api?.airlock.our : "nostr" in user ? pubkey === user.nostr : false; // auto updating on SSE doesn't work if we do shallow const { following } = useStore(); const feed = following.get(userString); const hasFeed = !feed ? false : Object.entries(feed).length > 0; const refetch = () => feed; const [isFollowLoading, setIsFollowLoading] = useState(false); const [isAccessLoading, setIsAccessLoading] = useState(false); return (
{isMe ? ( ) : "urbit" in user ? ( ) : "nostr" in user ? ( ) : null}
); } export default UserLoader; function MyFeed() { return <>; }