From 34245687a58c950e2780f7a9beefe54374e2f86c Mon Sep 17 00:00:00 2001 From: Michael Genson <71845777+michael-genson@users.noreply.github.com> Date: Mon, 27 Jan 2025 01:37:09 -0600 Subject: [PATCH] feat: Add Servings/Yield to Recipe Actions (#4952) Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com> --- docs/docs/documentation/getting-started/features.md | 3 +++ .../components/Domain/Recipe/RecipeContextMenu.vue | 2 +- frontend/composables/use-group-recipe-actions.ts | 12 +++++++++--- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/docs/docs/documentation/getting-started/features.md b/docs/docs/documentation/getting-started/features.md index 8e4aa62581c..a068ceea540 100644 --- a/docs/docs/documentation/getting-started/features.md +++ b/docs/docs/documentation/getting-started/features.md @@ -139,6 +139,9 @@ Below is a list of all valid merge fields: - ${id} - ${slug} - ${url} +- ${servings} +- ${yieldQuantity} +- ${yieldText} To add, modify, or delete Recipe Actions, visit the Data Management page (more on that below). diff --git a/frontend/components/Domain/Recipe/RecipeContextMenu.vue b/frontend/components/Domain/Recipe/RecipeContextMenu.vue index a0a47832c58..b6165feff77 100644 --- a/frontend/components/Domain/Recipe/RecipeContextMenu.vue +++ b/frontend/components/Domain/Recipe/RecipeContextMenu.vue @@ -371,7 +371,7 @@ export default defineComponent({ const groupRecipeActionsStore = useGroupRecipeActions(); async function executeRecipeAction(action: GroupRecipeActionOut) { - const response = await groupRecipeActionsStore.execute(action, props.recipe); + const response = await groupRecipeActionsStore.execute(action, props.recipe, props.recipeScale); if (action.actionType === "post") { if (!response?.error) { diff --git a/frontend/composables/use-group-recipe-actions.ts b/frontend/composables/use-group-recipe-actions.ts index 2701c0fe4c0..d1c5171e718 100644 --- a/frontend/composables/use-group-recipe-actions.ts +++ b/frontend/composables/use-group-recipe-actions.ts @@ -46,17 +46,23 @@ export const useGroupRecipeActions = function ( return groupRecipeActions.value; }); - function parseRecipeActionUrl(url: string, recipe: Recipe): string { + function parseRecipeActionUrl(url: string, recipe: Recipe, recipeScale: number): string { + const recipeServings = (recipe.recipeServings || 1) * recipeScale; + const recipeYieldQuantity = (recipe.recipeYieldQuantity || 1) * recipeScale; + /* eslint-disable no-template-curly-in-string */ return url .replace("${url}", window.location.href) .replace("${id}", recipe.id || "") .replace("${slug}", recipe.slug || "") + .replace("${servings}", recipeServings.toString()) + .replace("${yieldQuantity}", recipeYieldQuantity.toString()) + .replace("${yieldText}", recipe.recipeYield || "") /* eslint-enable no-template-curly-in-string */ }; - async function execute(action: GroupRecipeActionOut, recipe: Recipe): Promise> { - const url = parseRecipeActionUrl(action.url, recipe); + async function execute(action: GroupRecipeActionOut, recipe: Recipe, recipeScale: number): Promise> { + const url = parseRecipeActionUrl(action.url, recipe, recipeScale); switch (action.actionType) { case "link":