90 lines
3.0 KiB
TypeScript
90 lines
3.0 KiB
TypeScript
import { PizzaOrder } from "./types";
|
|
import { getBaseUrl, getToken } from "./Utils";
|
|
|
|
async function request<TResponse>(
|
|
url: string,
|
|
config: RequestInit = {}
|
|
): Promise<TResponse> {
|
|
config.headers = config?.headers ? new Headers(config.headers) : new Headers();
|
|
config.headers.set("Authorization", `Bearer ${getToken()}`);
|
|
return fetch(getBaseUrl() + url, config).then(response => {
|
|
if (!response.ok) {
|
|
throw new Error(response.statusText);
|
|
}
|
|
return response.json() as TResponse;
|
|
});
|
|
}
|
|
|
|
const api = {
|
|
get: <TResponse>(url: string) => request<TResponse>(url),
|
|
post: <TBody extends BodyInit, TResponse>(url: string, body: TBody) => request<TResponse>(url, { method: 'POST', body, headers: { 'Content-Type': 'application/json' } }),
|
|
}
|
|
|
|
export const getQrUrl = (login: string) => {
|
|
return `${getBaseUrl()}/api/qr?login=${login}`;
|
|
}
|
|
|
|
export const getData = async () => {
|
|
return await api.get<any>('/api/data');
|
|
}
|
|
|
|
export const getFood = async () => {
|
|
return await api.get<any>('/api/food');
|
|
}
|
|
|
|
export const getPizzy = async () => {
|
|
return await api.get<any>('/api/pizza');
|
|
}
|
|
|
|
export const createPizzaDay = async () => {
|
|
return await api.post<any, any>('/api/createPizzaDay', undefined);
|
|
}
|
|
|
|
export const deletePizzaDay = async () => {
|
|
return await api.post<any, any>('/api/deletePizzaDay', undefined);
|
|
}
|
|
|
|
export const lockPizzaDay = async () => {
|
|
return await api.post<any, any>('/api/lockPizzaDay', undefined);
|
|
}
|
|
|
|
export const unlockPizzaDay = async () => {
|
|
return await api.post<any, any>('/api/unlockPizzaDay', undefined);
|
|
}
|
|
|
|
export const finishOrder = async () => {
|
|
return await api.post<any, any>('/api/finishOrder', undefined);
|
|
}
|
|
|
|
export const finishDelivery = async (bankAccount?: string, bankAccountHolder?: string) => {
|
|
return await api.post<any, any>('/api/finishDelivery', JSON.stringify({ bankAccount, bankAccountHolder }));
|
|
}
|
|
|
|
export const addChoice = async (locationIndex: number, foodIndex?: number) => {
|
|
return await api.post<any, any>('/api/addChoice', JSON.stringify({ locationIndex, foodIndex }));
|
|
}
|
|
|
|
export const removeChoices = async (locationIndex: number) => {
|
|
return await api.post<any, any>('/api/removeChoices', JSON.stringify({ locationIndex }));
|
|
}
|
|
|
|
export const removeChoice = async (locationIndex: number, foodIndex: number) => {
|
|
return await api.post<any, any>('/api/removeChoice', JSON.stringify({ locationIndex, foodIndex }));
|
|
}
|
|
|
|
export const addPizza = async (pizzaIndex: number, pizzaSizeIndex: number) => {
|
|
return await api.post<any, any>('/api/addPizza', JSON.stringify({ pizzaIndex, pizzaSizeIndex }));
|
|
}
|
|
|
|
export const removePizza = async (pizzaOrder: PizzaOrder) => {
|
|
return await api.post<any, any>('/api/removePizza', JSON.stringify({ pizzaOrder }));
|
|
}
|
|
|
|
export const updateNote = async (note?: string) => {
|
|
return await api.post<any, any>('/api/updateNote', JSON.stringify({ note }));
|
|
}
|
|
|
|
export const login = async (login: string) => {
|
|
return await api.post<any, any>('/api/login', JSON.stringify({ login }));
|
|
}
|