Commit 589cbbf3 authored by Max Alekseenko's avatar Max Alekseenko

fix categories placeholder

parent e4df8307
...@@ -72,7 +72,7 @@ export default function useMarketplace() { ...@@ -72,7 +72,7 @@ export default function useMarketplace() {
}, []); }, []);
const { isPlaceholderData, isError, error, data, displayedApps } = useMarketplaceApps(debouncedFilterQuery, selectedCategoryId, favoriteApps); const { isPlaceholderData, isError, error, data, displayedApps } = useMarketplaceApps(debouncedFilterQuery, selectedCategoryId, favoriteApps);
const { isPlaceholderData: isCategoriesPlaceholderData, data: categories } = useMarketplaceCategories(data); const { isPlaceholderData: isCategoriesPlaceholderData, data: categories } = useMarketplaceCategories(data, isPlaceholderData);
React.useEffect(() => { React.useEffect(() => {
setFavoriteApps(getFavoriteApps()); setFavoriteApps(getFavoriteApps());
......
...@@ -12,27 +12,29 @@ import useApiFetch from 'lib/hooks/useFetch'; ...@@ -12,27 +12,29 @@ import useApiFetch from 'lib/hooks/useFetch';
const feature = config.features.marketplace; const feature = config.features.marketplace;
const categoriesUrl = (feature.isEnabled && feature.categoriesUrl) || ''; const categoriesUrl = (feature.isEnabled && feature.categoriesUrl) || '';
export default function useMarketplaceCategories(apps: Array<MarketplaceAppOverview> | undefined) { const categoriesStub = Array(9).fill('Bridge').map((c, i) => c + i);
export default function useMarketplaceCategories(apps: Array<MarketplaceAppOverview> | undefined, isAppsPlaceholderData: boolean) {
const apiFetch = useApiFetch(); const apiFetch = useApiFetch();
const { value: isExperiment } = useFeatureValue('marketplace_exp', true); const { value: isExperiment } = useFeatureValue('marketplace_exp', false);
const { isPlaceholderData, data } = useQuery<unknown, ResourceError<unknown>, Array<string>>({ const { isPlaceholderData, data } = useQuery<unknown, ResourceError<unknown>, Array<string>>({
queryKey: [ 'marketplace-categories' ], queryKey: [ 'marketplace-categories' ],
queryFn: async() => apiFetch(categoriesUrl, undefined, { resource: 'marketplace-categories' }), queryFn: async() => apiFetch(categoriesUrl, undefined, { resource: 'marketplace-categories' }),
placeholderData: categoriesUrl ? Array(9).fill('Bridge').map((c, i) => c + i) : undefined, placeholderData: categoriesUrl ? categoriesStub : undefined,
staleTime: Infinity, staleTime: Infinity,
enabled: Boolean(categoriesUrl), enabled: Boolean(categoriesUrl),
}); });
const categories = React.useMemo(() => { const categories = React.useMemo(() => {
if (!apps?.length) { if (isAppsPlaceholderData || isPlaceholderData) {
return []; return categoriesStub.map(category => ({ name: category, count: 0 }));
} }
let categoryNames: Array<string> = []; let categoryNames: Array<string> = [];
const grouped = _groudBy(apps, app => app.categories); const grouped = _groudBy(apps, app => app.categories);
if (data?.length && isExperiment) { if (data?.length && !isPlaceholderData && isExperiment) {
categoryNames = data; categoryNames = data;
} else { } else {
categoryNames = Object.keys(grouped); categoryNames = Object.keys(grouped);
...@@ -41,10 +43,10 @@ export default function useMarketplaceCategories(apps: Array<MarketplaceAppOverv ...@@ -41,10 +43,10 @@ export default function useMarketplaceCategories(apps: Array<MarketplaceAppOverv
return categoryNames return categoryNames
.map(category => ({ name: category, count: grouped[category]?.length || 0 })) .map(category => ({ name: category, count: grouped[category]?.length || 0 }))
.filter(c => c.count > 0); .filter(c => c.count > 0);
}, [ apps, data, isExperiment ]); }, [ apps, isAppsPlaceholderData, data, isPlaceholderData, isExperiment ]);
return React.useMemo(() => ({ return React.useMemo(() => ({
isPlaceholderData, isPlaceholderData: isAppsPlaceholderData || isPlaceholderData,
data: categories, data: categories,
}), [ isPlaceholderData, categories ]); }), [ isPlaceholderData, isAppsPlaceholderData, categories ]);
} }
...@@ -91,7 +91,7 @@ const Marketplace = () => { ...@@ -91,7 +91,7 @@ const Marketplace = () => {
<> <>
{ isExperiment && ( { isExperiment && (
<Box marginTop={{ base: 0, lg: 8 }}> <Box marginTop={{ base: 0, lg: 8 }}>
{ (isPlaceholderData || isCategoriesPlaceholderData) ? ( { (isCategoriesPlaceholderData) ? (
<TabsSkeleton tabs={ categoryTabs }/> <TabsSkeleton tabs={ categoryTabs }/>
) : ( ) : (
<TabsWithScroll <TabsWithScroll
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment