fix(catalog): moar clean up

This commit is contained in:
Nikita Nek Dudnik
2020-06-10 15:26:29 +02:00
parent bbaa3960a8
commit ab93732df1
2 changed files with 13 additions and 27 deletions
@@ -40,11 +40,7 @@ import React, { FC, useCallback, useState } from 'react';
import { Link as RouterLink } from 'react-router-dom';
import { useAsync } from 'react-use';
import { catalogApiRef } from '../..';
import {
defaultFilter,
filterGroups,
asyncEntityFilters,
} from '../../data/filters';
import { defaultFilter, filterGroups, entityFilters } from '../../data/filters';
import { entityToComponent, findLocationForEntityMeta } from '../../data/utils';
import { useStarredEntities } from '../../hooks/useStarredEntites';
import {
@@ -79,10 +75,13 @@ export const CatalogPage: FC<{}> = () => {
const { value, error, loading } = useAsync(
() =>
asyncEntityFilters[selectedFilter.id]({
entitiesResolver: () => catalogApi.getEntities(),
isStarredEntity,
}),
catalogApi
.getEntities()
.then(entities =>
entities.filter(
entityFilters[selectedFilter.id]({ isStarredEntity }),
),
),
[selectedFilter.id, starredEntities.size],
);
+5 -18
View File
@@ -55,24 +55,11 @@ export const filterGroups: CatalogFilterGroup[] = [
},
];
type ResolverFunction = ({
entitiesResolver,
isStarredEntity,
}: {
entitiesResolver: () => Promise<Entity[]>;
isStarredEntity: (entity: Entity) => boolean;
}) => Promise<Entity[]>;
export const asyncEntityFilters: Record<FilterGroupItem, ResolverFunction> = {
[FilterGroupItem.OWNED]: async () => [],
[FilterGroupItem.ALL]: async ({ entitiesResolver: asyncFn }) => {
return asyncFn();
},
[FilterGroupItem.STARRED]: async ({ entitiesResolver, isStarredEntity }) => {
const allEntities = await entitiesResolver();
return allEntities.filter(entity => isStarredEntity(entity));
},
export const entityFilters = {
[FilterGroupItem.OWNED]: () => () => false,
[FilterGroupItem.ALL]: () => () => true,
[FilterGroupItem.STARRED]: ({ isStarredEntity }: { isStarredEntity: any }) =>
isStarredEntity,
};
export const defaultFilter: CatalogFilterItem = filterGroups[0].items[0];