From 513c5bfc1bb9f553900db8bade7270fa1de23a52 Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Thu, 29 Feb 2024 20:17:47 -0800 Subject: [PATCH 1/2] feat(messaging): move topic pages Show subscribers first as that's probably the most useful/important thing for developers. Move/rename details to settings to match other pages. --- .../topics/topic-[topic]/+page.svelte | 171 +++++++++++++++++- .../topic-[topic]/{subscribers => }/+page.ts | 0 .../topics/topic-[topic]/header.svelte | 10 +- .../topic-[topic]/settings/+page.svelte | 14 ++ .../{ => settings}/dangerZone.svelte | 22 +-- .../{ => settings}/details.svelte | 2 +- .../{ => settings}/updateName.svelte | 2 +- .../{ => settings}/updatePermissions.svelte | 2 +- .../messaging/topics/topic-[topic]/store.ts | 11 +- .../topic-[topic]/subscribers/+page.svelte | 169 ----------------- .../topics/topic-[topic]/subscribers/store.ts | 11 -- .../{subscribers => }/table.svelte | 4 +- 12 files changed, 203 insertions(+), 215 deletions(-) rename src/routes/console/project-[project]/messaging/topics/topic-[topic]/{subscribers => }/+page.ts (100%) create mode 100644 src/routes/console/project-[project]/messaging/topics/topic-[topic]/settings/+page.svelte rename src/routes/console/project-[project]/messaging/topics/topic-[topic]/{ => settings}/dangerZone.svelte (54%) rename src/routes/console/project-[project]/messaging/topics/topic-[topic]/{ => settings}/details.svelte (92%) rename src/routes/console/project-[project]/messaging/topics/topic-[topic]/{ => settings}/updateName.svelte (97%) rename src/routes/console/project-[project]/messaging/topics/topic-[topic]/{ => settings}/updatePermissions.svelte (98%) delete mode 100644 src/routes/console/project-[project]/messaging/topics/topic-[topic]/subscribers/+page.svelte delete mode 100644 src/routes/console/project-[project]/messaging/topics/topic-[topic]/subscribers/store.ts rename src/routes/console/project-[project]/messaging/topics/topic-[topic]/{subscribers => }/table.svelte (98%) diff --git a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/+page.svelte b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/+page.svelte index 8c5837596..cf086e081 100644 --- a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/+page.svelte +++ b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/+page.svelte @@ -1,14 +1,169 @@ -
- - - +
+
+ Subscribers +
+ +
+
+ + +
+ + + +
+
+
+
+ + +
+
+ + +
+
+
+ {#if data.subscribers.total} + + + + {:else if $hasPageQueries} + + {:else if data.search} + +
+ Sorry, we couldn't find '{data.search}' +

There are no subscribers that match your search.

+
+ +
+ {:else} + (showAdd = true)} + href="https://appwrite.io/docs/products/messaging/topics#subscribe-targets-to-topics" + target="subscriber" /> + {/if} + + + +

+ Add subscribers to this topic by selecting the targets for directing messages. Learn more about subscribers. +

