From 3e5596f898e5fe731a9b0a7d342508d82960a187 Mon Sep 17 00:00:00 2001 From: Michael Genson <71845777+michael-genson@users.noreply.github.com> Date: Tue, 19 Sep 2023 12:06:39 -0500 Subject: [PATCH] fix: Home Doesn't Load For Non-Admin Users (#2556) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * added non-admin route for fetching current group * simplified frontend group slug fetching * exposed public link even if user can't invite * 🧹 --- .../Domain/Recipe/RecipeActionMenu.vue | 1 - .../Domain/Recipe/RecipeContextMenu.vue | 33 +++++-------------- frontend/lib/api/user/users.ts | 7 ++++ frontend/pages/index.vue | 17 ++-------- frontend/pages/user/profile/index.vue | 6 ++-- mealie/routes/users/crud.py | 6 +++- 6 files changed, 27 insertions(+), 43 deletions(-) diff --git a/frontend/components/Domain/Recipe/RecipeActionMenu.vue b/frontend/components/Domain/Recipe/RecipeActionMenu.vue index 2c975cae62be..4d576ec462f3 100644 --- a/frontend/components/Domain/Recipe/RecipeActionMenu.vue +++ b/frontend/components/Domain/Recipe/RecipeActionMenu.vue @@ -52,7 +52,6 @@ show-print :menu-top="false" :name="recipe.name" - :group-id="recipe.groupId" :slug="recipe.slug" :menu-icon="$globals.icons.dotsVertical" fab diff --git a/frontend/components/Domain/Recipe/RecipeContextMenu.vue b/frontend/components/Domain/Recipe/RecipeContextMenu.vue index 88332c0d0f3d..e55f96f1a4fa 100644 --- a/frontend/components/Domain/Recipe/RecipeContextMenu.vue +++ b/frontend/components/Domain/Recipe/RecipeContextMenu.vue @@ -271,15 +271,6 @@ export default defineComponent({ type: Number, default: 1, }, - /** - * Optional group ID prop that is only _required_ when the - * public URL is requested. If the public URL button is pressed - * and the groupId is not set, an error will be thrown. - */ - groupId: { - type: String, - default: "", - }, }, setup(props, context) { const api = useUserApi(); @@ -517,18 +508,17 @@ export default defineComponent({ const groupSlug = ref(""); async function setGroupSlug() { - if (!props.groupId) { - groupSlug.value = props.groupId; + if (groupSlug.value) { return; } - const {data} = await api.groups.getOne(props.groupId); - if (!data) { - groupSlug.value = props.groupId; - return; + const { data } = await api.users.getSelfGroup(); + if (data) { + groupSlug.value = data.slug; + } else { + // @ts-ignore this will either be a string or undefined + groupSlug.value = $auth.user?.groupId } - - groupSlug.value = data.slug; } // Note: Print is handled as an event in the parent component @@ -560,14 +550,9 @@ export default defineComponent({ state.shareDialog = true; }, publicUrl: async () => { - if (!props.groupId) { - alert.error("Unknown group ID"); - console.error("prop `groupId` is required when requesting a public URL"); - return; - } - + await setGroupSlug(); if (!groupSlug.value) { - await setGroupSlug(); + return; } copyText(`${window.location.origin}/explore/recipes/${groupSlug.value}/${props.slug}`); diff --git a/frontend/lib/api/user/users.ts b/frontend/lib/api/user/users.ts index 1ad4562cc9da..3cf8ea186bec 100644 --- a/frontend/lib/api/user/users.ts +++ b/frontend/lib/api/user/users.ts @@ -1,7 +1,9 @@ import { BaseCRUDAPI } from "../base/base-clients"; +import { RequestResponse } from "../types/non-generated"; import { ChangePassword, DeleteTokenResponse, + GroupInDB, LongLiveTokenIn, LongLiveTokenOut, ResetPassword, @@ -15,6 +17,7 @@ const prefix = "/api"; const routes = { usersSelf: `${prefix}/users/self`, + groupsSelf: `${prefix}/users/self/group`, passwordReset: `${prefix}/users/reset-password`, passwordChange: `${prefix}/users/password`, users: `${prefix}/users`, @@ -33,6 +36,10 @@ export class UserApi extends BaseCRUDAPI { baseRoute: string = routes.users; itemRoute = (itemid: string) => routes.usersId(itemid); + async getSelfGroup(): Promise> { + return await this.requests.get(routes.groupsSelf, {}); + } + async addFavorite(id: string, slug: string) { return await this.requests.post(routes.usersIdFavoritesSlug(id, slug), {}); } diff --git a/frontend/pages/index.vue b/frontend/pages/index.vue index 676355a0c15e..7cc625c0d398 100644 --- a/frontend/pages/index.vue +++ b/frontend/pages/index.vue @@ -5,7 +5,7 @@