From d36135f5b7851281c2bd69cf81cc45abe7cb64e3 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Wed, 5 Nov 2025 12:51:37 +0530 Subject: [PATCH 1/7] auto-remove stale user/team roles --- .../components/permissions/permissions.svelte | 2 +- src/lib/components/permissions/row.svelte | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/lib/components/permissions/permissions.svelte b/src/lib/components/permissions/permissions.svelte index 46b6a9bb32..a96094231e 100644 --- a/src/lib/components/permissions/permissions.svelte +++ b/src/lib/components/permissions/permissions.svelte @@ -139,7 +139,7 @@ {#each [...$groups] as [role, permission] (role)} - + deleteRole(role)} /> - import { type ComponentProps, type Snippet } from 'svelte'; + import { type ComponentProps, type Snippet, createEventDispatcher, onMount } from 'svelte'; import { sdk } from '$lib/stores/sdk'; import type { Models } from '@appwrite.io/console'; import { AvatarInitials } from '../'; @@ -38,6 +38,8 @@ let { role, placement = 'bottom-start', children }: Props = $props(); + const dispatch = createEventDispatcher<{ notFound: string }>(); + type ParsedPermission = { type: 'user' | 'team' | 'other'; id: string; @@ -111,6 +113,19 @@ return fetchPromise; } + async function verifyExistence() { + try { + const data = await getData(role); + if (data?.notFound) { + dispatch('notFound', role); + } + } catch {} + } + + onMount(() => { + verifyExistence(); + }); + let isMouseOverTooltip = $state(false); function hidePopover(hideTooltip: () => void, timeout = true) { if (!timeout) { From 4d14048506d36c0cef10f8f32f23af17f6f853aa Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Wed, 5 Nov 2025 13:40:00 +0530 Subject: [PATCH 2/7] format --- src/lib/components/permissions/row.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/components/permissions/row.svelte b/src/lib/components/permissions/row.svelte index 5703b6bb39..39467b17b5 100644 --- a/src/lib/components/permissions/row.svelte +++ b/src/lib/components/permissions/row.svelte @@ -177,7 +177,7 @@ {:then data} {formatName( data.name ?? data?.email ?? data?.phone ?? '-', - $isSmallViewport ? 16 : 18 + $isSmallViewport ? 16 : 20 )} {/await} @@ -300,7 +300,7 @@ size="xs" variant="m-400" color="--fgcolor-neutral-secondary"> - Email: {data.email} + Email: {formatName(data.email, $isSmallViewport ? 24 : 32)} {/if} {#if data.phone} From fa128aef6eebd68316d442e375420fa1117d1867 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Wed, 5 Nov 2025 13:48:23 +0530 Subject: [PATCH 3/7] make it mobile responsive --- .../components/permissions/permissions.svelte | 16 +++------------- src/lib/components/permissions/row.svelte | 5 ++++- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/src/lib/components/permissions/permissions.svelte b/src/lib/components/permissions/permissions.svelte index a96094231e..9fb392d4df 100644 --- a/src/lib/components/permissions/permissions.svelte +++ b/src/lib/components/permissions/permissions.svelte @@ -20,6 +20,7 @@ import { IconPlus, IconX } from '@appwrite.io/pink-icons-svelte'; import type { PinkColumn } from '$lib/helpers/types'; import { Card } from '$lib/components'; + import TableScroll from '$lib/elements/table/tableScroll.svelte'; export let withCreate = false; export let permissions: string[] = []; @@ -124,7 +125,7 @@ {#if [...$groups]?.length} -
+ Role @@ -174,7 +175,7 @@ {/each} -
+
{/if} - - diff --git a/src/lib/components/permissions/row.svelte b/src/lib/components/permissions/row.svelte index 39467b17b5..b0dad2478c 100644 --- a/src/lib/components/permissions/row.svelte +++ b/src/lib/components/permissions/row.svelte @@ -300,7 +300,10 @@ size="xs" variant="m-400" color="--fgcolor-neutral-secondary"> - Email: {formatName(data.email, $isSmallViewport ? 24 : 32)} + Email: {formatName( + data.email, + $isSmallViewport ? 24 : 32 + )} {/if} {#if data.phone} From d17092eb0f2b732f71fe5724168aa666cca0d9e4 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Wed, 5 Nov 2025 13:54:26 +0530 Subject: [PATCH 4/7] used caption --- src/lib/components/permissions/row.svelte | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/lib/components/permissions/row.svelte b/src/lib/components/permissions/row.svelte index b0dad2478c..4a63db4fe7 100644 --- a/src/lib/components/permissions/row.svelte +++ b/src/lib/components/permissions/row.svelte @@ -296,23 +296,21 @@ {#if data.email} - Email: {formatName( data.email, $isSmallViewport ? 24 : 32 )} - + {/if} {#if data.phone} - Phone: {data.phone} - + {/if} {/if} From dd1d49cc37155935119264b441c7435e9477a5ab Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Wed, 5 Nov 2025 13:59:34 +0530 Subject: [PATCH 5/7] Update src/lib/components/permissions/permissions.svelte Co-authored-by: Darshan --- src/lib/components/permissions/permissions.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/permissions/permissions.svelte b/src/lib/components/permissions/permissions.svelte index 9fb392d4df..bc557f7649 100644 --- a/src/lib/components/permissions/permissions.svelte +++ b/src/lib/components/permissions/permissions.svelte @@ -20,7 +20,7 @@ import { IconPlus, IconX } from '@appwrite.io/pink-icons-svelte'; import type { PinkColumn } from '$lib/helpers/types'; import { Card } from '$lib/components'; - import TableScroll from '$lib/elements/table/tableScroll.svelte'; + import { TableScroll } from '$lib/elements/table'; export let withCreate = false; export let permissions: string[] = []; From cfde744f39287da2c7408ada4f4994373c20436b Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Wed, 5 Nov 2025 16:06:03 +0530 Subject: [PATCH 6/7] use callbak --- src/lib/components/permissions/permissions.svelte | 2 +- src/lib/components/permissions/row.svelte | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/lib/components/permissions/permissions.svelte b/src/lib/components/permissions/permissions.svelte index 9fb392d4df..e240db367b 100644 --- a/src/lib/components/permissions/permissions.svelte +++ b/src/lib/components/permissions/permissions.svelte @@ -140,7 +140,7 @@ {#each [...$groups] as [role, permission] (role)} - deleteRole(role)} /> + deleteRole(role)} /> - import { type ComponentProps, type Snippet, createEventDispatcher, onMount } from 'svelte'; + import { type ComponentProps, type Snippet, onMount } from 'svelte'; import { sdk } from '$lib/stores/sdk'; import type { Models } from '@appwrite.io/console'; import { AvatarInitials } from '../'; @@ -34,11 +34,10 @@ role: string; placement?: ComponentProps['placement']; children?: Snippet; + onNotFound?: (role: string) => void; } - let { role, placement = 'bottom-start', children }: Props = $props(); - - const dispatch = createEventDispatcher<{ notFound: string }>(); + let { role, placement = 'bottom-start', children, onNotFound }: Props = $props(); type ParsedPermission = { type: 'user' | 'team' | 'other'; @@ -117,7 +116,7 @@ try { const data = await getData(role); if (data?.notFound) { - dispatch('notFound', role); + onNotFound?.(role); } } catch {} } From 754ea7d917f3c26fd4044bc8b6bddf5b3383bdb1 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Wed, 5 Nov 2025 18:11:20 +0530 Subject: [PATCH 7/7] libt errror --- src/lib/components/permissions/row.svelte | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib/components/permissions/row.svelte b/src/lib/components/permissions/row.svelte index eed2e01270..c70fd5f66f 100644 --- a/src/lib/components/permissions/row.svelte +++ b/src/lib/components/permissions/row.svelte @@ -118,7 +118,9 @@ if (data?.notFound) { onNotFound?.(role); } - } catch {} + } catch { + // Intentionally ignore fetch/parse errors; UI handles missing data state + } } onMount(() => {