+
+
diff --git a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/subscribers/+page.ts b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/+page.ts similarity index 100% rename from src/routes/console/project-[project]/messaging/topics/topic-[topic]/subscribers/+page.ts rename to src/routes/console/project-[project]/messaging/topics/topic-[topic]/+page.ts diff --git a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/header.svelte b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/header.svelte index 0848e48db..680a967e5 100644 --- a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/header.svelte +++ b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/header.svelte @@ -11,11 +11,6 @@ const tabs = [ { href: path, - title: 'Overview', - event: 'overview' - }, - { - href: `${path}/subscribers`, title: 'Subscribers', event: 'subscribers' }, @@ -23,6 +18,11 @@ href: `${path}/activity`, title: 'Activity', event: 'activity' + }, + { + href: `${path}/settings`, + title: 'Settings', + event: 'settings' } ]; diff --git a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/settings/+page.svelte b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/settings/+page.svelte new file mode 100644 index 000000000..8c5837596 --- /dev/null +++ b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/settings/+page.svelte @@ -0,0 +1,14 @@ + + + +
+ + + + diff --git a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/dangerZone.svelte b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/settings/dangerZone.svelte similarity index 54% rename from src/routes/console/project-[project]/messaging/topics/topic-[topic]/dangerZone.svelte rename to src/routes/console/project-[project]/messaging/topics/topic-[topic]/settings/dangerZone.svelte index b9a2801bd..4758bcd6f 100644 --- a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/dangerZone.svelte +++ b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/settings/dangerZone.svelte @@ -1,20 +1,10 @@ - - @@ -37,9 +27,9 @@ - - + diff --git a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/details.svelte b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/settings/details.svelte similarity index 92% rename from src/routes/console/project-[project]/messaging/topics/topic-[topic]/details.svelte rename to src/routes/console/project-[project]/messaging/topics/topic-[topic]/settings/details.svelte index 09e919152..be120ba35 100644 --- a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/details.svelte +++ b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/settings/details.svelte @@ -1,7 +1,7 @@ diff --git a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/updateName.svelte b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/settings/updateName.svelte similarity index 97% rename from src/routes/console/project-[project]/messaging/topics/topic-[topic]/updateName.svelte rename to src/routes/console/project-[project]/messaging/topics/topic-[topic]/settings/updateName.svelte index 4b9305911..ad1e1998b 100644 --- a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/updateName.svelte +++ b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/settings/updateName.svelte @@ -2,7 +2,7 @@ import { CardGrid, Heading } from '$lib/components'; import { Button, Form, InputText } from '$lib/elements/forms'; import { onMount } from 'svelte'; - import { topic } from './store'; + import { topic } from '../store'; import { invalidate } from '$app/navigation'; import { trackEvent, Submit, trackError } from '$lib/actions/analytics'; import { Dependencies } from '$lib/constants'; diff --git a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/updatePermissions.svelte b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/settings/updatePermissions.svelte similarity index 98% rename from src/routes/console/project-[project]/messaging/topics/topic-[topic]/updatePermissions.svelte rename to src/routes/console/project-[project]/messaging/topics/topic-[topic]/settings/updatePermissions.svelte index c74b1ad10..7fff86143 100644 --- a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/updatePermissions.svelte +++ b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/settings/updatePermissions.svelte @@ -10,7 +10,7 @@ import { onMount } from 'svelte'; import { Roles } from '$lib/components/permissions'; import { symmetricDifference } from '$lib/helpers/array'; - import { topic } from './store'; + import { topic } from '../store'; const topicId = $page.params.topic; diff --git a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/store.ts b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/store.ts index dec5bf146..29c6212f5 100644 --- a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/store.ts +++ b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/store.ts @@ -1,6 +1,7 @@ -import { derived } from 'svelte/store'; +import { derived, writable } from 'svelte/store'; import { page } from '$app/stores'; import type { Models } from '@appwrite.io/console'; +import type { Column } from '$lib/helpers/types'; export const topic = derived( page, @@ -11,3 +12,11 @@ export const topicTotal = derived( topic, ($topic) => $topic.emailTotal + $topic.smsTotal + $topic.pushTotal ); +export const columns = writable([ + { id: '$id', title: 'Subscriber ID', type: 'string', show: true, width: 140 }, + { id: 'userName', title: 'Name', type: 'string', show: true, filter: false, width: 100 }, + { id: 'targetId', title: 'Target ID', type: 'string', show: true, width: 140 }, + { id: 'target', title: 'Target', type: 'string', show: true, filter: false, width: 140 }, + { id: 'type', title: 'Type', type: 'string', show: true, width: 80 }, + { id: '$createdAt', title: 'Created', type: 'datetime', show: true, width: 100 } +]); \ No newline at end of file diff --git a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/subscribers/+page.svelte b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/subscribers/+page.svelte deleted file mode 100644 index 622b6bf41..000000000 --- a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/subscribers/+page.svelte +++ /dev/null @@ -1,169 +0,0 @@ - - - -
-
- Subscribers -
- -
-
- - -
- - - -
-
-
-
- - -
-
- - -
-
-
- {#if data.subscribers.total} -
- - - {:else if $hasPageQueries} - - {:else if data.search} - -
- Sorry, we couldn't find '{data.search}' -

There are no subscribers that match your search.

-
- -
- {:else} - (showAdd = true)} - href="https://appwrite.io/docs/products/messaging/topics#subscribe-targets-to-topics" - target="subscriber" /> - {/if} - - - - -

- Add subscribers to this topic by selecting the targets for directing messages. Learn more about subscribers. -

-
-
diff --git a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/subscribers/store.ts b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/subscribers/store.ts deleted file mode 100644 index f5186a589..000000000 --- a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/subscribers/store.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { Column } from '$lib/helpers/types'; -import { writable } from 'svelte/store'; - -export const columns = writable([ - { id: '$id', title: 'Subscriber ID', type: 'string', show: true, width: 140 }, - { id: 'userName', title: 'Name', type: 'string', show: true, filter: false, width: 100 }, - { id: 'targetId', title: 'Target ID', type: 'string', show: true, width: 140 }, - { id: 'target', title: 'Target', type: 'string', show: true, filter: false, width: 140 }, - { id: 'type', title: 'Type', type: 'string', show: true, width: 80 }, - { id: '$createdAt', title: 'Created', type: 'datetime', show: true, width: 100 } -]); diff --git a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/subscribers/table.svelte b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/table.svelte similarity index 98% rename from src/routes/console/project-[project]/messaging/topics/topic-[topic]/subscribers/table.svelte rename to src/routes/console/project-[project]/messaging/topics/topic-[topic]/table.svelte index 8fce7c8c3..56ccf7cec 100644 --- a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/subscribers/table.svelte +++ b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/table.svelte @@ -19,12 +19,12 @@ import { addNotification } from '$lib/stores/notifications'; import type { PageData } from './$types'; import { columns } from './store'; - import ProviderType from '../../../providerType.svelte'; + import ProviderType from '../../providerType.svelte'; import { toLocaleDateTime } from '$lib/helpers/date'; import { project } from '$routes/console/project-[project]/store'; import { sdk } from '$lib/stores/sdk'; import { page } from '$app/stores'; - import { targetsById } from '../../../store'; + import { targetsById } from '../../store'; import { MessagingProviderType, type Models } from '@appwrite.io/console'; export let data: PageData; From d8a30856f1dcda74984d06844efc757b5b18f3cc Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Thu, 29 Feb 2024 20:26:23 -0800 Subject: [PATCH 2/2] fix(messaging): localize the subscribers columns When it was global, the state (show values) would persist when switching between different projects rather than resetting back to the default. --- .../messaging/topics/topic-[topic]/+page.svelte | 13 +++++++++++-- .../messaging/topics/topic-[topic]/store.ts | 11 +---------- .../messaging/topics/topic-[topic]/table.svelte | 9 +++++---- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/+page.svelte b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/+page.svelte index cf086e081..7b977d1ee 100644 --- a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/+page.svelte +++ b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/+page.svelte @@ -23,12 +23,21 @@ import UserTargetsModal from '../../userTargetsModal.svelte'; import { onMount } from 'svelte'; import { Filters, hasPageQueries } from '$lib/components/filters'; - import { columns } from './store'; import { View } from '$lib/helpers/load'; + import { writable } from 'svelte/store'; + import type { Column } from '$lib/helpers/types'; export let data: PageData; let showAdd = false; let subscribersByTargetId: Record = {}; + const columns = writable([ + { id: '$id', title: 'Subscriber ID', type: 'string', show: true, width: 140 }, + { id: 'userName', title: 'Name', type: 'string', show: true, filter: false, width: 100 }, + { id: 'targetId', title: 'Target ID', type: 'string', show: true, width: 140 }, + { id: 'target', title: 'Target', type: 'string', show: true, filter: false, width: 140 }, + { id: 'type', title: 'Type', type: 'string', show: true, width: 80 }, + { id: '$createdAt', title: 'Created', type: 'datetime', show: true, width: 100 } + ]); onMount(() => { $targetsById = {}; @@ -121,7 +130,7 @@ {#if data.subscribers.total} -
+
$topic.emailTotal + $topic.smsTotal + $topic.pushTotal ); -export const columns = writable([ - { id: '$id', title: 'Subscriber ID', type: 'string', show: true, width: 140 }, - { id: 'userName', title: 'Name', type: 'string', show: true, filter: false, width: 100 }, - { id: 'targetId', title: 'Target ID', type: 'string', show: true, width: 140 }, - { id: 'target', title: 'Target', type: 'string', show: true, filter: false, width: 140 }, - { id: 'type', title: 'Type', type: 'string', show: true, width: 80 }, - { id: '$createdAt', title: 'Created', type: 'datetime', show: true, width: 100 } -]); \ No newline at end of file diff --git a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/table.svelte b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/table.svelte index 56ccf7cec..e469b7991 100644 --- a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/table.svelte +++ b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/table.svelte @@ -18,7 +18,6 @@ } from '$lib/elements/table'; import { addNotification } from '$lib/stores/notifications'; import type { PageData } from './$types'; - import { columns } from './store'; import ProviderType from '../../providerType.svelte'; import { toLocaleDateTime } from '$lib/helpers/date'; import { project } from '$routes/console/project-[project]/store'; @@ -26,7 +25,9 @@ import { page } from '$app/stores'; import { targetsById } from '../../store'; import { MessagingProviderType, type Models } from '@appwrite.io/console'; + import type { Column } from '$lib/helpers/types'; + export let columns: Column[]; export let data: PageData; let subscribers: Record = {}; @@ -84,7 +85,7 @@ d.$id)} /> - {#each $columns as column} + {#each columns as column} {#if column.show} {column.title} {/if} @@ -97,10 +98,10 @@ href={`${base}/console/project-${$project.$id}/auth/user-${subscriber.target.userId}`}> - {#each $columns as column} + {#each columns as column} {#if column.show} {#if column.id === '$id'} - {#key $columns} + {#key column.id} {subscriber.$id}