mirror of
				https://github.com/mealie-recipes/mealie.git
				synced 2025-10-31 10:13:32 -04:00 
			
		
		
		
	feat: Remove Explore URLs and make the normal URLs public (#2632)
* add groupSlug to most routes * fixed more routing issues * fixed jank and incorrect routes * remove public explore links * remove unused groupSlug and explore routes * nuked explore pages * fixed public toolstore bug * fixed various routes missing group slug * restored public app header menu * fix janky login redirect * 404 recipe API call returns to login * removed unused explore layout * force redirect when using the wrong group slug * fixed dead admin links * removed unused middleware from earlier attempt * 🧹 * improve cookbooks sidebar fixed sidebar link not working fixed sidebar link target hide cookbooks header when there are none * added group slug to user * fix $auth typehints * vastly simplified groupSlug logic * allow logged-in users to view other groups * fixed some edgecases that bypassed isOwnGroup * fixed static home ref * 🧹 * fixed redirect logic * lint warning * removed group slug from group and user pages refactored all components to use route groupSlug or user group slug moved some group pages to recipe pages * fixed some bad types * 🧹 * moved groupSlug routes under /g/groupSlug * move /recipe/ to /r/ * fix backend url generation and metadata injection * moved shopping lists to root/other route fixes * changed shared from /recipes/ to /r/ * fixed 404 redirect not awaiting * removed unused import * fix doc links * fix public recipe setting not affecting public API * fixed backend tests * fix nuxt-generate command --------- Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
This commit is contained in:
		| @@ -76,7 +76,6 @@ | ||||
|             <RecipeCard | ||||
|               :name="recipe.name" | ||||
|               :description="recipe.description" | ||||
|               :group-slug="groupSlug" | ||||
|               :slug="recipe.slug" | ||||
|               :rating="recipe.rating" | ||||
|               :image="recipe.image" | ||||
| @@ -100,7 +99,6 @@ | ||||
|             <RecipeCardMobile | ||||
|               :name="recipe.name" | ||||
|               :description="recipe.description" | ||||
|               :group-slug="groupSlug" | ||||
|               :slug="recipe.slug" | ||||
|               :rating="recipe.rating" | ||||
|               :image="recipe.image" | ||||
| @@ -128,12 +126,14 @@ import { | ||||
|   toRefs, | ||||
|   useAsync, | ||||
|   useContext, | ||||
|   useRoute, | ||||
|   useRouter, | ||||
|   watch, | ||||
| } from "@nuxtjs/composition-api"; | ||||
| import { useThrottleFn } from "@vueuse/core"; | ||||
| import RecipeCard from "./RecipeCard.vue"; | ||||
| import RecipeCardMobile from "./RecipeCardMobile.vue"; | ||||
| import { useLoggedInState } from "~/composables/use-logged-in-state"; | ||||
| import { useAsyncKey } from "~/composables/use-utils"; | ||||
| import { useLazyRecipes } from "~/composables/recipes"; | ||||
| import { Recipe } from "~/lib/api/types/recipe"; | ||||
| @@ -165,10 +165,6 @@ export default defineComponent({ | ||||
|       type: Boolean, | ||||
|       default: false, | ||||
|     }, | ||||
|     groupSlug: { | ||||
|       type: String, | ||||
|       default: null, | ||||
|     }, | ||||
|     recipes: { | ||||
|       type: Array as () => Recipe[], | ||||
|       default: () => [], | ||||
| @@ -191,9 +187,7 @@ export default defineComponent({ | ||||
|     }; | ||||
|  | ||||
|     const { $auth, $globals, $vuetify } = useContext(); | ||||
|     const loggedIn = computed(() => { | ||||
|       return $auth.loggedIn; | ||||
|     }); | ||||
|     const { isOwnGroup } = useLoggedInState(); | ||||
|     const useMobileCards = computed(() => { | ||||
|       return $vuetify.breakpoint.smAndDown || preferences.value.useMobileCards; | ||||
|     }); | ||||
| @@ -206,12 +200,15 @@ export default defineComponent({ | ||||
|       sortLoading: false, | ||||
|     }); | ||||
|  | ||||
|     const route = useRoute(); | ||||
|     const groupSlug = computed(() => route.value.params.groupSlug || $auth.user?.groupSlug || ""); | ||||
|  | ||||
|     const router = useRouter(); | ||||
|     function navigateRandom() { | ||||
|       if (props.recipes.length > 0) { | ||||
|         const recipe = props.recipes[Math.floor(Math.random() * props.recipes.length)]; | ||||
|         if (recipe.slug !== undefined) { | ||||
|           router.push(loggedIn.value ? `/recipe/${recipe.slug}` : `/explore/recipes/${props.groupSlug}/${recipe.slug}`); | ||||
|           router.push(`/g/${groupSlug.value}/r/${recipe.slug}`); | ||||
|         } | ||||
|       } | ||||
|     } | ||||
| @@ -222,7 +219,7 @@ export default defineComponent({ | ||||
|     const ready = ref(false); | ||||
|     const loading = ref(false); | ||||
|  | ||||
|     const { fetchMore } = useLazyRecipes(loggedIn.value ? null : props.groupSlug); | ||||
|     const { fetchMore } = useLazyRecipes(isOwnGroup.value ? null : groupSlug.value); | ||||
|  | ||||
|     const queryFilter = computed(() => { | ||||
|       const orderBy = props.query?.orderBy || preferences.value.orderBy; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user