1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-11-10 01:19:53 +01:00
unleash.unleash/frontend/src/hooks/api/getters/useFeaturesArchive/useFeaturesArchive.ts
olav ff8d983d7e refactor: port FeatureToggleList to TS/SWR (#663)
* 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
2022-02-08 12:06:25 +01:00

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());
};