From 006dd3bbf1117e17c0e09df3c0563477f17fbee4 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Mon, 19 Feb 2024 17:17:28 +1300 Subject: [PATCH 01/11] Update SDK --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 633737dadf..44f48a1555 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "@appwrite/console", "dependencies": { - "@appwrite.io/console": "^0.6.0-rc.9", + "@appwrite.io/console": "^0.6.0-rc.11", "@appwrite.io/pink": "0.4.0", "@appwrite.io/pink-icons": "0.4.0", "@popperjs/core": "^2.11.8", @@ -158,9 +158,9 @@ "integrity": "sha512-TD+xbmsBLyYy/IxFimW/YL/9L2IEnM7/EoV9Aeh56U64Ify8o27HJcKjo38XY9Tcn0uOq1AX3thkKgvtWvwFQg==" }, "node_modules/@appwrite.io/console": { - "version": "0.6.0-rc.9", - "resolved": "https://registry.npmjs.org/@appwrite.io/console/-/console-0.6.0-rc.9.tgz", - "integrity": "sha512-AZg3MWH3se4A/OKv95vHeIGmj32jCOBW8WZpFLR0ULMbk3Yz/B5Kc8SAKB9AQ9WZkruNopBN9nIdwX+s3nlc8Q==", + "version": "0.6.0-rc.11", + "resolved": "https://registry.npmjs.org/@appwrite.io/console/-/console-0.6.0-rc.11.tgz", + "integrity": "sha512-ZWgXqNkfJGlHExXr1w67+hp0MUVI+0IGaLS0UwBmxof2RGsBD3LnH8+GAzA5tknFwVXgpq0llOceodzEtK7WaQ==", "dependencies": { "cross-fetch": "3.1.5", "isomorphic-form-data": "2.0.0" diff --git a/package.json b/package.json index 77e3885e58..692747993c 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "e2e": "playwright test tests/e2e" }, "dependencies": { - "@appwrite.io/console": "^0.6.0-rc.9", + "@appwrite.io/console": "^0.6.0-rc.11", "@appwrite.io/pink": "0.4.0", "@appwrite.io/pink-icons": "0.4.0", "@popperjs/core": "^2.11.8", From 44edd461c6036cb462047c1424b80f0903cdc15e Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Mon, 19 Feb 2024 17:22:44 +1300 Subject: [PATCH 02/11] feat: new console sdk and typings # Conflicts: # package-lock.json # package.json --- src/routes/console/account/deleteMfa.svelte | 4 ++-- src/routes/console/account/mfa.svelte | 16 +++++++------- src/routes/console/account/store.ts | 2 +- .../auth/templates/+page.svelte | 15 ++++++++----- .../auth/templates/emailTemplate.svelte | 6 ++--- .../auth/templates/resetEmail.svelte | 6 ++--- .../auth/templates/resetSms.svelte | 6 ++--- .../auth/templates/smsTemplate.svelte | 6 ++--- .../auth/user-[user]/+layout.ts | 2 +- .../auth/user-[user]/deleteMfa.svelte | 8 ++----- .../auth/user-[user]/store.ts | 2 +- .../project-[project]/messaging/+page.svelte | 4 ++-- .../messaging/message-[message]/+page.svelte | 12 +++++----- .../messaging/message-[message]/topics.svelte | 2 +- .../provider-[provider]/updateStatus.svelte | 1 + .../messaging/providers/update.svelte | 1 + .../topics/topic-[topic]/dangerZone.svelte | 4 ++-- .../topics/topic-[topic]/details.svelte | 4 ++-- .../messaging/topics/topic-[topic]/store.ts | 4 ++++ .../messaging/topicsModal.svelte | 12 +++++----- .../project-[project]/messaging/wizard.svelte | 12 +++++----- .../messaging/wizard/emailFormList.svelte | 4 ++-- .../messaging/wizard/pushFormList.svelte | 4 ++-- .../messaging/wizard/smsFormList.svelte | 4 ++-- .../messaging/wizard/step2.svelte | 22 +++++++++++-------- .../messaging/wizard/step3.svelte | 6 ++--- .../messaging/wizard/store.ts | 19 +++++++++++++--- src/routes/mfa/+page.svelte | 6 ++--- 28 files changed, 109 insertions(+), 85 deletions(-) diff --git a/src/routes/console/account/deleteMfa.svelte b/src/routes/console/account/deleteMfa.svelte index 01b0c1b8dc..6b113e406c 100644 --- a/src/routes/console/account/deleteMfa.svelte +++ b/src/routes/console/account/deleteMfa.svelte @@ -8,7 +8,7 @@ import InputDigits from '$lib/elements/forms/inputDigits.svelte'; import { addNotification } from '$lib/stores/notifications'; import { sdk } from '$lib/stores/sdk'; - import { AuthenticatorProvider } from '@appwrite.io/console'; + import { AuthenticatorType } from '@appwrite.io/console'; export let showDelete = false; @@ -17,7 +17,7 @@ async function deleteProvider() { try { - await sdk.forConsole.account.deleteAuthenticator(AuthenticatorProvider.Totp, code); + await sdk.forConsole.account.deleteAuthenticator(AuthenticatorType.Totp, code); await invalidate(Dependencies.ACCOUNT); await invalidate(Dependencies.FACTORS); showDelete = false; diff --git a/src/routes/console/account/mfa.svelte b/src/routes/console/account/mfa.svelte index afd18a6357..2f584fb186 100644 --- a/src/routes/console/account/mfa.svelte +++ b/src/routes/console/account/mfa.svelte @@ -8,22 +8,22 @@ import { Table, TableBody, TableCell, TableRow } from '$lib/elements/table'; import { addNotification } from '$lib/stores/notifications'; import { sdk } from '$lib/stores/sdk'; - import { AuthenticatorFactor, type Models } from '@appwrite.io/console'; + import { AuthenticatorType, type Models } from '@appwrite.io/console'; export let showSetup = false; export let showRecoveryCodes = false; let code: string; - let provider: Models.MfaProvider = null; + let type: Models.MfaType = null; async function addAuthenticator(): Promise { - provider = await sdk.forConsole.account.addAuthenticator(AuthenticatorFactor.Totp); + type = await sdk.forConsole.account.addAuthenticator(AuthenticatorType.Totp); - return sdk.forConsole.avatars.getQR(provider.uri, 192 * 2); + return sdk.forConsole.avatars.getQR(type.uri, 192 * 2); } async function verifyAuthenticator() { try { - await sdk.forConsole.account.verifyAuthenticator(AuthenticatorFactor.Totp, code); + await sdk.forConsole.account.verifyAuthenticator(AuthenticatorType.Totp, code); await invalidate(Dependencies.ACCOUNT); await invalidate(Dependencies.FACTORS); showSetup = false; @@ -72,8 +72,8 @@ description="Learn more about multi-factor authentication in our documentation." bind:show={showRecoveryCodes} onSubmit={verifyAuthenticator}> - {#if provider} - {@const formattedBackupCodes = provider.backups.join('\n')} + {#if type} + {@const formattedBackupCodes = type.backups.join('\n')} It is highly recommended to securely store your recovery codes @@ -109,7 +109,7 @@ - {#each provider.backups as code} + {#each type.backups as code} {code} diff --git a/src/routes/console/account/store.ts b/src/routes/console/account/store.ts index b6f30351bd..35b3dbe5df 100644 --- a/src/routes/console/account/store.ts +++ b/src/routes/console/account/store.ts @@ -2,4 +2,4 @@ import { page } from '$app/stores'; import { derived } from 'svelte/store'; import type { Models } from '@appwrite.io/console'; -export const factors = derived(page, ($page) => $page.data.factors as Models.MfaProviders); +export const factors = derived(page, ($page) => $page.data.factors as Models.MfaFactors); diff --git a/src/routes/console/project-[project]/auth/templates/+page.svelte b/src/routes/console/project-[project]/auth/templates/+page.svelte index 4b20cb34d5..06d3e1776a 100644 --- a/src/routes/console/project-[project]/auth/templates/+page.svelte +++ b/src/routes/console/project-[project]/auth/templates/+page.svelte @@ -4,8 +4,8 @@ // TODO: fix TemplateType and TemplateLocale typing once SDK is updated return await sdk.forConsole.projects.getEmailTemplate( projectId, - type as TemplateType, - locale as TemplateLocale + type as EmailTemplateType, + locale as EmailTemplateLocale ); } catch (e) { addNotification({ @@ -19,8 +19,8 @@ // TODO: fix TemplateType and TemplateLocale typing once SDK is updated return await sdk.forConsole.projects.getSmsTemplate( projectId, - type as TemplateType, - locale as TemplateLocale + type as SMSTemplateType, + locale as SMSTemplateLocale ); } catch (e) { addNotification({ @@ -54,7 +54,12 @@ import ChangeOrganizationTierCloud from '$routes/console/changeOrganizationTierCloud.svelte'; import { wizard } from '$lib/stores/wizard'; import { BillingPlan } from '$lib/constants'; - import type { TemplateLocale, TemplateType } from '@appwrite.io/console'; + import type { + SMSTemplateLocale, + SMSTemplateType, + EmailTemplateType, + EmailTemplateLocale + } from '@appwrite.io/console'; const projectId = $page.params.project; diff --git a/src/routes/console/project-[project]/auth/templates/emailTemplate.svelte b/src/routes/console/project-[project]/auth/templates/emailTemplate.svelte index c8c481ebe8..44b018f144 100644 --- a/src/routes/console/project-[project]/auth/templates/emailTemplate.svelte +++ b/src/routes/console/project-[project]/auth/templates/emailTemplate.svelte @@ -15,7 +15,7 @@ import deepEqual from 'deep-equal'; import { Submit, trackError, trackEvent } from '$lib/actions/analytics'; import { Box } from '$lib/components'; - import type { TemplateLocale, TemplateType } from '@appwrite.io/console'; + import type { EmailTemplateLocale, EmailTemplateType } from '@appwrite.io/console'; export let loading = false; let openResetModal = false; @@ -56,8 +56,8 @@ // TODO: fix TemplateType and TemplateLocale typing once SDK is updated await sdk.forConsole.projects.updateEmailTemplate( $project.$id, - $emailTemplate.type ? ($emailTemplate.type as TemplateType) : undefined, - $emailTemplate.locale ? ($emailTemplate.locale as TemplateLocale) : undefined, + $emailTemplate.type ? ($emailTemplate.type as EmailTemplateType) : undefined, + $emailTemplate.locale ? ($emailTemplate.locale as EmailTemplateLocale) : undefined, $emailTemplate.subject ? $emailTemplate.subject : undefined, $emailTemplate.message ? $emailTemplate.message : undefined, $emailTemplate.senderName ? $emailTemplate.senderName : undefined, diff --git a/src/routes/console/project-[project]/auth/templates/resetEmail.svelte b/src/routes/console/project-[project]/auth/templates/resetEmail.svelte index 0708472050..123a95df95 100644 --- a/src/routes/console/project-[project]/auth/templates/resetEmail.svelte +++ b/src/routes/console/project-[project]/auth/templates/resetEmail.svelte @@ -4,7 +4,7 @@ import { Button } from '$lib/elements/forms'; import { addNotification } from '$lib/stores/notifications'; import { sdk } from '$lib/stores/sdk'; - import type { TemplateLocale, TemplateType } from '@appwrite.io/console'; + import type { EmailTemplateLocale, EmailTemplateType } from '@appwrite.io/console'; import { project } from '../../store'; import { loadEmailTemplate } from './+page.svelte'; import { baseEmailTemplate, emailTemplate } from './store'; @@ -18,8 +18,8 @@ // TODO: fix TemplateType and TemplateLocale typing once SDK is updated await sdk.forConsole.projects.deleteEmailTemplate( $project.$id, - $emailTemplate.type as TemplateType, - $emailTemplate.locale as TemplateLocale + $emailTemplate.type as EmailTemplateType, + $emailTemplate.locale as EmailTemplateLocale ); $emailTemplate = await loadEmailTemplate( $project.$id, diff --git a/src/routes/console/project-[project]/auth/templates/resetSms.svelte b/src/routes/console/project-[project]/auth/templates/resetSms.svelte index dc449b1fa8..4039559b05 100644 --- a/src/routes/console/project-[project]/auth/templates/resetSms.svelte +++ b/src/routes/console/project-[project]/auth/templates/resetSms.svelte @@ -3,7 +3,7 @@ import { Modal } from '$lib/components'; import { Button } from '$lib/elements/forms'; import { sdk } from '$lib/stores/sdk'; - import type { TemplateLocale, TemplateType } from '@appwrite.io/console'; + import type { SMSTemplateLocale, SMSTemplateType } from '@appwrite.io/console'; import { project } from '../../store'; import { loadSmsTemplate } from './+page.svelte'; import { baseSmsTemplate, smsTemplate } from './store'; @@ -17,8 +17,8 @@ // TODO: fix TemplateType and TemplateLocale typing once SDK is updated await sdk.forConsole.projects.deleteSmsTemplate( $project.$id, - $smsTemplate.type as TemplateType, - $smsTemplate.locale as TemplateLocale + $smsTemplate.type as SMSTemplateType, + $smsTemplate.locale as SMSTemplateLocale ); $smsTemplate = await loadSmsTemplate( diff --git a/src/routes/console/project-[project]/auth/templates/smsTemplate.svelte b/src/routes/console/project-[project]/auth/templates/smsTemplate.svelte index 52551d004c..0aa618ee1e 100644 --- a/src/routes/console/project-[project]/auth/templates/smsTemplate.svelte +++ b/src/routes/console/project-[project]/auth/templates/smsTemplate.svelte @@ -8,7 +8,7 @@ import deepEqual from 'deep-equal'; import { Submit, trackError, trackEvent } from '$lib/actions/analytics'; import { Box } from '$lib/components'; - import type { TemplateLocale, TemplateType } from '@appwrite.io/console'; + import type { SMSTemplateLocale, SMSTemplateType } from '@appwrite.io/console'; export let loading = false; const projectId = $page.params.project; @@ -39,8 +39,8 @@ // TODO: fix TemplateType and TemplateLocale typing once SDK is updated await sdk.forConsole.projects.updateSmsTemplate( projectId, - $smsTemplate.type as TemplateType, - $smsTemplate.locale as TemplateLocale, + $smsTemplate.type as SMSTemplateType, + $smsTemplate.locale as SMSTemplateLocale, $smsTemplate.message ); diff --git a/src/routes/console/project-[project]/auth/user-[user]/+layout.ts b/src/routes/console/project-[project]/auth/user-[user]/+layout.ts index 0eafe1903d..a695abc55b 100644 --- a/src/routes/console/project-[project]/auth/user-[user]/+layout.ts +++ b/src/routes/console/project-[project]/auth/user-[user]/+layout.ts @@ -13,7 +13,7 @@ export const load: LayoutLoad = async ({ params, depends }) => { header: Header, breadcrumbs: Breadcrumbs, user: await sdk.forProject.users.get(params.user), - userFactors: await sdk.forProject.users.listProviders(params.user) + userFactors: await sdk.forProject.users.listFactors(params.user) }; } catch (e) { error(e.code, e.message); diff --git a/src/routes/console/project-[project]/auth/user-[user]/deleteMfa.svelte b/src/routes/console/project-[project]/auth/user-[user]/deleteMfa.svelte index 9221a25b86..912fab0b12 100644 --- a/src/routes/console/project-[project]/auth/user-[user]/deleteMfa.svelte +++ b/src/routes/console/project-[project]/auth/user-[user]/deleteMfa.svelte @@ -8,7 +8,7 @@ import InputDigits from '$lib/elements/forms/inputDigits.svelte'; import { addNotification } from '$lib/stores/notifications'; import { sdk } from '$lib/stores/sdk'; - import { AuthenticatorProvider } from '@appwrite.io/console'; + import { AuthenticatorType } from '@appwrite.io/console'; import { user } from './store'; export let showDelete = false; @@ -18,11 +18,7 @@ async function deleteProvider() { try { - await sdk.forConsole.users.deleteAuthenticator( - $user.$id, - AuthenticatorProvider.Totp, - '' - ); + await sdk.forConsole.users.deleteAuthenticator($user.$id, AuthenticatorType.Totp, ''); await invalidate(Dependencies.ACCOUNT); await invalidate(Dependencies.FACTORS); showDelete = false; diff --git a/src/routes/console/project-[project]/auth/user-[user]/store.ts b/src/routes/console/project-[project]/auth/user-[user]/store.ts index 0f924c0afc..909a293ded 100644 --- a/src/routes/console/project-[project]/auth/user-[user]/store.ts +++ b/src/routes/console/project-[project]/auth/user-[user]/store.ts @@ -6,4 +6,4 @@ export const user = derived( page, ($page) => $page.data.user as Models.User> ); -export const userFactors = derived(page, ($page) => $page.data.userFactors as Models.MfaProviders); +export const userFactors = derived(page, ($page) => $page.data.userFactors as Models.MfaFactors); diff --git a/src/routes/console/project-[project]/messaging/+page.svelte b/src/routes/console/project-[project]/messaging/+page.svelte index 724d416ae1..ff96c206e2 100644 --- a/src/routes/console/project-[project]/messaging/+page.svelte +++ b/src/routes/console/project-[project]/messaging/+page.svelte @@ -28,7 +28,7 @@ } from '$lib/elements/table'; import { toLocaleDateTime } from '$lib/helpers/date'; import { Container } from '$lib/layout'; - import { MessageType, MessagingProviderType } from '@appwrite.io/console'; + import { MessageStatus, MessagingProviderType } from '@appwrite.io/console'; import type { PageData } from './$types'; import CreateMessageDropdown from './createMessageDropdown.svelte'; import FailedModal from './failedModal.svelte'; @@ -141,7 +141,7 @@ + disabled={message.status === MessageStatus.Processing} /> {#each $columns as column (column.id)} {#if column.show} diff --git a/src/routes/console/project-[project]/messaging/message-[message]/+page.svelte b/src/routes/console/project-[project]/messaging/message-[message]/+page.svelte index 7c8d89bab2..8bcefdc558 100644 --- a/src/routes/console/project-[project]/messaging/message-[message]/+page.svelte +++ b/src/routes/console/project-[project]/messaging/message-[message]/+page.svelte @@ -12,7 +12,7 @@ import Wizard from '../wizard.svelte'; import type { PageData } from './$types'; import { isValueOfStringEnum } from '$lib/helpers/types'; - import { MessageType, MessagingProviderType } from '@appwrite.io/console'; + import { MessageStatus, MessagingProviderType } from '@appwrite.io/console'; import Topics from './topics.svelte'; import Targets from './targets.svelte'; @@ -35,7 +35,7 @@ topics: $message.topics, users: $message.users, targets: $message.targets, - status: MessageType.Draft, + status: MessageStatus.Draft, scheduledAt: $message.scheduledAt }; @@ -100,19 +100,19 @@ {#if $message.providerType === MessagingProviderType.Email} + onEdit={$message.status === MessageStatus.Draft ? onEdit : null} /> {:else if $message.providerType === MessagingProviderType.Sms} + onEdit={$message.status === MessageStatus.Draft ? onEdit : null} /> {:else if $message.providerType === MessagingProviderType.Push} + onEdit={$message.status === MessageStatus.Draft ? onEdit : null} /> {/if} - {#if $message.status !== MessageType.Processing} + {#if $message.status !== MessageStatus.Processing} {/if} diff --git a/src/routes/console/project-[project]/messaging/message-[message]/topics.svelte b/src/routes/console/project-[project]/messaging/message-[message]/topics.svelte index 75589a7e9d..1df5200aab 100644 --- a/src/routes/console/project-[project]/messaging/message-[message]/topics.svelte +++ b/src/routes/console/project-[project]/messaging/message-[message]/topics.svelte @@ -41,7 +41,7 @@ - {topic.total} + {topic.smsTotal + topic.emailTotal + topic.pushTotal} {/each} diff --git a/src/routes/console/project-[project]/messaging/providers/provider-[provider]/updateStatus.svelte b/src/routes/console/project-[project]/messaging/providers/provider-[provider]/updateStatus.svelte index 1bd4c4536a..df9ad7ee90 100644 --- a/src/routes/console/project-[project]/messaging/providers/provider-[provider]/updateStatus.svelte +++ b/src/routes/console/project-[project]/messaging/providers/provider-[provider]/updateStatus.svelte @@ -232,6 +232,7 @@ undefined, undefined, undefined, + undefined, enabled ); break; diff --git a/src/routes/console/project-[project]/messaging/providers/update.svelte b/src/routes/console/project-[project]/messaging/providers/update.svelte index 2f6dfb5174..a35b5fd3f4 100644 --- a/src/routes/console/project-[project]/messaging/providers/update.svelte +++ b/src/routes/console/project-[project]/messaging/providers/update.svelte @@ -105,6 +105,7 @@ $providerParams[$provider].password || undefined, $providerParams[$provider].encryption, $providerParams[$provider].autoTLS, + $providerParams[$provider].mailer || undefined, $providerParams[$provider].fromName || undefined, $providerParams[$provider].fromEmail, $providerParams[$provider].replyToName || undefined, diff --git a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/dangerZone.svelte b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/dangerZone.svelte index 113c2550cd..b9a2801bd7 100644 --- a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/dangerZone.svelte +++ b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/dangerZone.svelte @@ -11,7 +11,7 @@ import { CardGrid, BoxAvatar, Heading } from '$lib/components'; import { Button } from '$lib/elements/forms'; import { writable } from 'svelte/store'; - import { topic } from './store'; + import { topic, topicTotal } from './store'; import { goto } from '$app/navigation'; import { project } from '$routes/console/project-[project]/store'; import DeleteTopic from './deleteTopic.svelte'; @@ -31,7 +31,7 @@
{$topic.name}

- {$topic.total} subscriber{$topic.total === 1 ? '' : 's'} + {$topicTotal} subscriber{$topicTotal === 1 ? '' : 's'}

diff --git a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/details.svelte b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/details.svelte index 1e81e5044e..09e9191525 100644 --- a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/details.svelte +++ b/src/routes/console/project-[project]/messaging/topics/topic-[topic]/details.svelte @@ -1,7 +1,7 @@ @@ -11,7 +11,7 @@
-

{$topic.total} subscriber{$topic.total === 1 ? '' : 's'}

+

{$topicTotal} subscriber{$topicTotal === 1 ? '' : 's'}

Created: {toLocaleDateTime($topic.$createdAt)}

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 f569876ffd..dec5bf1461 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 @@ -7,3 +7,7 @@ export const topic = derived( // TODO: Set actual type ($page) => $page.data.topic as Models.Topic ); +export const topicTotal = derived( + topic, + ($topic) => $topic.emailTotal + $topic.smsTotal + $topic.pushTotal +); diff --git a/src/routes/console/project-[project]/messaging/topicsModal.svelte b/src/routes/console/project-[project]/messaging/topicsModal.svelte index 247dad8e14..de5620db3e 100644 --- a/src/routes/console/project-[project]/messaging/topicsModal.svelte +++ b/src/routes/console/project-[project]/messaging/topicsModal.svelte @@ -4,7 +4,7 @@ import { sdk } from '$lib/stores/sdk'; import { Query, type Models } from '@appwrite.io/console'; import { createEventDispatcher } from 'svelte'; - import { providerType } from './wizard/store'; + import { providerType, getTotal } from './wizard/store'; export let show: boolean; export let topicsById: Record; @@ -98,12 +98,14 @@ checked={!!selected[topicId]} on:change={(event) => onTopicSelection(event, topic)}> - + + {topic.name} - ({topic.total} subscribers) + + + ({getTotal(topic)} subscribers) + diff --git a/src/routes/console/project-[project]/messaging/wizard.svelte b/src/routes/console/project-[project]/messaging/wizard.svelte index af3e989684..f6e0beeb8b 100644 --- a/src/routes/console/project-[project]/messaging/wizard.svelte +++ b/src/routes/console/project-[project]/messaging/wizard.svelte @@ -12,7 +12,7 @@ import { project } from '../store'; import { wizard } from '$lib/stores/wizard'; import { providerType, messageParams, operation } from './wizard/store'; - import { ID, MessageType, MessagingProviderType, type Models } from '@appwrite.io/console'; + import { ID, MessageStatus, MessagingProviderType, type Models } from '@appwrite.io/console'; import { Dependencies } from '$lib/constants'; async function create() { @@ -81,10 +81,10 @@ wizard.hide(); let message = ''; switch (response.status) { - case MessageType.Draft: + case MessageStatus.Draft: message = 'The message has been saved as draft.'; break; - case MessageType.Processing: + case MessageStatus.Processing: message = 'The message is queued for processing.'; break; case 'scheduled': @@ -181,10 +181,10 @@ wizard.hide(); let message = ''; switch (response.status) { - case MessageType.Draft: + case MessageStatus.Draft: message = 'The message has been saved as draft.'; break; - case MessageType.Processing: + case MessageStatus.Processing: message = 'The message is queued for processing.'; break; case 'scheduled': @@ -212,7 +212,7 @@ } async function saveDraft() { - $messageParams[$providerType].status = MessageType.Draft; + $messageParams[$providerType].status = MessageStatus.Draft; if ($operation === 'create') { create(); } else { diff --git a/src/routes/console/project-[project]/messaging/wizard/emailFormList.svelte b/src/routes/console/project-[project]/messaging/wizard/emailFormList.svelte index 220cb5ea34..d12e12a7ad 100644 --- a/src/routes/console/project-[project]/messaging/wizard/emailFormList.svelte +++ b/src/routes/console/project-[project]/messaging/wizard/emailFormList.svelte @@ -13,7 +13,7 @@ import { CustomId, Modal } from '$lib/components'; import { user } from '$lib/stores/user'; import { clickOnEnter } from '$lib/helpers/a11y'; - import { ID, MessageType, MessagingProviderType } from '@appwrite.io/console'; + import { ID, MessageStatus, MessagingProviderType } from '@appwrite.io/console'; import { sdk } from '$lib/stores/sdk'; let showCustomId = false; @@ -35,7 +35,7 @@ $messageParams[MessagingProviderType.Email]?.targets || [], undefined, undefined, - MessageType.Processing, + MessageStatus.Processing, $messageParams[MessagingProviderType.Email]?.html || false, undefined ); diff --git a/src/routes/console/project-[project]/messaging/wizard/pushFormList.svelte b/src/routes/console/project-[project]/messaging/wizard/pushFormList.svelte index 35ac68926a..53c48900ce 100644 --- a/src/routes/console/project-[project]/messaging/wizard/pushFormList.svelte +++ b/src/routes/console/project-[project]/messaging/wizard/pushFormList.svelte @@ -41,7 +41,7 @@ import { CustomId, Modal } from '$lib/components'; import { user } from '$lib/stores/user'; import { clickOnEnter } from '$lib/helpers/a11y'; - import { ID, MessageType, MessagingProviderType } from '@appwrite.io/console'; + import { ID, MessageStatus, MessagingProviderType } from '@appwrite.io/console'; import { sdk } from '$lib/stores/sdk'; import PushPhone from '../pushPhone.svelte'; import { onMount } from 'svelte'; @@ -76,7 +76,7 @@ undefined, undefined, undefined, - MessageType.Processing, + MessageStatus.Processing, undefined ); } diff --git a/src/routes/console/project-[project]/messaging/wizard/smsFormList.svelte b/src/routes/console/project-[project]/messaging/wizard/smsFormList.svelte index 4eaf07ea67..233f4eee6b 100644 --- a/src/routes/console/project-[project]/messaging/wizard/smsFormList.svelte +++ b/src/routes/console/project-[project]/messaging/wizard/smsFormList.svelte @@ -5,7 +5,7 @@ import { CustomId, Modal } from '$lib/components'; import { user } from '$lib/stores/user'; import { clickOnEnter } from '$lib/helpers/a11y'; - import { ID, MessageType, MessagingProviderType } from '@appwrite.io/console'; + import { ID, MessageStatus, MessagingProviderType } from '@appwrite.io/console'; import { sdk } from '$lib/stores/sdk'; import SMSPhone from '../smsPhone.svelte'; @@ -24,7 +24,7 @@ $messageParams[MessagingProviderType.Sms]?.topics || [], $messageParams[MessagingProviderType.Sms]?.users || [], $messageParams[MessagingProviderType.Sms]?.targets || [], - MessageType.Processing, + MessageStatus.Processing, undefined ); } diff --git a/src/routes/console/project-[project]/messaging/wizard/step2.svelte b/src/routes/console/project-[project]/messaging/wizard/step2.svelte index 684eb031cc..80e62c4fcb 100644 --- a/src/routes/console/project-[project]/messaging/wizard/step2.svelte +++ b/src/routes/console/project-[project]/messaging/wizard/step2.svelte @@ -10,7 +10,7 @@ TableRow } from '$lib/elements/table'; import { WizardStep } from '$lib/layout'; - import { messageParams, providerType, targetsById } from './store'; + import { messageParams, providerType, targetsById, getTotal } from './store'; import Actions from '../actions.svelte'; import { topicsById } from '../store'; import type { Models } from '@appwrite.io/console'; @@ -50,8 +50,9 @@ Targets - Select targets to whom this message should be directed. + + Select targets to whom this message should be directed. + {#if targetIdsLength === 0 && topicIdsLength === 0}
@@ -83,12 +84,14 @@
- + + {topic.name} - ({topic.total} subscribers) + + + ({getTotal(topic)} subscribers) +
@@ -109,8 +112,9 @@
- {target.name ? target.name : target.identifier} + + {target.name ? target.name : target.identifier} +
diff --git a/src/routes/console/project-[project]/messaging/wizard/step3.svelte b/src/routes/console/project-[project]/messaging/wizard/step3.svelte index 2d66e5574b..ba2e7be3b5 100644 --- a/src/routes/console/project-[project]/messaging/wizard/step3.svelte +++ b/src/routes/console/project-[project]/messaging/wizard/step3.svelte @@ -2,7 +2,7 @@ import { Button, FormList, InputDate, InputSelect, InputTime } from '$lib/elements/forms'; import Helper from '$lib/elements/forms/helper.svelte'; import { WizardStep } from '$lib/layout'; - import { MessageType, MessagingProviderType } from '@appwrite.io/console'; + import { MessageStatus, MessagingProviderType } from '@appwrite.io/console'; import { messageParams, providerType } from './store'; let when: 'now' | 'later' = 'now'; @@ -41,9 +41,9 @@ }; async function beforeSubmit() { - $messageParams[$providerType].status = MessageType.Processing; + $messageParams[$providerType].status = MessageStatus.Processing; if (when === 'later') { - $messageParams[$providerType].status = 'scheduled' as MessageType; + $messageParams[$providerType].status = 'scheduled' as MessageStatus; $messageParams[$providerType].scheduledAt = dateTime.toISOString(); } } diff --git a/src/routes/console/project-[project]/messaging/wizard/store.ts b/src/routes/console/project-[project]/messaging/wizard/store.ts index 087acaf76a..e710f72788 100644 --- a/src/routes/console/project-[project]/messaging/wizard/store.ts +++ b/src/routes/console/project-[project]/messaging/wizard/store.ts @@ -1,12 +1,12 @@ -import { MessageType, MessagingProviderType, type Models } from '@appwrite.io/console'; -import { writable } from 'svelte/store'; +import { MessageStatus, MessagingProviderType, type Models } from '@appwrite.io/console'; +import { get, writable } from 'svelte/store'; export type MessageParams = { messageId: string; topics: string[]; users: string[]; targets: string[]; - status: MessageType; + status: MessageStatus; scheduledAt?: string; }; @@ -44,3 +44,16 @@ export const messageParams = writable<{ [MessagingProviderType.Sms]: null, [MessagingProviderType.Push]: null }); + +export function getTotal(topic: Models.Topic): number { + switch (get(providerType)) { + case 'email': + return topic.emailTotal; + case 'sms': + return topic.smsTotal; + case 'push': + return topic.pushTotal; + default: + return 0; + } +} diff --git a/src/routes/mfa/+page.svelte b/src/routes/mfa/+page.svelte index b7a82d8d9a..f445517a0c 100644 --- a/src/routes/mfa/+page.svelte +++ b/src/routes/mfa/+page.svelte @@ -8,7 +8,7 @@ import { Dependencies } from '$lib/constants'; import { Submit, trackEvent, trackError } from '$lib/actions/analytics'; import { page } from '$app/stores'; - import { AuthenticatorProvider } from '@appwrite.io/console'; + import { AuthenticationFactor } from '@appwrite.io/console'; import InputDigits from '$lib/elements/forms/inputDigits.svelte'; let code: string, disabled: boolean; @@ -16,9 +16,7 @@ async function verify() { try { disabled = true; - const challenge = await sdk.forConsole.account.createChallenge( - AuthenticatorProvider.Totp - ); + const challenge = await sdk.forConsole.account.create2FAChallenge(AuthenticationFactor.Totp); await sdk.forConsole.account.updateChallenge(challenge.$id, code); await invalidate(Dependencies.ACCOUNT); trackEvent(Submit.AccountCreate); From dc55a6bd3a3c6483259d207975a6a3a6fbcb2a6c Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Tue, 20 Feb 2024 16:14:27 -0800 Subject: [PATCH 03/11] feat(messaging): fix total on topics page --- .../console/project-[project]/messaging/topics/store.ts | 5 ++++- .../console/project-[project]/messaging/topics/table.svelte | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/routes/console/project-[project]/messaging/topics/store.ts b/src/routes/console/project-[project]/messaging/topics/store.ts index a0f832d2b9..742f0a4325 100644 --- a/src/routes/console/project-[project]/messaging/topics/store.ts +++ b/src/routes/console/project-[project]/messaging/topics/store.ts @@ -6,6 +6,9 @@ export const showCreate = writable(false); export const columns = writable([ { id: '$id', title: 'Topic ID', type: 'string', show: true, width: 140 }, { id: 'name', title: 'Name', type: 'string', show: true, width: 140 }, - { id: 'total', title: 'Subscribers', type: 'integer', show: true, width: 140 }, + { id: 'emailTotal', title: 'Email Subscribers', type: 'integer', show: false, width: 140 }, + { id: 'smsTotal', title: 'SMS Subscribers', type: 'integer', show: false, width: 140 }, + { id: 'pushTotal', title: 'Push Subscribers', type: 'integer', show: false, width: 140 }, + { id: 'total', title: 'Subscribers', type: 'integer', show: true, filter: false, width: 140 }, { id: '$createdAt', title: 'Created', type: 'datetime', show: true, width: 140 } ]); diff --git a/src/routes/console/project-[project]/messaging/topics/table.svelte b/src/routes/console/project-[project]/messaging/topics/table.svelte index 8118edbf15..8e611a83b0 100644 --- a/src/routes/console/project-[project]/messaging/topics/table.svelte +++ b/src/routes/console/project-[project]/messaging/topics/table.svelte @@ -90,6 +90,10 @@ {toLocaleDateTime(topic[column.id])} {/if} + {:else if column.id === 'total'} + + {topic.emailTotal + topic.smsTotal + topic.pushTotal} + {:else} {topic[column.id]} From 4bd21f58b899de3dae1c7f5a430e3769dda9f900 Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Tue, 20 Feb 2024 16:15:51 -0800 Subject: [PATCH 04/11] fix(messaging): move topics modal description closer to header --- .../console/project-[project]/messaging/topicsModal.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/console/project-[project]/messaging/topicsModal.svelte b/src/routes/console/project-[project]/messaging/topicsModal.svelte index de5620db3e..42c49c6ba7 100644 --- a/src/routes/console/project-[project]/messaging/topicsModal.svelte +++ b/src/routes/console/project-[project]/messaging/topicsModal.svelte @@ -79,7 +79,7 @@ } - +

Select existing topics you want to send this message to its subscribers. The message will be sent only to {$providerType} targets. From ccfe6b91d4895c6054eb1fa2bf15ec07a43665cb Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Tue, 20 Feb 2024 16:16:34 -0800 Subject: [PATCH 05/11] fix(messaging): reduce space before pagination in topics modal --- .../console/project-[project]/messaging/topicsModal.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/console/project-[project]/messaging/topicsModal.svelte b/src/routes/console/project-[project]/messaging/topicsModal.svelte index 42c49c6ba7..12a2a3f581 100644 --- a/src/routes/console/project-[project]/messaging/topicsModal.svelte +++ b/src/routes/console/project-[project]/messaging/topicsModal.svelte @@ -111,7 +111,7 @@ {/each} -

+

Total results: {totalResults}

From 041ec1fae19efd56390d299a96da3fbce10f2e99 Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Tue, 20 Feb 2024 16:16:55 -0800 Subject: [PATCH 06/11] fix(messaging): add dividers between topics in topics modal --- .../messaging/topicsModal.svelte | 47 +++++++++++-------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/src/routes/console/project-[project]/messaging/topicsModal.svelte b/src/routes/console/project-[project]/messaging/topicsModal.svelte index 12a2a3f581..e549b4796e 100644 --- a/src/routes/console/project-[project]/messaging/topicsModal.svelte +++ b/src/routes/console/project-[project]/messaging/topicsModal.svelte @@ -1,6 +1,7 @@