From 622c1b11f5f84f73529e0c5567d34f11f9685c79 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ars=C3=A8ne=20Reymond?=
<66876397+p0lycarpio@users.noreply.github.com>
Date: Tue, 12 Nov 2024 04:30:08 +0100
Subject: [PATCH] feat: Groups/households custom invitations (#4252)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
---
.../Domain/User/UserInviteDialog.vue | 215 ++++++++++++++++++
frontend/components/global/AppButtonCopy.vue | 1 +
frontend/lang/messages/en-US.json | 1 +
frontend/pages/admin/manage/users/index.vue | 13 ++
frontend/pages/user/profile/index.vue | 120 ++--------
.../households/controller_invitations.py | 13 +-
mealie/schema/household/invite_token.py | 2 +
.../test_group_invitation.py | 17 ++
8 files changed, 276 insertions(+), 106 deletions(-)
create mode 100644 frontend/components/Domain/User/UserInviteDialog.vue
diff --git a/frontend/components/Domain/User/UserInviteDialog.vue b/frontend/components/Domain/User/UserInviteDialog.vue
new file mode 100644
index 000000000..e3c26bfae
--- /dev/null
+++ b/frontend/components/Domain/User/UserInviteDialog.vue
@@ -0,0 +1,215 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t("group.invite") }}
+
+
+
+
+
+
diff --git a/frontend/components/global/AppButtonCopy.vue b/frontend/components/global/AppButtonCopy.vue
index 09bbadcff..f8067fe04 100644
--- a/frontend/components/global/AppButtonCopy.vue
+++ b/frontend/components/global/AppButtonCopy.vue
@@ -15,6 +15,7 @@
:color="color"
retain-focus-on-click
:class="btnClass"
+ :disabled="copyText !== '' ? false : true"
@click="
on.click;
textToClipboard();
diff --git a/frontend/lang/messages/en-US.json b/frontend/lang/messages/en-US.json
index f9faf1e09..9b5c04f41 100644
--- a/frontend/lang/messages/en-US.json
+++ b/frontend/lang/messages/en-US.json
@@ -1279,6 +1279,7 @@
"profile": {
"welcome-user": "👋 Welcome, {0}!",
"description": "Manage your profile, recipes, and group settings.",
+ "invite-link": "Invite Link",
"get-invite-link": "Get Invite Link",
"get-public-link": "Get Public Link",
"account-summary": "Account Summary",
diff --git a/frontend/pages/admin/manage/users/index.vue b/frontend/pages/admin/manage/users/index.vue
index 3522c8828..c36bb4340 100644
--- a/frontend/pages/admin/manage/users/index.vue
+++ b/frontend/pages/admin/manage/users/index.vue
@@ -1,5 +1,6 @@
+
{{ $t("general.create") }}
+
+ {{ $t("group.invite") }}
+
@@ -69,12 +73,17 @@ import { useAdminApi } from "~/composables/api";
import { alert } from "~/composables/use-toast";
import { useUser, useAllUsers } from "~/composables/use-user";
import { UserOut } from "~/lib/api/types/user";
+import UserInviteDialog from "~/components/Domain/User/UserInviteDialog.vue";
export default defineComponent({
+ components: {
+ UserInviteDialog,
+ },
layout: "admin",
setup() {
const api = useAdminApi();
const refUserDialog = ref();
+ const inviteDialog = ref();
const { $auth } = useContext();
const user = computed(() => $auth.user);
@@ -99,6 +108,9 @@ export default defineComponent({
deleteDialog: false,
deleteTargetId: "",
search: "",
+ groups: [],
+ households: [],
+ sendTo: "",
});
const { users, refreshAllUsers } = useAllUsers();
@@ -154,6 +166,7 @@ export default defineComponent({
deleteUser,
loading,
refUserDialog,
+ inviteDialog,
users,
user,
handleRowClick,
diff --git a/frontend/pages/user/profile/index.vue b/frontend/pages/user/profile/index.vue
index 420ae3a03..a218eb2e7 100644
--- a/frontend/pages/user/profile/index.vue
+++ b/frontend/pages/user/profile/index.vue
@@ -9,44 +9,14 @@
-
+
{{ $globals.icons.createAlt }}
{{ $t('profile.get-invite-link') }}
-
-
-
- {{ generatedSignupLink }}
-
-
-
-
- {{ $t("general.close") }}
-
-
-
-
- {{ $globals.icons.email }}
-
- {{ $t("user.email") }}
-
-
-
-
-
-
- {{ publicLink }}
-
-
-
- {{ $t("general.close") }}
-
-
-
-
+