From 80968b02bb1068eaba74e035691dcf7245563342 Mon Sep 17 00:00:00 2001 From: Michael Genson <71845777+michael-genson@users.noreply.github.com> Date: Sun, 5 Nov 2023 19:07:02 -0600 Subject: [PATCH] feat: Remove Explore URLs and make the normal URLs public (#2632) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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> --- .../ISSUE_TEMPLATE/recipe-scraper-bug.yaml | 2 +- .../import-recipe-bookmarklet.md | 2 +- .../documentation/getting-started/features.md | 10 +-- .../Domain/Cookbook/CookbookPage.vue | 19 +++--- .../Domain/Recipe/RecipeActionMenu.vue | 1 - .../components/Domain/Recipe/RecipeCard.vue | 22 +++---- .../Domain/Recipe/RecipeCardMobile.vue | 24 +++---- .../Domain/Recipe/RecipeCardSection.vue | 19 +++--- .../components/Domain/Recipe/RecipeChips.vue | 18 ++++-- .../Domain/Recipe/RecipeContextMenu.vue | 53 +++------------- .../Domain/Recipe/RecipeDataTable.vue | 2 +- .../Domain/Recipe/RecipeDialogSearch.vue | 13 +++- .../Domain/Recipe/RecipeDialogShare.vue | 9 ++- .../Domain/Recipe/RecipeExplorerPage.vue | 29 ++++----- .../components/Domain/Recipe/RecipeList.vue | 8 ++- .../RecipeOcrEditorPage.vue | 10 ++- .../Domain/Recipe/RecipeOrganizerPage.vue | 9 ++- .../Domain/Recipe/RecipePage/RecipePage.vue | 15 +++-- .../RecipePageParts/RecipePageHeader.vue | 19 +++--- .../RecipePageIngredientEditor.vue | 10 ++- .../RecipePageIngredientToolsView.vue | 7 ++- .../RecipePageTitleContent.vue | 5 +- .../components/Domain/Recipe/RecipeRating.vue | 12 ++-- .../Domain/Recipe/RecipeTimelineItem.vue | 10 ++- frontend/components/Layout/DefaultLayout.vue | 63 +++++++++++-------- .../Layout/LayoutParts/AppHeader.vue | 13 ++-- .../Layout/LayoutParts/AppSidebar.vue | 36 +++++++---- frontend/components/global/ReportTable.vue | 4 +- .../composables/recipe-page/shared-state.ts | 4 +- .../composables/recipes/use-recipe-search.ts | 3 +- frontend/composables/recipes/use-recipes.ts | 11 +++- frontend/composables/use-logged-in-state.ts | 17 +++++ frontend/layouts/default.vue | 1 - frontend/layouts/error.vue | 48 +++++++++++++- frontend/layouts/explore.vue | 13 ---- frontend/lib/api/public/explore/recipes.ts | 8 ++- frontend/lib/api/types/user.ts | 2 + frontend/nuxt.config.js | 2 +- frontend/package.json | 2 +- frontend/pages/admin/backups.vue | 7 ++- frontend/pages/admin/manage/users/index.vue | 2 +- .../explore/cookbooks/_groupSlug/_slug.vue | 23 ------- .../recipes/_groupSlug/_recipeSlug.vue | 47 -------------- .../explore/recipes/_groupSlug/index.vue | 42 ------------- .../{ => g/_groupSlug}/cookbooks/_slug.vue | 0 .../_groupSlug/cookbooks/index.vue} | 10 ++- frontend/pages/g/_groupSlug/index.vue | 14 +++++ frontend/pages/g/_groupSlug/r/_slug/index.vue | 59 +++++++++++++++++ .../_groupSlug/r}/_slug/ingredient-parser.vue | 7 ++- .../_groupSlug/r}/_slug/ocr-editor.vue | 0 .../{recipe => g/_groupSlug/r}/create.vue | 8 ++- .../_groupSlug/r}/create/bulk.vue | 0 .../_groupSlug/r}/create/debug.vue | 0 .../_groupSlug/r}/create/index.vue | 2 +- .../{recipe => g/_groupSlug/r}/create/new.vue | 8 ++- .../{recipe => g/_groupSlug/r}/create/ocr.vue | 8 ++- .../{recipe => g/_groupSlug/r}/create/url.vue | 6 +- .../{recipe => g/_groupSlug/r}/create/zip.vue | 8 ++- .../_groupSlug}/recipes/categories/index.vue | 0 .../{ => g/_groupSlug}/recipes/tags/index.vue | 0 .../_groupSlug/recipes}/timeline.vue | 0 .../_groupSlug}/recipes/tools/index.vue | 0 .../recipes => g/_groupSlug/shared/r}/_id.vue | 7 ++- frontend/pages/group/data.vue | 8 +-- frontend/pages/group/mealplan/planner.vue | 6 +- frontend/pages/group/members.vue | 2 +- frontend/pages/index.vue | 32 ++++------ frontend/pages/login.vue | 7 ++- frontend/pages/recipe/_slug/index.vue | 33 ---------- frontend/pages/shopping-lists/_id.vue | 7 ++- frontend/pages/shopping-lists/index.vue | 8 ++- frontend/pages/user/_id/favorites.vue | 5 +- frontend/pages/user/_id/profile.vue | 6 +- frontend/pages/user/profile/edit.vue | 4 +- frontend/pages/user/profile/index.vue | 57 ++++++----------- frontend/plugins/globals.ts | 8 ++- mealie/core/dependencies/dependencies.py | 2 +- mealie/db/models/users/users.py | 5 ++ mealie/routes/recipe/recipe_crud_routes.py | 10 +-- mealie/routes/recipe/timeline_events.py | 8 +-- mealie/routes/spa/__init__.py | 20 +++--- mealie/schema/user/user.py | 1 + mealie/services/urls/url_constructors.py | 4 +- .../test_public_cookbooks.py | 3 + .../test_public_foods.py | 2 + .../test_public_organizers.py | 2 + .../test_public_recipes.py | 3 + 87 files changed, 555 insertions(+), 501 deletions(-) create mode 100644 frontend/composables/use-logged-in-state.ts delete mode 100644 frontend/layouts/explore.vue delete mode 100644 frontend/pages/explore/cookbooks/_groupSlug/_slug.vue delete mode 100644 frontend/pages/explore/recipes/_groupSlug/_recipeSlug.vue delete mode 100644 frontend/pages/explore/recipes/_groupSlug/index.vue rename frontend/pages/{ => g/_groupSlug}/cookbooks/_slug.vue (100%) rename frontend/pages/{group/cookbooks.vue => g/_groupSlug/cookbooks/index.vue} (93%) create mode 100644 frontend/pages/g/_groupSlug/index.vue create mode 100644 frontend/pages/g/_groupSlug/r/_slug/index.vue rename frontend/pages/{recipe => g/_groupSlug/r}/_slug/ingredient-parser.vue (97%) rename frontend/pages/{recipe => g/_groupSlug/r}/_slug/ocr-editor.vue (100%) rename frontend/pages/{recipe => g/_groupSlug/r}/create.vue (86%) rename frontend/pages/{recipe => g/_groupSlug/r}/create/bulk.vue (100%) rename frontend/pages/{recipe => g/_groupSlug/r}/create/debug.vue (100%) rename frontend/pages/{recipe => g/_groupSlug/r}/create/index.vue (88%) rename frontend/pages/{recipe => g/_groupSlug/r}/create/new.vue (86%) rename frontend/pages/{recipe => g/_groupSlug/r}/create/ocr.vue (86%) rename frontend/pages/{recipe => g/_groupSlug/r}/create/url.vue (95%) rename frontend/pages/{recipe => g/_groupSlug/r}/create/zip.vue (84%) rename frontend/pages/{ => g/_groupSlug}/recipes/categories/index.vue (100%) rename frontend/pages/{ => g/_groupSlug}/recipes/tags/index.vue (100%) rename frontend/pages/{group => g/_groupSlug/recipes}/timeline.vue (100%) rename frontend/pages/{ => g/_groupSlug}/recipes/tools/index.vue (100%) rename frontend/pages/{shared/recipes => g/_groupSlug/shared/r}/_id.vue (75%) delete mode 100644 frontend/pages/recipe/_slug/index.vue diff --git a/.github/ISSUE_TEMPLATE/recipe-scraper-bug.yaml b/.github/ISSUE_TEMPLATE/recipe-scraper-bug.yaml index 61b877e7b..2a38b6a4f 100644 --- a/.github/ISSUE_TEMPLATE/recipe-scraper-bug.yaml +++ b/.github/ISSUE_TEMPLATE/recipe-scraper-bug.yaml @@ -17,7 +17,7 @@ body: - label: | I have verified that this issue _is not_ related to the underlying library [hhyrsev/recipe-scrapers](https://github.com/hhursev/recipe-scrapers) by **1)** checking - the [debugger](https://demo.mealie.io/recipe/create/debug) and data is returned, **2)** + the [debugger](https://demo.mealie.io/g/home/r/create/debug) and data is returned, **2)** verifying that there _are_ errors in the log related to application level code, or **3)** verified that the site provides recipe data, or is otherwise supported by [hhyrsev/recipe-scrapers](https://github.com/hhursev/recipe-scrapers) diff --git a/docs/docs/documentation/community-guide/import-recipe-bookmarklet.md b/docs/docs/documentation/community-guide/import-recipe-bookmarklet.md index f0de673df..64326dc1a 100644 --- a/docs/docs/documentation/community-guide/import-recipe-bookmarklet.md +++ b/docs/docs/documentation/community-guide/import-recipe-bookmarklet.md @@ -15,6 +15,6 @@ var url = document.URL; var mealie = "http://localhost:8080"; var use_keywords= "&use_keywords=1" // Optional - use keywords from recipe - update to "" if you don't want that var edity = "&edit=1" // Optional - keep in edit mode - update to "" if you don't want that -var dest = mealie + "/recipe/create/url?recipe_import_url=" + url + use_keywords + edity; +var dest = mealie + "/r/create/url?recipe_import_url=" + url + use_keywords + edity; window.open(dest, "_blank"); ``` diff --git a/docs/docs/documentation/getting-started/features.md b/docs/docs/documentation/getting-started/features.md index 4c195cc74..fb65b1f1f 100644 --- a/docs/docs/documentation/getting-started/features.md +++ b/docs/docs/documentation/getting-started/features.md @@ -8,7 +8,7 @@ Mealie offers two main ways to create recipes. You can use the integrated recipe-scraper to create recipes from hundreds of websites, or you can create recipes manually using the recipe editor. -[Creation Demo](https://demo.mealie.io/recipe/create/url){ .md-button .md-button--primary .align-right } +[Creation Demo](https://demo.mealie.io/g/home/r/create/url){ .md-button .md-button--primary .align-right } ### Importing Recipes @@ -34,13 +34,13 @@ Mealie has a robust and flexible recipe organization system with a few different Categories are the overarching organizer for recipes. You can assign as many categories as you'd like to a recipe, but we recommend that you try to limit the categories you assign to a recipe to one or two. This helps keep categories as focused as possible while still allowing you to find recipes that are related to each other. For example, you might assign a recipe to the category **Breakfast**, **Lunch**, **Dinner**, or **Side**. -[Categories Demo](https://demo.mealie.io/recipes/categories){ .md-button .md-button--primary } +[Categories Demo](https://demo.mealie.io/g/home/recipes/categories){ .md-button .md-button--primary } #### Tags Tags, are nearly identical to categories in function but play a secondary role in some cases. As such, we recommend that you use tags freely to help you organize your recipes by more specific topics. For example, if a recipe can be frozen or is a great left-over meal, you could assign the tags **frozen** and **left-over** and easily filter for those at a later time. -[Tags Demo](https://demo.mealie.io/recipes/tags){ .md-button .md-button--primary } +[Tags Demo](https://demo.mealie.io/g/home/recipes/tags){ .md-button .md-button--primary } #### Tools @@ -48,7 +48,7 @@ Tools, are another way that some users like to organize their recipes. If a reci Each of the above organizers can be filtered in searches, and have their own pages where you can view all the recipes that are associated with those organizers. -[Tools Demo](https://demo.mealie.io/recipes/tools){ .md-button .md-button--primary } +[Tools Demo](https://demo.mealie.io/g/home/recipes/tools){ .md-button .md-button--primary } #### Cookbooks @@ -60,7 +60,7 @@ Mealie also has the concept of cookbooks. These can be created inside of a group - Pasta Sides: Recipes that have both the **Side** category and the **Pasta** tag - Dessert Breads: Recipes that have both the **Bread** category and the **Dessert** tag -[Cookbooks Demo](https://demo.mealie.io/group/cookbooks){ .md-button .md-button--primary } +[Cookbooks Demo](https://demo.mealie.io/g/home/cookbooks){ .md-button .md-button--primary } ## Meal Planning diff --git a/frontend/components/Domain/Cookbook/CookbookPage.vue b/frontend/components/Domain/Cookbook/CookbookPage.vue index 2afb33e77..3460d8253 100644 --- a/frontend/components/Domain/Cookbook/CookbookPage.vue +++ b/frontend/components/Domain/Cookbook/CookbookPage.vue @@ -15,7 +15,6 @@ class="mb-5 mx-1" :recipes="recipes" :query="{ cookbook: slug }" - :group-slug="groupSlug" @sortRecipes="assignSorted" @replaceRecipes="replaceRecipes" @appendRecipes="appendRecipes" @@ -30,24 +29,20 @@ import { useLazyRecipes } from "~/composables/recipes"; import RecipeCardSection from "@/components/Domain/Recipe/RecipeCardSection.vue"; import { useCookbook } from "~/composables/use-group-cookbooks"; + import { useLoggedInState } from "~/composables/use-logged-in-state"; export default defineComponent({ components: { RecipeCardSection }, - props: { - groupSlug: { - type: String, - default: undefined, - } - }, - setup(props) { + setup() { const { $auth } = useContext(); - const loggedIn = computed(() => $auth.loggedIn); - - const { recipes, appendRecipes, assignSorted, removeRecipe, replaceRecipes } = useLazyRecipes(loggedIn.value ? null : props.groupSlug); + const { isOwnGroup } = useLoggedInState(); 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 slug = route.value.params.slug; - const { getOne } = useCookbook(loggedIn.value ? null : props.groupSlug); + const { getOne } = useCookbook(isOwnGroup.value ? null : groupSlug.value); const tab = ref(null); const book = getOne(slug); diff --git a/frontend/components/Domain/Recipe/RecipeActionMenu.vue b/frontend/components/Domain/Recipe/RecipeActionMenu.vue index 4d576ec46..c5b6a72e7 100644 --- a/frontend/components/Domain/Recipe/RecipeActionMenu.vue +++ b/frontend/components/Domain/Recipe/RecipeActionMenu.vue @@ -70,7 +70,6 @@ print: true, printPreferences: true, share: loggedIn, - publicUrl: recipe.settings && loggedIn ? recipe.settings.public : false, }" @print="$emit('print')" /> diff --git a/frontend/components/Domain/Recipe/RecipeCard.vue b/frontend/components/Domain/Recipe/RecipeCard.vue index e13bd40d4..4499cdb98 100644 --- a/frontend/components/Domain/Recipe/RecipeCard.vue +++ b/frontend/components/Domain/Recipe/RecipeCard.vue @@ -34,7 +34,7 @@ - + @@ -42,7 +42,7 @@ @@ -69,12 +68,13 @@ diff --git a/frontend/components/Domain/Recipe/RecipeTimelineItem.vue b/frontend/components/Domain/Recipe/RecipeTimelineItem.vue index 4802cdc22..fd460d95d 100644 --- a/frontend/components/Domain/Recipe/RecipeTimelineItem.vue +++ b/frontend/components/Domain/Recipe/RecipeTimelineItem.vue @@ -13,7 +13,7 @@ @@ -95,7 +95,7 @@ diff --git a/frontend/components/Layout/LayoutParts/AppHeader.vue b/frontend/components/Layout/LayoutParts/AppHeader.vue index 5af4088d9..2c6dab639 100644 --- a/frontend/components/Layout/LayoutParts/AppHeader.vue +++ b/frontend/components/Layout/LayoutParts/AppHeader.vue @@ -35,7 +35,7 @@ {{ $globals.icons.search }} - + {{ $globals.icons.logout }} {{ $vuetify.breakpoint.smAndUp ? $t("user.logout") : "" }} @@ -49,6 +49,7 @@ diff --git a/frontend/layouts/error.vue b/frontend/layouts/error.vue index 6731482f4..22546b6b4 100644 --- a/frontend/layouts/error.vue +++ b/frontend/layouts/error.vue @@ -1,5 +1,5 @@ diff --git a/frontend/lib/api/public/explore/recipes.ts b/frontend/lib/api/public/explore/recipes.ts index 060ada6e0..8f6aca367 100644 --- a/frontend/lib/api/public/explore/recipes.ts +++ b/frontend/lib/api/public/explore/recipes.ts @@ -1,6 +1,8 @@ import { BaseCRUDAPIReadOnly } from "~/lib/api/base/base-clients"; +import { route } from "../../base"; import { Recipe } from "~/lib/api/types/recipe"; -import { ApiRequestInstance } from "~/lib/api/types/non-generated"; +import { ApiRequestInstance, PaginationData } from "~/lib/api/types/non-generated"; +import { RecipeSearchQuery } from "../../user/recipes/recipe"; const prefix = "/api"; @@ -16,4 +18,8 @@ export class PublicRecipeApi extends BaseCRUDAPIReadOnly { constructor(requests: ApiRequestInstance, private readonly groupSlug: string) { super(requests); } + + async search(rsq: RecipeSearchQuery) { + return await this.requests.get>(route(routes.recipesGroupSlug(this.groupSlug), rsq)); + } } diff --git a/frontend/lib/api/types/user.ts b/frontend/lib/api/types/user.ts index 6871dbb83..6bba730c5 100644 --- a/frontend/lib/api/types/user.ts +++ b/frontend/lib/api/types/user.ts @@ -66,6 +66,7 @@ export interface UserOut { canOrganize?: boolean; id: string; groupId: string; + groupSlug: string; tokens?: LongLiveTokenOut[]; cacheKey: string; } @@ -113,6 +114,7 @@ export interface PrivateUser { canOrganize?: boolean; id: string; groupId: string; + groupSlug: string; tokens?: LongLiveTokenOut[]; cacheKey: string; password: string; diff --git a/frontend/nuxt.config.js b/frontend/nuxt.config.js index 818eddb30..21f8cf5f4 100644 --- a/frontend/nuxt.config.js +++ b/frontend/nuxt.config.js @@ -342,7 +342,7 @@ export default { background_color: "#FFFFFF", display: "standalone", share_target: { - action: "/recipe/create/url", + action: "/r/create/url", method: "GET", params: { /* title and url are not currently used in Mealie. If there are issues diff --git a/frontend/package.json b/frontend/package.json index fdb73b48e..96f0b6aeb 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -6,7 +6,7 @@ "dev": "nuxt", "build": "nuxt build", "start": "nuxt start", - "generate": "nuxt generate", + "generate": "nuxt generate --spa", "lint:js": "eslint --ext \".ts,.js,.vue\" --ignore-path .gitignore .", "lint": "yarn lint:js", "test": "vitest", diff --git a/frontend/pages/admin/backups.vue b/frontend/pages/admin/backups.vue index 9237f7739..d8a32bea2 100644 --- a/frontend/pages/admin/backups.vue +++ b/frontend/pages/admin/backups.vue @@ -105,13 +105,13 @@ - {{ $t('recipe.looking-for-migrations') }} + {{ $t('recipe.looking-for-migrations') }} diff --git a/frontend/pages/explore/recipes/_groupSlug/_recipeSlug.vue b/frontend/pages/explore/recipes/_groupSlug/_recipeSlug.vue deleted file mode 100644 index 59346c724..000000000 --- a/frontend/pages/explore/recipes/_groupSlug/_recipeSlug.vue +++ /dev/null @@ -1,47 +0,0 @@ - - - diff --git a/frontend/pages/explore/recipes/_groupSlug/index.vue b/frontend/pages/explore/recipes/_groupSlug/index.vue deleted file mode 100644 index 64eca0efe..000000000 --- a/frontend/pages/explore/recipes/_groupSlug/index.vue +++ /dev/null @@ -1,42 +0,0 @@ - - - diff --git a/frontend/pages/cookbooks/_slug.vue b/frontend/pages/g/_groupSlug/cookbooks/_slug.vue similarity index 100% rename from frontend/pages/cookbooks/_slug.vue rename to frontend/pages/g/_groupSlug/cookbooks/_slug.vue diff --git a/frontend/pages/group/cookbooks.vue b/frontend/pages/g/_groupSlug/cookbooks/index.vue similarity index 93% rename from frontend/pages/group/cookbooks.vue rename to frontend/pages/g/_groupSlug/cookbooks/index.vue index cc8c94c26..86efb3b1c 100644 --- a/frontend/pages/group/cookbooks.vue +++ b/frontend/pages/g/_groupSlug/cookbooks/index.vue @@ -90,14 +90,22 @@ diff --git a/frontend/pages/g/_groupSlug/r/_slug/index.vue b/frontend/pages/g/_groupSlug/r/_slug/index.vue new file mode 100644 index 000000000..ffdb262ed --- /dev/null +++ b/frontend/pages/g/_groupSlug/r/_slug/index.vue @@ -0,0 +1,59 @@ + + + diff --git a/frontend/pages/recipe/_slug/ingredient-parser.vue b/frontend/pages/g/_groupSlug/r/_slug/ingredient-parser.vue similarity index 97% rename from frontend/pages/recipe/_slug/ingredient-parser.vue rename to frontend/pages/g/_groupSlug/r/_slug/ingredient-parser.vue index 2bc91da8e..358a9a25f 100644 --- a/frontend/pages/recipe/_slug/ingredient-parser.vue +++ b/frontend/pages/g/_groupSlug/r/_slug/ingredient-parser.vue @@ -94,7 +94,7 @@ diff --git a/frontend/pages/login.vue b/frontend/pages/login.vue index 9118e4340..546b44720 100644 --- a/frontend/pages/login.vue +++ b/frontend/pages/login.vue @@ -103,6 +103,7 @@ diff --git a/frontend/pages/shopping-lists/_id.vue b/frontend/pages/shopping-lists/_id.vue index 4b94f7a68..8c7dd9f31 100644 --- a/frontend/pages/shopping-lists/_id.vue +++ b/frontend/pages/shopping-lists/_id.vue @@ -199,7 +199,7 @@
- +
@@ -236,6 +236,7 @@ export default defineComponent({ ShoppingListItemEditor, }, setup() { + const { $auth, i18n } = useContext(); const preferences = useShoppingListPreferences(); const { idle } = useIdle(5 * 60 * 1000) // 5 minutes @@ -247,10 +248,9 @@ export default defineComponent({ const reorderLabelsDialog = ref(false); const route = useRoute(); + const groupSlug = computed(() => route.value.params.groupSlug || $auth.user?.groupSlug || ""); const id = route.value.params.id; - const { i18n } = useContext(); - // =============================================================== // Shopping List Actions @@ -755,6 +755,7 @@ export default defineComponent({ deleteListItem, edit, getLabelColor, + groupSlug, itemsByLabel, listItems, loadingCounter, diff --git a/frontend/pages/shopping-lists/index.vue b/frontend/pages/shopping-lists/index.vue index 85b1e1fd3..fecbbe4e6 100644 --- a/frontend/pages/shopping-lists/index.vue +++ b/frontend/pages/shopping-lists/index.vue @@ -33,19 +33,22 @@
- +
- + \ No newline at end of file + diff --git a/frontend/pages/user/profile/edit.vue b/frontend/pages/user/profile/edit.vue index a590bfe59..3eadc87ed 100644 --- a/frontend/pages/user/profile/edit.vue +++ b/frontend/pages/user/profile/edit.vue @@ -108,9 +108,9 @@ :label="$t('profile.show-advanced-description')" @change="updateUser" > - {{ $t('profile.looking-for-privacy-settings') }} + {{ $t('profile.looking-for-privacy-settings') }}
- + {{ $globals.icons.backArrow }} diff --git a/frontend/pages/user/profile/index.vue b/frontend/pages/user/profile/index.vue index 93764d9ab..1e5a4331f 100644 --- a/frontend/pages/user/profile/index.vue +++ b/frontend/pages/user/profile/index.vue @@ -16,17 +16,6 @@ {{ $t('profile.get-invite-link') }} - - - {{ $globals.icons.shareVariant }} - - {{ $t('profile.get-public-link') }} -
@@ -114,7 +103,7 @@ @@ -124,7 +113,7 @@ @@ -143,7 +132,7 @@ @@ -152,7 +141,7 @@ @@ -161,7 +150,7 @@ @@ -171,7 +160,7 @@ @@ -182,7 +171,7 @@ @@ -193,7 +182,7 @@ @@ -204,7 +193,7 @@ @@ -218,7 +207,7 @@