1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-11-01 19:07:38 +01:00
unleash.unleash/frontend/src/hooks/api/actions/useFeatureApi/useFeatureApi.ts
Fredrik Strand Oseberg 47579e2616 Feat/toggle view (#389)
* feat: toggle view

* fix: navigation

* eat: toggle view

* fix: resolve lint

* fix: remove console logs

* fix: reimplement feature validation
2021-10-01 13:49:18 +02:00

119 lines
3.0 KiB
TypeScript

import { ITag } from '../../../../interfaces/tags';
import useAPI from '../useApi/useApi';
const useFeatureApi = () => {
const { makeRequest, createRequest, errors } = useAPI({
propagateErrors: true,
});
const toggleFeatureEnvironmentOn = async (
projectId: string,
featureId: string,
environmentId: string
) => {
const path = `api/admin/projects/${projectId}/features/${featureId}/environments/${environmentId}/on`;
const req = createRequest(
path,
{ method: 'POST' },
'toggleFeatureEnvironmentOn'
);
try {
const res = await makeRequest(req.caller, req.id);
return res;
} catch (e) {
throw e;
}
};
const toggleFeatureEnvironmentOff = async (
projectId: string,
featureId: string,
environmentId: string
) => {
const path = `api/admin/projects/${projectId}/features/${featureId}/environments/${environmentId}/off`;
const req = createRequest(
path,
{ method: 'POST' },
'toggleFeatureEnvironmentOff'
);
try {
const res = await makeRequest(req.caller, req.id);
return res;
} catch (e) {
throw e;
}
};
const changeFeatureProject = async (
projectId: string,
featureId: string,
newProjectId: string
) => {
const path = `api/admin/projects/${projectId}/features/${featureId}/changeProject`;
const req = createRequest(path, {
method: 'POST',
body: JSON.stringify({ newProjectId }),
});
try {
const res = await makeRequest(req.caller, req.id);
return res;
} catch (e) {
throw e;
}
};
const addTag = async (featureId: string, tag: ITag) => {
// TODO: Change this path to the new API when moved.
const path = `api/admin/features/${featureId}/tags`;
const req = createRequest(path, {
method: 'POST',
body: JSON.stringify({ ...tag }),
});
try {
const res = await makeRequest(req.caller, req.id);
return res;
} catch (e) {
throw e;
}
};
const deleteTag = async (
featureId: string,
type: string,
value: string
) => {
// TODO: Change this path to the new API when moved.
const path = `api/admin/features/${featureId}/tags/${type}/${value}`;
const req = createRequest(path, {
method: 'DELETE',
});
try {
const res = await makeRequest(req.caller, req.id);
return res;
} catch (e) {
throw e;
}
};
return {
changeFeatureProject,
errors,
toggleFeatureEnvironmentOn,
toggleFeatureEnvironmentOff,
addTag,
deleteTag,
};
};
export default useFeatureApi;