fix(catalog): moar clean up
This commit is contained in:
@@ -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],
|
||||
);
|
||||
|
||||
|
||||
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user