diff --git a/frontend/composables/api/api-client.ts b/frontend/composables/api/api-client.ts index b8739915a..012d6c0f5 100644 --- a/frontend/composables/api/api-client.ts +++ b/frontend/composables/api/api-client.ts @@ -1,16 +1,17 @@ -import type { AxiosInstance, AxiosResponse } from "axios"; +import type { AxiosInstance, AxiosResponse, AxiosRequestConfig } from "axios"; import type { ApiRequestInstance, RequestResponse } from "~/lib/api/types/non-generated"; import { AdminAPI, PublicApi, UserApi } from "~/lib/api"; import { PublicExploreApi } from "~/lib/api/client-public"; const request = { async safe( - funcCall: (url: string, data: U) => Promise>, + funcCall: (url: string, data: U, config?: AxiosRequestConfig) => Promise>, url: string, data: U, + config?: AxiosRequestConfig, ): Promise> { let error = null; - const response = await funcCall(url, data).catch(function (e) { + const response = await funcCall(url, data, config).catch(function (e) { console.log(e); // Insert Generic Error Handling Here error = e; @@ -22,9 +23,9 @@ const request = { function getRequests(axiosInstance: AxiosInstance): ApiRequestInstance { return { - async get(url: string, params = {}): Promise> { + async get(url: string, params = {}, config?: AxiosRequestConfig): Promise> { let error = null; - const response = await axiosInstance.get(url, params).catch((e) => { + const response = await axiosInstance.get(url, { ...config, params }).catch((e) => { error = e; }); if (response != null) { @@ -33,20 +34,20 @@ function getRequests(axiosInstance: AxiosInstance): ApiRequestInstance { return { response: null, error, data: null }; }, - async post(url: string, data: U) { - return await request.safe(axiosInstance.post, url, data); + async post(url: string, data: U, config?: AxiosRequestConfig) { + return await request.safe(axiosInstance.post, url, data, config); }, - async put(url: string, data: U) { - return await request.safe(axiosInstance.put, url, data); + async put(url: string, data: U, config?: AxiosRequestConfig) { + return await request.safe(axiosInstance.put, url, data, config); }, - async patch>(url: string, data: U) { - return await request.safe(axiosInstance.patch, url, data); + async patch>(url: string, data: U, config?: AxiosRequestConfig) { + return await request.safe(axiosInstance.patch, url, data, config); }, - async delete(url: string) { - return await request.safe(axiosInstance.delete, url, undefined); + async delete(url: string, config?: AxiosRequestConfig) { + return await request.safe(axiosInstance.delete, url, undefined, config); }, }; } diff --git a/frontend/lib/api/types/non-generated.ts b/frontend/lib/api/types/non-generated.ts index 1a9797ccd..801fdd1ca 100644 --- a/frontend/lib/api/types/non-generated.ts +++ b/frontend/lib/api/types/non-generated.ts @@ -1,4 +1,4 @@ -import type { AxiosResponse } from "axios"; +import type { AxiosRequestConfig, AxiosResponse } from "axios"; export type NoUndefinedField = { [P in keyof T]-?: NoUndefinedField> }; @@ -9,11 +9,11 @@ export interface RequestResponse { } export interface ApiRequestInstance { - get(url: string, data?: unknown): Promise>; - post(url: string, data: unknown): Promise>; - put(url: string, data: U): Promise>; - patch>(url: string, data: U): Promise>; - delete(url: string): Promise>; + get(url: string, data?: unknown, config?: AxiosRequestConfig): Promise>; + post(url: string, data: unknown, config?: AxiosRequestConfig): Promise>; + put(url: string, data: U, config?: AxiosRequestConfig): Promise>; + patch>(url: string, data: U, config?: AxiosRequestConfig): Promise>; + delete(url: string, config?: AxiosRequestConfig): Promise>; } export interface PaginationData { diff --git a/frontend/lib/api/user/recipes/recipe.ts b/frontend/lib/api/user/recipes/recipe.ts index cad7d590c..b89a4eb51 100644 --- a/frontend/lib/api/user/recipes/recipe.ts +++ b/frontend/lib/api/user/recipes/recipe.ts @@ -169,7 +169,7 @@ export class RecipeAPI extends BaseCRUDAPI { apiRoute = `${apiRoute}?translateLanguage=${translateLanguage}`; } - return await this.requests.post(apiRoute, formData); + return await this.requests.post(apiRoute, formData, { timeout: 120000 }); } async parseIngredients(parser: Parser, ingredients: Array) {