mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-10-27 00:04:23 -04:00
86 lines
2.3 KiB
TypeScript
86 lines
2.3 KiB
TypeScript
import { useRecipeCreatePreferences } from "~/composables/use-users/preferences";
|
|
|
|
export interface UseNewRecipeOptionsProps {
|
|
enableImportKeywords?: boolean;
|
|
enableStayInEditMode?: boolean;
|
|
enableParseRecipe?: boolean;
|
|
}
|
|
|
|
export function useNewRecipeOptions(props: UseNewRecipeOptionsProps = {}) {
|
|
const {
|
|
enableImportKeywords = true,
|
|
enableStayInEditMode = true,
|
|
enableParseRecipe = true,
|
|
} = props;
|
|
|
|
const router = useRouter();
|
|
const recipeCreatePreferences = useRecipeCreatePreferences();
|
|
|
|
const importKeywordsAsTags = computed({
|
|
get() {
|
|
if (!enableImportKeywords) return false;
|
|
return recipeCreatePreferences.value.importKeywordsAsTags;
|
|
},
|
|
set(v: boolean) {
|
|
if (!enableImportKeywords) return;
|
|
recipeCreatePreferences.value.importKeywordsAsTags = v;
|
|
},
|
|
});
|
|
|
|
const stayInEditMode = computed({
|
|
get() {
|
|
if (!enableStayInEditMode) return false;
|
|
return recipeCreatePreferences.value.stayInEditMode;
|
|
},
|
|
set(v: boolean) {
|
|
if (!enableStayInEditMode) return;
|
|
recipeCreatePreferences.value.stayInEditMode = v;
|
|
},
|
|
});
|
|
|
|
const parseRecipe = computed({
|
|
get() {
|
|
if (!enableParseRecipe) return false;
|
|
return recipeCreatePreferences.value.parseRecipe;
|
|
},
|
|
set(v: boolean) {
|
|
if (!enableParseRecipe) return;
|
|
recipeCreatePreferences.value.parseRecipe = v;
|
|
},
|
|
});
|
|
|
|
function navigateToRecipe(recipeSlug: string, groupSlug: string, createPagePath: string) {
|
|
const editParam = enableStayInEditMode ? stayInEditMode.value : false;
|
|
const parseParam = enableParseRecipe ? parseRecipe.value : false;
|
|
|
|
const queryParams = new URLSearchParams();
|
|
if (editParam) {
|
|
queryParams.set("edit", "true");
|
|
}
|
|
if (parseParam) {
|
|
queryParams.set("parse", "true");
|
|
}
|
|
|
|
const queryString = queryParams.toString();
|
|
const recipeUrl = `/g/${groupSlug}/r/${recipeSlug}${queryString ? `?${queryString}` : ""}`;
|
|
|
|
// Replace current entry to prevent re-import on back navigation
|
|
router.replace(createPagePath).then(() => router.push(recipeUrl));
|
|
}
|
|
|
|
return {
|
|
// Computed properties for the checkboxes
|
|
importKeywordsAsTags,
|
|
stayInEditMode,
|
|
parseRecipe,
|
|
|
|
// Helper functions
|
|
navigateToRecipe,
|
|
|
|
// Props for conditional rendering
|
|
enableImportKeywords,
|
|
enableStayInEditMode,
|
|
enableParseRecipe,
|
|
};
|
|
}
|