mirror of
				https://github.com/mealie-recipes/mealie.git
				synced 2025-10-30 17:53:31 -04:00 
			
		
		
		
	fix: unsafe window access on recipe assets (#1613)
resolves 500 error on new recipes page
This commit is contained in:
		| @@ -81,10 +81,9 @@ | |||||||
| import { defineComponent, reactive, useContext } from "@nuxtjs/composition-api"; | import { defineComponent, reactive, useContext } from "@nuxtjs/composition-api"; | ||||||
| import { useStaticRoutes, useUserApi } from "~/composables/api"; | import { useStaticRoutes, useUserApi } from "~/composables/api"; | ||||||
| import { alert } from "~/composables/use-toast"; | import { alert } from "~/composables/use-toast"; | ||||||
|  | import { detectServerBaseUrl } from "~/composables/use-utils"; | ||||||
| import { RecipeAsset } from "~/types/api-types/recipe"; | import { RecipeAsset } from "~/types/api-types/recipe"; | ||||||
|  |  | ||||||
| const BASE_URL = window.location.origin; |  | ||||||
|  |  | ||||||
| export default defineComponent({ | export default defineComponent({ | ||||||
|   props: { |   props: { | ||||||
|     slug: { |     slug: { | ||||||
| @@ -116,7 +115,7 @@ export default defineComponent({ | |||||||
|       }, |       }, | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
|     const { $globals, i18n } = useContext(); |     const { $globals, i18n, req } = useContext(); | ||||||
|  |  | ||||||
|     const iconOptions = [ |     const iconOptions = [ | ||||||
|       { |       { | ||||||
| @@ -146,6 +145,8 @@ export default defineComponent({ | |||||||
|       }, |       }, | ||||||
|     ]; |     ]; | ||||||
|  |  | ||||||
|  |     const serverBase = detectServerBaseUrl(req); | ||||||
|  |  | ||||||
|     function getIconDefinition(icon: string) { |     function getIconDefinition(icon: string) { | ||||||
|       return iconOptions.find((item) => item.name === icon) || iconOptions[0]; |       return iconOptions.find((item) => item.name === icon) || iconOptions[0]; | ||||||
|     } |     } | ||||||
| @@ -156,7 +157,7 @@ export default defineComponent({ | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     function assetEmbed(name: string) { |     function assetEmbed(name: string) { | ||||||
|       return `<img src="${BASE_URL}${assetURL(name)}" height="100%" width="100%"> </img>`; |       return `<img src="${serverBase}${assetURL(name)}" height="100%" width="100%"> </img>`; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     function setFileObject(fileObject: File) { |     function setFileObject(fileObject: File) { | ||||||
|   | |||||||
| @@ -46,7 +46,6 @@ | |||||||
|     </v-card> |     </v-card> | ||||||
|  |  | ||||||
|     <RecipeNutrition v-if="recipe.settings.showNutrition" v-model="recipe.nutrition" class="mt-10" :edit="isEditForm" /> |     <RecipeNutrition v-if="recipe.settings.showNutrition" v-model="recipe.nutrition" class="mt-10" :edit="isEditForm" /> | ||||||
|     <client-only> |  | ||||||
|     <RecipeAssets |     <RecipeAssets | ||||||
|       v-if="recipe.settings.showAssets" |       v-if="recipe.settings.showAssets" | ||||||
|       v-model="recipe.assets" |       v-model="recipe.assets" | ||||||
| @@ -54,7 +53,6 @@ | |||||||
|       :slug="recipe.slug" |       :slug="recipe.slug" | ||||||
|       :recipe-id="recipe.id" |       :recipe-id="recipe.id" | ||||||
|     /> |     /> | ||||||
|     </client-only> |  | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user