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:
		| @@ -123,7 +123,6 @@ | ||||
|         class="mt-n5" | ||||
|         :icon="$globals.icons.search" | ||||
|         :title="$tc('search.results')" | ||||
|         :group-slug="groupSlug" | ||||
|         :recipes="recipes" | ||||
|         :query="passedQuery" | ||||
|         @replaceRecipes="replaceRecipes" | ||||
| @@ -134,9 +133,10 @@ | ||||
| </template> | ||||
|  | ||||
| <script lang="ts"> | ||||
| import { ref, defineComponent, useRouter, onMounted, useContext, computed, Ref } from "@nuxtjs/composition-api"; | ||||
| import { ref, defineComponent, useRouter, onMounted, useContext, computed, Ref, useRoute } from "@nuxtjs/composition-api"; | ||||
| import { watchDebounced } from "@vueuse/shared"; | ||||
| import SearchFilter from "~/components/Domain/SearchFilter.vue"; | ||||
| import { useLoggedInState } from "~/composables/use-logged-in-state"; | ||||
| import { useCategoryStore, useFoodStore, useTagStore, useToolStore } from "~/composables/store"; | ||||
| import RecipeCardSection from "~/components/Domain/Recipe/RecipeCardSection.vue"; | ||||
| import { IngredientFood, RecipeCategory, RecipeTag, RecipeTool } from "~/lib/api/types/recipe"; | ||||
| @@ -150,19 +150,11 @@ import { usePublicToolStore } from "~/composables/store/use-tool-store"; | ||||
|  | ||||
| export default defineComponent({ | ||||
|   components: { SearchFilter, RecipeCardSection }, | ||||
|   props: { | ||||
|       groupSlug: { | ||||
|           type: String, | ||||
|           required: true, | ||||
|       }, | ||||
|   }, | ||||
|   setup(props) { | ||||
|   setup() { | ||||
|     const router = useRouter(); | ||||
|     const { $auth, $globals, i18n } = useContext(); | ||||
|  | ||||
|     const loggedIn = computed(() => { | ||||
|       return $auth.loggedIn; | ||||
|     }); | ||||
|     const { isOwnGroup } = useLoggedInState(); | ||||
|     const state = ref({ | ||||
|       auto: true, | ||||
|       search: "", | ||||
| @@ -176,17 +168,20 @@ export default defineComponent({ | ||||
|       requireAllFoods: false, | ||||
|     }); | ||||
|  | ||||
|     const { recipes, appendRecipes, assignSorted, removeRecipe, replaceRecipes } = useLazyRecipes(loggedIn.value ? null : props.groupSlug); | ||||
|     const categories = loggedIn.value ? useCategoryStore() : usePublicCategoryStore(props.groupSlug); | ||||
|     const route = useRoute(); | ||||
|     const groupSlug = computed(() => route.value.params.groupSlug || $auth.user?.groupSlug || ""); | ||||
|  | ||||
|     const { recipes, appendRecipes, assignSorted, removeRecipe, replaceRecipes } = useLazyRecipes(isOwnGroup.value ? null : groupSlug.value); | ||||
|     const categories = isOwnGroup.value ? useCategoryStore() : usePublicCategoryStore(groupSlug.value); | ||||
|     const selectedCategories = ref<NoUndefinedField<RecipeCategory>[]>([]); | ||||
|  | ||||
|     const foods = loggedIn.value ? useFoodStore() : usePublicFoodStore(props.groupSlug); | ||||
|     const foods = isOwnGroup.value ? useFoodStore() : usePublicFoodStore(groupSlug.value); | ||||
|     const selectedFoods = ref<IngredientFood[]>([]); | ||||
|  | ||||
|     const tags = loggedIn.value ? useTagStore() : usePublicTagStore(props.groupSlug); | ||||
|     const tags = isOwnGroup.value ? useTagStore() : usePublicTagStore(groupSlug.value); | ||||
|     const selectedTags = ref<NoUndefinedField<RecipeTag>[]>([]); | ||||
|  | ||||
|     const tools = loggedIn.value ? useToolStore() : usePublicToolStore(props.groupSlug); | ||||
|     const tools = isOwnGroup.value ? useToolStore() : usePublicToolStore(groupSlug.value); | ||||
|     const selectedTools = ref<NoUndefinedField<RecipeTool>[]>([]); | ||||
|  | ||||
|     const passedQuery = ref<RecipeSearchQuery | null>(null); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user