From b646b28a66e8fe9fb47d39dc1d14fa083b5c93d9 Mon Sep 17 00:00:00 2001 From: Dovi Cowan Date: Tue, 17 Oct 2023 21:04:01 +0100 Subject: [PATCH] invite new user --- src/App.svelte | 2 + src/routes/AcceptInvitation.svelte | 132 ++++++++++++++++++++++++++++ src/routes/Lists/ListCreate.svelte | 21 +++-- src/routes/Lists/ListMembers.svelte | 40 +++++---- src/routes/Login.svelte | 15 +++- src/routes/Register.svelte | 15 +++- 6 files changed, 191 insertions(+), 34 deletions(-) create mode 100644 src/routes/AcceptInvitation.svelte diff --git a/src/App.svelte b/src/App.svelte index 73b472e..a6ee264 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -8,6 +8,7 @@ import ListView from "./routes/Lists/ListView.svelte"; import ListCreate from "./routes/Lists/ListCreate.svelte"; import ListMembers from "./routes/Lists/ListMembers.svelte"; + import AcceptInvitation from "./routes/AcceptInvitation.svelte"; export let url = ""; @@ -17,6 +18,7 @@ + diff --git a/src/routes/AcceptInvitation.svelte b/src/routes/AcceptInvitation.svelte new file mode 100644 index 0000000..471a30f --- /dev/null +++ b/src/routes/AcceptInvitation.svelte @@ -0,0 +1,132 @@ + + +
+ {#if loggedInUser !== null} +
+ {/if} +
+ {#if alreadyConfirmed} + This invitation has already been accepted. + Go home + {:else if loggedInUser !== null && searchParams.get("userId") !== loggedInUser["$id"]} + You're trying to accept an invitation for a different user. Please sign + out to accept this invitation. + {:else if confirmed == true} + Invitation confirmed! + + {#if newUser == true} + Welcome to Tehillim Split! Complete your new user profile below. + +
+
+ Register for Tehillim Split +
+ +
+ +
+ +
+ +
+ +
+ + +

+
+
+ {/if} + {:else}{/if} +
+
diff --git a/src/routes/Lists/ListCreate.svelte b/src/routes/Lists/ListCreate.svelte index 075f528..0964363 100644 --- a/src/routes/Lists/ListCreate.svelte +++ b/src/routes/Lists/ListCreate.svelte @@ -8,6 +8,7 @@ loggedInUser, teams, } from "../../lib/appwrite"; + import { navigate } from "svelte-navigator/src/history"; let listname = ""; let requireLoggedIn = false; @@ -22,26 +23,24 @@ owner_id: loggedInUser["$id"], }) .then((r) => { - teams.create(r["$id"], listname).then((r) => { + teams.create(r["$id"], listname, ["admin"]).then((r) => { let permissions = [ Permission.read(Role.user(loggedInUser["$id"])), Permission.read(Role.team(r["$id"])), - Permission.write(Role.team("admins-" + r["$id"])), ]; if (requireLoggedIn == false) { permissions.push(Permission.read(Role.any())); } - teams.create("admins-" + r["$id"], listname + " Admins").then(() => { - console.log(r); - database.updateDocument( - "tehillim-split", - "lists", - r["$id"], - {}, - permissions, - ); + database.updateDocument( + "tehillim-split", + "lists", + r["$id"], + {}, + permissions, + ).then(() => { + navigate('/list/' + r["$id"], {}); }); }); console.log(r); diff --git a/src/routes/Lists/ListMembers.svelte b/src/routes/Lists/ListMembers.svelte index a658b29..c6a032c 100644 --- a/src/routes/Lists/ListMembers.svelte +++ b/src/routes/Lists/ListMembers.svelte @@ -7,16 +7,24 @@ let list = database.getDocument("tehillim-split", "lists", id); let members = teams.listMemberships(id); - let adminMembers = teams.listMemberships("admins-" + id); - const memberIndex = (adminMembers, i) => { - console.log(adminMembers); - let index = adminMembers.memberships.findIndex((e) => e.userId == i.userId); + const rolesIndex = (user, role) => { + let index = user.roles.findIndex((e) => e == role); return index; }; function inviteMember() { - prompt("Enter member email address") + let email = prompt("Enter member email address"); + if (email !== "") { + teams.createMembership( + id, + [], + email, + undefined, + undefined, + "http://localhost:5173/accept_list_invitation", + ); + } } @@ -27,17 +35,17 @@ {#await members} Loading... {:then members} - {#await adminMembers then adminMembers} - {#each members.memberships as member} -
- {member.userName} - {member.userEmail} - {#if memberIndex(adminMembers, member) !== -1} - List Admin - {/if} -
- {/each} - Invite member - {/await} + {#each members.memberships as member} +
+ {member.userName} - {member.userEmail} + {#if rolesIndex(member, 'admin') !== -1} + List Admin + {/if} +
+ {/each} + Invite member {/await} diff --git a/src/routes/Login.svelte b/src/routes/Login.svelte index 833e293..8fd24f2 100644 --- a/src/routes/Login.svelte +++ b/src/routes/Login.svelte @@ -1,9 +1,10 @@