list admin actions
This commit is contained in:
parent
c148bc7586
commit
00aac119f1
3 changed files with 50 additions and 4 deletions
|
@ -39,7 +39,10 @@
|
||||||
>{list["name"]}</Link
|
>{list["name"]}</Link
|
||||||
><br />
|
><br />
|
||||||
{/each}
|
{/each}
|
||||||
<Link class="text-blue-400" to="/lists/create">Create new list</Link>
|
<Link
|
||||||
|
class="text-blue-400 dark:bg-gray-600 bg-gray-400 border p-1 mt-4 rounded"
|
||||||
|
to="/lists/create">Create new list</Link
|
||||||
|
>
|
||||||
{/await}
|
{/await}
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
|
|
@ -27,6 +27,8 @@
|
||||||
let permissions = [
|
let permissions = [
|
||||||
Permission.read(Role.user(loggedInUser["$id"])),
|
Permission.read(Role.user(loggedInUser["$id"])),
|
||||||
Permission.read(Role.team(r["$id"])),
|
Permission.read(Role.team(r["$id"])),
|
||||||
|
Permission.write(Role.team(r["$id"], 'owner')),
|
||||||
|
Permission.delete(Role.team(r["$id"], 'owner'))
|
||||||
];
|
];
|
||||||
|
|
||||||
if (requireLoggedIn == false) {
|
if (requireLoggedIn == false) {
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
<script>
|
<script>
|
||||||
import { ID, Permission, Query, Role } from "appwrite";
|
import { ID, Permission, Query, Role } from "appwrite";
|
||||||
import Header from "../../lib/Header.svelte";
|
import Header from "../../lib/Header.svelte";
|
||||||
import { database, loggedInUser } from "../../lib/appwrite";
|
import { database, loggedInUser, teams } from "../../lib/appwrite";
|
||||||
import { Link } from "svelte-navigator";
|
import { Link } from "svelte-navigator";
|
||||||
|
import { navigate } from "svelte-navigator/src/history";
|
||||||
|
|
||||||
export let id;
|
export let id;
|
||||||
|
|
||||||
|
@ -14,6 +15,16 @@
|
||||||
perakim = r.documents;
|
perakim = r.documents;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let teamDetails = teams.listMemberships(id);
|
||||||
|
|
||||||
|
const userIsAdmin = (users, id) => {
|
||||||
|
let index = users.memberships.findIndex((e) => e.userId == id);
|
||||||
|
if (users.memberships[index].roles.includes("owner")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
const perekIndex = (i) => {
|
const perekIndex = (i) => {
|
||||||
let index = perakim.findIndex((e) => e.perek == i);
|
let index = perakim.findIndex((e) => e.perek == i);
|
||||||
return index;
|
return index;
|
||||||
|
@ -33,7 +44,7 @@
|
||||||
perek: perek,
|
perek: perek,
|
||||||
taken: true,
|
taken: true,
|
||||||
taken_by: loggedInUser["$id"],
|
taken_by: loggedInUser["$id"],
|
||||||
taken_by_name: loggedInUser['name']
|
taken_by_name: loggedInUser["name"],
|
||||||
},
|
},
|
||||||
[
|
[
|
||||||
Permission.read(Role.team(id)),
|
Permission.read(Role.team(id)),
|
||||||
|
@ -51,6 +62,26 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function renameList() {
|
||||||
|
let newTitle = prompt("Enter new name");
|
||||||
|
|
||||||
|
if (newTitle !== "") {
|
||||||
|
database
|
||||||
|
.updateDocument("tehillim-split", "lists", id, {
|
||||||
|
title: newTitle,
|
||||||
|
})
|
||||||
|
.then(
|
||||||
|
() => (list = database.getDocument("tehillim-split", "lists", id)),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function deleteList() {
|
||||||
|
database
|
||||||
|
.deleteDocument("tehillim-split", "lists", id)
|
||||||
|
.then(() => teams.delete(id).then(() => navigate("/", {})));
|
||||||
|
}
|
||||||
|
|
||||||
function completePerek(perek) {
|
function completePerek(perek) {
|
||||||
let perekDBId = perakim[perekIndex(perek)]["$id"];
|
let perekDBId = perakim[perekIndex(perek)]["$id"];
|
||||||
|
|
||||||
|
@ -112,7 +143,17 @@
|
||||||
{:then list}
|
{:then list}
|
||||||
<h1 class="text-2xl">List {list.title}</h1>
|
<h1 class="text-2xl">List {list.title}</h1>
|
||||||
<br />
|
<br />
|
||||||
<Link class="text-blue-400" to="/list/{id}/members">Members</Link><br />
|
<Link class="text-blue-400" to="/list/{id}/members">Members</Link>
|
||||||
|
{#await teamDetails then team}
|
||||||
|
{#if userIsAdmin(team, loggedInUser["$id"])}
|
||||||
|
| <Link class="text-blue-400" to="#" on:click={() => renameList()}
|
||||||
|
>Rename list</Link
|
||||||
|
>
|
||||||
|
| <Link class="text-blue-400" to="#" on:click={() => deleteList()}
|
||||||
|
>Delete list</Link
|
||||||
|
>
|
||||||
|
{/if}
|
||||||
|
{/await}<br />
|
||||||
{#await perakimPromise then perakimResolved}
|
{#await perakimPromise then perakimResolved}
|
||||||
{#each Array.from(Array(150 + 1).keys()).slice(1) as i}
|
{#each Array.from(Array(150 + 1).keys()).slice(1) as i}
|
||||||
{#if perekIndex(i) !== -1}
|
{#if perekIndex(i) !== -1}
|
||||||
|
|
Loading…
Reference in a new issue