From 05f6c13c803e46b1177bc1c29c066d068eb298e2 Mon Sep 17 00:00:00 2001 From: Patrick Cleavelin Date: Tue, 11 Apr 2023 17:41:05 -0500 Subject: [PATCH] ui for deleting sounds, beginning of permissions --- flake.nix | 2 +- src/components/DeleteSelector.svelte | 38 +++++++++++++++++++++++ src/components/ModDashboard.svelte | 45 ++++++++++------------------ src/components/Permissions.svelte | 1 + src/permissions.ts | 1 + 5 files changed, 57 insertions(+), 30 deletions(-) create mode 100644 src/components/DeleteSelector.svelte create mode 100644 src/components/Permissions.svelte diff --git a/flake.nix b/flake.nix index f482909..5bc1607 100644 --- a/flake.nix +++ b/flake.nix @@ -48,7 +48,7 @@ docker = dockerTools.buildImage { name = "memejoin-svelte"; - tag = "0.1.0"; + tag = "0.1.2_1"; copyToRoot = buildEnv { name = "image-root"; paths = [ nodejs yarnPkg ]; diff --git a/src/components/DeleteSelector.svelte b/src/components/DeleteSelector.svelte new file mode 100644 index 0000000..bec4ee5 --- /dev/null +++ b/src/components/DeleteSelector.svelte @@ -0,0 +1,38 @@ + + +{#if !!deletePromise} + {#await deletePromise} + {:catch err} +

{err}

+ {/await} +{/if} +
+ {#each guilds as guild} +

{guild.name}

+ + {/each} +
diff --git a/src/components/ModDashboard.svelte b/src/components/ModDashboard.svelte index a93b651..5380f32 100644 --- a/src/components/ModDashboard.svelte +++ b/src/components/ModDashboard.svelte @@ -2,21 +2,23 @@ import { member, intros } from '../store.ts'; import IntroSelector from '../IntroSelector.svelte'; import { slide } from 'svelte/transition'; - import { deleteIntro } from '../api.js'; + import DeleteSelector from './DeleteSelector.svelte'; + import Permissions from './Permissions.svelte'; + import { member_can, Permission } from '../permissions.ts'; - let deletePromise = null; let dashboardVisible = false; - const apiDeleteIntro = async (guild, selectedIntros) => { - await deleteIntro(guild, selectedIntros, $member.token); - await member.pullData($member.token); - await intros.fetchIntros($member.guilds); - }; - const deleteIntros = (event) => { - deletePromise = apiDeleteIntro(event.detail.guild, event.detail.intros); - }; + let allowedGuildList = []; + + $: allowedGuildList = $member.guilds + .filter((guild) => member_can(guild.permissions, Permission.CanDelete)) + .map((guild) => guild); + + $: isModerator = allowedGuildList.length > 0; + +{#if isModerator}

Wow you're a moderator, here is a cool dashboard for you to use

@@ -25,25 +27,9 @@ - {#if !!deletePromise} - {#await deletePromise} - {:catch err} -

{err}

- {/await} - {/if} -
- {#each $member.guilds as guild} -

{guild.name}

- - {/each} -
+ + +
{:else}
+{/if}