diff --git a/frontend/api/class-interfaces/recipes/recipe.ts b/frontend/api/class-interfaces/recipes/recipe.ts index 957f37675983..2f305b7ff6c7 100644 --- a/frontend/api/class-interfaces/recipes/recipe.ts +++ b/frontend/api/class-interfaces/recipes/recipe.ts @@ -2,7 +2,15 @@ import { CommentsApi } from "./recipe-comments"; import { RecipeShareApi } from "./recipe-share"; import { BaseCRUDAPI } from "~/api/_base"; -import { Recipe, CreateRecipe, RecipeAsset, CreateRecipeByUrlBulk, ParsedIngredient, UpdateImageResponse, RecipeZipTokenResponse } from "~/types/api-types/recipe"; +import { + Recipe, + CreateRecipe, + RecipeAsset, + CreateRecipeByUrlBulk, + ParsedIngredient, + UpdateImageResponse, + RecipeZipTokenResponse, +} from "~/types/api-types/recipe"; import { ApiRequestInstance } from "~/types/api"; export type Parser = "nlp" | "brute"; @@ -35,8 +43,6 @@ const routes = { recipesSlugComments: (slug: string) => `${prefix}/recipes/${slug}/comments`, recipesSlugCommentsId: (slug: string, id: number) => `${prefix}/recipes/${slug}/comments/${id}`, - - recipeShareToken: (token: string) => `${prefix}/recipes/shared/${token}`, }; export class RecipeAPI extends BaseCRUDAPI { @@ -110,8 +116,4 @@ export class RecipeAPI extends BaseCRUDAPI { getZipRedirectUrl(recipeSlug: string, token: string) { return `${routes.recipesRecipeSlugExportZip(recipeSlug)}?token=${token}`; } - - async getShared(item_id: string) { - return await this.requests.get(routes.recipeShareToken(item_id)); - } } diff --git a/frontend/api/public-api.ts b/frontend/api/public-api.ts index d6f691db91f2..584c966f15e8 100644 --- a/frontend/api/public-api.ts +++ b/frontend/api/public-api.ts @@ -1,11 +1,17 @@ import { ValidatorsApi } from "./public/validators"; +import { ExploreApi } from "./public/explore"; +import { SharedApi } from "./public/shared"; import { ApiRequestInstance } from "~/types/api"; export class PublicApi { public validators: ValidatorsApi; + public explore: ExploreApi; + public shared: SharedApi; constructor(requests: ApiRequestInstance) { this.validators = new ValidatorsApi(requests); + this.explore = new ExploreApi(requests); + this.shared = new SharedApi(requests); Object.freeze(this); } diff --git a/frontend/api/public/explore.ts b/frontend/api/public/explore.ts new file mode 100644 index 000000000000..2ef463e5acaf --- /dev/null +++ b/frontend/api/public/explore.ts @@ -0,0 +1,14 @@ +import { BaseAPI } from "../_base"; +import { Recipe } from "~/types/api-types/recipe"; + +const prefix = "/api"; + +const routes = { + recipe: (groupId: string, recipeSlug: string) => `${prefix}/explore/recipes/${groupId}/${recipeSlug}`, +}; + +export class ExploreApi extends BaseAPI { + async recipe(groupId: string, recipeSlug: string) { + return await this.requests.get(routes.recipe(groupId, recipeSlug)); + } +} diff --git a/frontend/api/public/shared.ts b/frontend/api/public/shared.ts new file mode 100644 index 000000000000..dc0b19c430e3 --- /dev/null +++ b/frontend/api/public/shared.ts @@ -0,0 +1,14 @@ +import { BaseAPI } from "../_base"; +import { Recipe } from "~/types/api-types/recipe"; + +const prefix = "/api"; + +const routes = { + recipeShareToken: (token: string) => `${prefix}/recipes/shared/${token}`, +}; + +export class SharedApi extends BaseAPI { + async getShared(item_id: string) { + return await this.requests.get(routes.recipeShareToken(item_id)); + } +} diff --git a/frontend/components/Domain/Recipe/RecipeActionMenu.vue b/frontend/components/Domain/Recipe/RecipeActionMenu.vue index 6781ec08213e..3679832f9187 100644 --- a/frontend/components/Domain/Recipe/RecipeActionMenu.vue +++ b/frontend/components/Domain/Recipe/RecipeActionMenu.vue @@ -21,7 +21,7 @@
- +