"use client"; import { useLogger } from "@pythnetwork/app-logger"; import { useQueryState, parseAsString, // , parseAsBoolean } from "nuqs"; import { type ComponentProps, Suspense, useCallback, useMemo } from "react"; import { PriceComponentDrawer } from "../PriceComponentDrawer"; import { PriceComponentsCardContents, ResolvedPriceComponentsCard, } from "../PriceComponentsCard"; // import { Cluster } from "../../services/pyth"; type Publisher = ComponentProps< typeof ResolvedPriceComponentsCard >["priceComponents"][number] & { rank?: number | undefined; }; type Props = Omit< ComponentProps, "onPriceComponentAction" >; export const PublishersCard = ({ priceComponents, ...props }: Props) => ( }> ); const ResolvedPublishersCard = ({ priceComponents, ...props }: Props) => { // const logger = useLogger(); const { handleClose, selectedPublisher, updateSelectedPublisherKey } = usePublisherDrawer(priceComponents); const onPriceComponentAction = useCallback( ({ publisherKey }: Publisher) => { updateSelectedPublisherKey(publisherKey); }, [updateSelectedPublisherKey], ); // const [includeTestFeeds, setIncludeTestFeeds] = useQueryState( // "includeTestFeeds", // parseAsBoolean.withDefault(false), // ); // const componentsFilteredByCluster = useMemo( // () => // includeTestFeeds // ? priceComponents // : priceComponents.filter( // (component) => component.cluster === Cluster.Pythnet, // ), // [includeTestFeeds, priceComponents], // ); // const updateIncludeTestFeeds = useCallback( // (newValue: boolean) => { // setIncludeTestFeeds(newValue).catch((error: unknown) => { // logger.error( // "Failed to update include test components query param", // error, // ); // }); // }, // [setIncludeTestFeeds, logger], // ); // // Show test feeds // return ( <> {selectedPublisher && ( )} ); }; const usePublisherDrawer = (publishers: Publisher[]) => { const logger = useLogger(); const [selectedPublisherKey, setSelectedPublisher] = useQueryState( "publisher", parseAsString.withDefault("").withOptions({ history: "push", }), ); const updateSelectedPublisherKey = useCallback( (newPublisherKey: string) => { setSelectedPublisher(newPublisherKey).catch((error: unknown) => { logger.error("Failed to update selected publisher", error); }); }, [setSelectedPublisher, logger], ); const selectedPublisher = useMemo( () => publishers.find( (publisher) => publisher.publisherKey === selectedPublisherKey, ), [selectedPublisherKey, publishers], ); const handleClose = useCallback(() => { updateSelectedPublisherKey(""); }, [updateSelectedPublisherKey]); return { selectedPublisher, handleClose, updateSelectedPublisherKey }; };