mirror of
https://github.com/Unleash/unleash.git
synced 2025-11-10 01:19:53 +01:00
* refactor: remove unused FeatureToggleListItemChip * refactor: remove unused archive.module.scss * refactor: remove unused ShowArchive route * refactor: port FeatureToggleList to TS/SWR * refactor: fix IUseFeaturesOutput interface prefix * refactor: remove unnecessary pages files * refactor: persist the features sort/filter state * refactor: format files * refactor: fix FeatureToggleListContainer file name * refactor: fix arrow function syntax * refactor: improve storage helper comments
42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
import useSWR, { mutate, SWRConfiguration } from 'swr';
|
|
import { useCallback } from 'react';
|
|
import { formatApiPath } from '../../../../utils/format-path';
|
|
import handleErrorResponses from '../httpErrorResponseHandler';
|
|
import { IFeatureToggle } from '../../../../interfaces/featureToggle';
|
|
|
|
const PATH = formatApiPath('api/admin/archive/features');
|
|
|
|
export interface UseFeaturesArchiveOutput {
|
|
archivedFeatures: IFeatureToggle[];
|
|
refetchArchived: () => void;
|
|
loading: boolean;
|
|
error?: Error;
|
|
}
|
|
|
|
export const useFeaturesArchive = (
|
|
options?: SWRConfiguration
|
|
): UseFeaturesArchiveOutput => {
|
|
const { data, error } = useSWR<{ features: IFeatureToggle[] }>(
|
|
PATH,
|
|
fetchArchivedFeatures,
|
|
options
|
|
);
|
|
|
|
const refetchArchived = useCallback(() => {
|
|
mutate(PATH).catch(console.warn);
|
|
}, []);
|
|
|
|
return {
|
|
archivedFeatures: data?.features || [],
|
|
refetchArchived,
|
|
loading: !error && !data,
|
|
error,
|
|
};
|
|
};
|
|
|
|
const fetchArchivedFeatures = () => {
|
|
return fetch(PATH, { method: 'GET' })
|
|
.then(handleErrorResponses('Archive'))
|
|
.then(res => res.json());
|
|
};
|