import { useEffect, useState } from "react"; import PostCard from "./PostCard/PostCard"; import NewThreadCard from "./PostCard/NewThreadCard"; import { uniqBy } from "../utils/utils"; // Assume getPow is a correct import now import { subGlobalFeed } from "../utils/subscriptions"; import { verifyPow } from "../utils/mine"; import { Event } from "nostr-tools"; const useUniqEvents = () => { const [events, setEvents] = useState([]); useEffect(() => { const onEvent = (event: Event) => setEvents((prevEvents) => [...prevEvents, event]); const unsubscribe = subGlobalFeed(onEvent); return unsubscribe; }, []); return uniqBy(events, "id"); }; const Home = () => { const filterDifficulty = localStorage.getItem("filterDifficulty") || 20; const [sortByTime, setSortByTime] = useState(true); const uniqEvents = useUniqEvents(); const postEvents = uniqEvents .filter((event) => verifyPow(event) >= Number(filterDifficulty) && event.kind === 1 && !event.tags.some((tag) => tag[0] === "e") ) const sortedEvents = [...postEvents].sort((a, b) => sortByTime ? b.created_at - a.created_at : verifyPow(b) - verifyPow(a) ); const toggleSort = () => { setSortByTime(prev => !prev); }; const getMetadataEvent = (event: Event) => { return uniqEvents.find((e) => e.pubkey === event.pubkey && e.kind === 0) || null; }; const countReplies = (event: Event) => { return uniqEvents.filter((e) => e.tags.some((tag) => tag[0] === "e" && tag[1] === event.id)).length; }; // Render the component return (
{sortedEvents.map((event) => ( ))}
); }; export default Home;