1
0
Fork 0
mirror of https://github.com/mealie-recipes/mealie.git synced 2025-07-19 21:29:40 +02:00

feat: Add Servings/Yield to Recipe Actions (#4952)

Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
This commit is contained in:
Michael Genson 2025-01-27 01:37:09 -06:00 committed by GitHub
parent 7e5c750231
commit 34245687a5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 13 additions and 4 deletions

View file

@ -139,6 +139,9 @@ Below is a list of all valid merge fields:
- ${id} - ${id}
- ${slug} - ${slug}
- ${url} - ${url}
- ${servings}
- ${yieldQuantity}
- ${yieldText}
To add, modify, or delete Recipe Actions, visit the Data Management page (more on that below). To add, modify, or delete Recipe Actions, visit the Data Management page (more on that below).

View file

@ -371,7 +371,7 @@ export default defineComponent({
const groupRecipeActionsStore = useGroupRecipeActions(); const groupRecipeActionsStore = useGroupRecipeActions();
async function executeRecipeAction(action: GroupRecipeActionOut) { 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 (action.actionType === "post") {
if (!response?.error) { if (!response?.error) {

View file

@ -46,17 +46,23 @@ export const useGroupRecipeActions = function (
return groupRecipeActions.value; 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 */ /* eslint-disable no-template-curly-in-string */
return url return url
.replace("${url}", window.location.href) .replace("${url}", window.location.href)
.replace("${id}", recipe.id || "") .replace("${id}", recipe.id || "")
.replace("${slug}", recipe.slug || "") .replace("${slug}", recipe.slug || "")
.replace("${servings}", recipeServings.toString())
.replace("${yieldQuantity}", recipeYieldQuantity.toString())
.replace("${yieldText}", recipe.recipeYield || "")
/* eslint-enable no-template-curly-in-string */ /* eslint-enable no-template-curly-in-string */
}; };
async function execute(action: GroupRecipeActionOut, recipe: Recipe): Promise<void | RequestResponse<unknown>> { async function execute(action: GroupRecipeActionOut, recipe: Recipe, recipeScale: number): Promise<void | RequestResponse<unknown>> {
const url = parseRecipeActionUrl(action.url, recipe); const url = parseRecipeActionUrl(action.url, recipe, recipeScale);
switch (action.actionType) { switch (action.actionType) {
case "link": case "link":