mirror of
				https://github.com/mealie-recipes/mealie.git
				synced 2025-11-04 03:03:18 -05: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,
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 |