Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | import { useMemo } from "react";
import { ExtendedCatalogPackage } from "../../api/catalog-search";
import { CatalogSearchSort } from "../../api/catalog-search/constants";
import { FeaturedPackagesDetail } from "../../api/config";
import { useSearchContext } from "../../contexts/Search";
import { useCatalog } from "../../hooks/useCatalog";
import { useCatalogResults } from "../../hooks/useCatalogResults";
export const useSection = ({
showLastUpdated,
showPackages,
}: {
showLastUpdated?: number;
showPackages?: FeaturedPackagesDetail[];
}) => {
const { isLoading, error } = useCatalog();
const { results } = useCatalogResults({
limit: 25,
sort: CatalogSearchSort.PublishDateDesc,
});
const searchInstance = useSearchContext();
return useMemo(() => {
if (isLoading || error || !results) return [];
if (showLastUpdated) {
return results.slice(0, showLastUpdated);
} else if (showPackages && searchInstance) {
return showPackages
.map((p) => {
const [pkg] = searchInstance.findByName(p.name, { dedup: true });
if (pkg) {
return {
...pkg,
comment: p.comment,
};
}
return undefined;
})
.filter((pkg) => pkg !== undefined) as ExtendedCatalogPackage[];
} else {
return undefined;
}
}, [
isLoading,
error,
results,
showLastUpdated,
showPackages,
searchInstance,
]);
};
|