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