fleet/frontend/services/entities/labels.ts
RachelElysia a2fe3bae7e
Edit Packs Page: Refactor and revamp (#1400)
* New query pack table renders
* services/entities created/updated with 5+ needed APIs requests for EditPacksPage
* Refactor jsx to tsx PackQueriesListWrapper, EditPackForm, EditPackPage
* Refactor to new patterns on useQuery, useEffect, and useState
* Refactor to new pattern formData formatting
* Edit, remove pack query modals
* e2e test: packflow built to test create, update, delete of pack, fix brittle teamflow
2021-10-04 16:26:10 -04:00

66 lines
1.6 KiB
TypeScript

/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
import sendRequest from "services";
import endpoints from "fleet/endpoints";
import helpers from "fleet/helpers";
import { ILabel, ILabelFormData } from "interfaces/label";
export default {
create: async (formData: ILabelFormData) => {
const { LABELS } = endpoints;
try {
const { label: createdLabel } = await sendRequest(
"POST",
LABELS,
formData
);
return {
...createdLabel,
slug: helpers.labelSlug(createdLabel),
type: "custom",
};
} catch (error) {
console.error(error);
throw new Error("Could not create label.");
}
},
destroy: (label: ILabel) => {
const { LABELS } = endpoints;
const path = `${LABELS}/id/${label.id}`;
return sendRequest("DELETE", path);
},
loadAll: async () => {
const { LABELS } = endpoints;
try {
const response = await sendRequest("GET", LABELS);
return { labels: helpers.formatLabelResponse(response) };
} catch (error) {
console.error(error);
throw new Error("Could not load all labels.");
}
},
update: async (label: ILabel, updatedAttrs: ILabel) => {
const { LABELS } = endpoints;
const path = `${LABELS}/${label.id}`;
try {
const { label: updatedLabel } = await sendRequest(
"PATCH",
path,
updatedAttrs
);
return {
...updatedLabel,
slug: helpers.labelSlug(updatedLabel),
type: "custom",
};
} catch (error) {
console.error(error);
throw new Error("Could not update label.");
}
},
};