mirror of
				https://github.com/mealie-recipes/mealie.git
				synced 2025-10-31 02:03:35 -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,
 | |
|   };
 | |
| }
 |