diff --git a/package-lock.json b/package-lock.json index 1a99fd57e..3a1c153f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "@appwrite/console", "dependencies": { - "@appwrite.io/console": "^0.6.0-rc.14", + "@appwrite.io/console": "^0.6.0-rc.17", "@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.14", - "resolved": "https://registry.npmjs.org/@appwrite.io/console/-/console-0.6.0-rc.14.tgz", - "integrity": "sha512-7Od0RuGRF01YUCWGTAvlTvgUG7sUCVHG9ig11OKz9jjBxE91BVcWsmqGWiXw+xb4HhF2jiyHd9ZU3sKAo0IC3w==", + "version": "0.6.0-rc.17", + "resolved": "https://registry.npmjs.org/@appwrite.io/console/-/console-0.6.0-rc.17.tgz", + "integrity": "sha512-QCUMpvQIt9NseNHlVNFk8wuTro0i6UXeGxO9nuXtIOC9oC20vi5tdiFz1ImjYS2SVtlB0PJRGf58Q/p2WPoR1g==", "dependencies": { "cross-fetch": "3.1.5", "isomorphic-form-data": "2.0.0" @@ -2336,9 +2336,9 @@ } }, "node_modules/@sveltejs/kit": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.5.0.tgz", - "integrity": "sha512-1uyXvzC2Lu1FZa30T4y5jUAC21R309ZMRG0TPt+PPPbNUoDpy8zSmSNVWYaBWxYDqLGQ5oPNWvjvvF2IjJ1jmA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.5.1.tgz", + "integrity": "sha512-TKj08o3mJCoQNLTdRdGkHPePTCPUGTgkew65RDqjVU3MtPVxljsofXQYfXndHfq0P7KoPRO/0/reF6HesU0Djw==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -3256,9 +3256,9 @@ } }, "node_modules/ai": { - "version": "2.2.35", - "resolved": "https://registry.npmjs.org/ai/-/ai-2.2.35.tgz", - "integrity": "sha512-YzR56VAMjqvGIVzMUFwH7jjo7K+Z3Old4nXcigiWsuqXnWQeQi3iPR8p2/xOZzmuZyMTOC+6jjbIJ8hoEOhfcQ==", + "version": "2.2.36", + "resolved": "https://registry.npmjs.org/ai/-/ai-2.2.36.tgz", + "integrity": "sha512-QX3ZXgHjn4cQ233PHne1m7ZP+nfP93CkDEgNCIxuiDp+mhLEIEV10F1Qk3NozJ8mmSoyIJR82ea16kMZKOi8hw==", "dependencies": { "eventsource-parser": "1.0.0", "nanoid": "3.3.6", @@ -9514,9 +9514,9 @@ } }, "node_modules/vitest/node_modules/npm-run-path": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", - "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "dependencies": { "path-key": "^4.0.0" diff --git a/package.json b/package.json index c608c667c..1afb8d285 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "e2e": "playwright test tests/e2e" }, "dependencies": { - "@appwrite.io/console": "^0.6.0-rc.14", + "@appwrite.io/console": "^0.6.0-rc.17", "@appwrite.io/pink": "0.4.0", "@appwrite.io/pink-icons": "0.4.0", "@popperjs/core": "^2.11.8", diff --git a/src/lib/actions/analytics.ts b/src/lib/actions/analytics.ts index 5da9bede1..4a5b473e9 100644 --- a/src/lib/actions/analytics.ts +++ b/src/lib/actions/analytics.ts @@ -245,6 +245,7 @@ export enum Submit { WebhookUpdateUrl = 'submit_webhook_update_url', WebhookUpdateEvents = 'submit_webhook_update_events', WebhookUpdateName = 'submit_webhook_update_name', + WebhookUpdateEnabled = 'submit_webhook_update_enabled', WebhookUpdateSecurity = 'submit_webhook_update_security', BucketCreate = 'submit_bucket_create', BucketDelete = 'submit_bucket_delete', diff --git a/src/lib/components/drop.svelte b/src/lib/components/drop.svelte index f61ff6a24..a1c222e08 100644 --- a/src/lib/components/drop.svelte +++ b/src/lib/components/drop.svelte @@ -12,6 +12,7 @@ export let childStart = false; export let noStyle = false; export let fullWidth = false; + export let wrapperFullWidth = false; export let fixed = false; export let display = 'block'; @@ -104,6 +105,7 @@
diff --git a/src/lib/components/dropList.svelte b/src/lib/components/dropList.svelte index dd8271f1d..c6ad97dd1 100644 --- a/src/lib/components/dropList.svelte +++ b/src/lib/components/dropList.svelte @@ -11,10 +11,20 @@ export let noStyle = false; export let width: string = null; export let fullWidth = false; + export let wrapperFullWidth = false; export let position: 'relative' | 'static' = 'relative'; - +
; + export let fullWidthMobile = false; const parsedQueries = queryParamToMap(query); queries.set(parsedQueries); @@ -55,7 +56,7 @@
-
- {#each type.backups as code} + {#each codes.recoveryCodes as code} {code} 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 a695abc55..e0cc98485 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.listFactors(params.user) + userFactors: await sdk.forProject.users.listMfaFactors(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 3727ffcba..4e66a6a30 100644 --- a/src/routes/console/project-[project]/auth/user-[user]/deleteMfa.svelte +++ b/src/routes/console/project-[project]/auth/user-[user]/deleteMfa.svelte @@ -15,7 +15,7 @@ async function deleteProvider() { try { - await sdk.forConsole.users.deleteAuthenticator($user.$id, AuthenticatorType.Totp); + await sdk.forConsole.users.deleteMfaAuthenticator($user.$id, AuthenticatorType.Totp); await invalidate(Dependencies.ACCOUNT); await invalidate(Dependencies.FACTORS); showDelete = false; diff --git a/src/routes/console/project-[project]/messaging/+page.svelte b/src/routes/console/project-[project]/messaging/+page.svelte index e27bd3f07..a9272aee3 100644 --- a/src/routes/console/project-[project]/messaging/+page.svelte +++ b/src/routes/console/project-[project]/messaging/+page.svelte @@ -27,19 +27,21 @@ TableScroll } from '$lib/elements/table'; import { toLocaleDateTime } from '$lib/helpers/date'; - import { Container } from '$lib/layout'; + import { Container, ContainerHeader } from '$lib/layout'; import { MessagingProviderType } from '@appwrite.io/console'; import type { PageData } from './$types'; import CreateMessageDropdown from './createMessageDropdown.svelte'; import FailedModal from './failedModal.svelte'; import MessageStatusPill from './messageStatusPill.svelte'; import ProviderType from './providerType.svelte'; - import { columns, showCreate } from './store'; + import { showCreate } from './store'; import { sdk } from '$lib/stores/sdk'; import { invalidate } from '$app/navigation'; import { trackEvent, Submit, trackError } from '$lib/actions/analytics'; import { Dependencies } from '$lib/constants'; import { addNotification } from '$lib/stores/notifications'; + import type { Column } from '$lib/helpers/types'; + import { writable } from 'svelte/store'; export let data: PageData; let selected: string[] = []; @@ -47,9 +49,17 @@ let deleting = false; let showFailed = false; let errors: string[] = []; - let showCreateDropdownMobile = false; let showCreateDropdownDesktop = false; + let showCreateDropdownMobile = false; let showCreateDropdownEmpty = false; + const columns = writable([ + { id: '$id', title: 'Message ID', type: 'string', show: true, width: 140 }, + { id: 'message', title: 'Message', type: 'string', show: false, filter: false, width: 140 }, + { id: 'providerType', title: 'Type', type: 'string', show: true, width: 100 }, + { id: 'status', title: 'Status', type: 'string', show: true, width: 120 }, + { id: 'scheduledAt', title: 'Scheduled at', type: 'datetime', show: true, width: 120 }, + { id: 'deliveredAt', title: 'Delivered at', type: 'datetime', show: false, width: 120 } + ]); const project = $page.params.project; @@ -82,46 +92,44 @@ -
-
- Messages -
- -
+ +
+
- +
+
-
- - - - +
+
+ + + +
-
+
- + showColsTextMobile + fullWidthMobile />
- - +
- {#if data.messages.total} diff --git a/src/routes/console/project-[project]/messaging/providers/provider-[provider]/updateSettings.svelte b/src/routes/console/project-[project]/messaging/providers/provider-[provider]/updateSettings.svelte index c4c5a912f..e1fe4b242 100644 --- a/src/routes/console/project-[project]/messaging/providers/provider-[provider]/updateSettings.svelte +++ b/src/routes/console/project-[project]/messaging/providers/provider-[provider]/updateSettings.svelte @@ -13,12 +13,13 @@ import { onMount } from 'svelte'; import CreateMember from '$routes/console/organization-[organization]/createMember.svelte'; - export let inputs: ProviderInput[]; + export let inputs: (ProviderInput | ProviderInput[])[]; export let providerType: MessagingProviderType; export let provider: Providers; export let providerId: string; export let params: object; + let flattened: ProviderInput[] = []; let formValues: object = {}; let originalfiles: Record = {}; let files: Record = {}; @@ -41,7 +42,15 @@ } onMount(() => { - for (const input of inputs) { + flattened = []; + for (const i of inputs) { + if (Array.isArray(i)) { + flattened.push(...i); + } else { + flattened.push(i); + } + } + for (const input of flattened) { const value = params[input.name]; formValues[input.name] = value; if (input.type === 'file' && typeof value == 'string' && value.length > 0) { @@ -198,7 +207,7 @@ } $: updated = - inputs + flattened .filter((input) => input.type !== 'file') .some((input) => formValues[input.name] !== params[input.name]) || Object.keys(files).some((key) => files[key] !== originalfiles[key]); 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 6e62a27fc..adb34d307 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 @@ -134,16 +134,20 @@
-
+
-

Provider:

-

Channel:

-

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

+
+

+ Provider: +

+

Type:

+

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

+
diff --git a/src/routes/console/project-[project]/messaging/providers/settingsFormInput.svelte b/src/routes/console/project-[project]/messaging/providers/settingsFormInput.svelte new file mode 100644 index 000000000..6bec64045 --- /dev/null +++ b/src/routes/console/project-[project]/messaging/providers/settingsFormInput.svelte @@ -0,0 +1,147 @@ + + +{#if input.type === 'text'} + + + + + +{:else if input.type === 'password'} + + + + + +{:else if input.type === 'email'} + + + + + +{:else if input.type === 'domain'} + + + + + +{:else if input.type === 'phone'} + + + + + +{:else if input.type === 'file'} + + {fullWidth} + + + + +{:else if input.type === 'switch'} + + +

{@html input.description}

+
+
+{:else if input.type === 'checkbox'} + + + {input.description} + + +{:else if input.type === 'select'} + +{/if} diff --git a/src/routes/console/project-[project]/messaging/providers/settingsFormList.svelte b/src/routes/console/project-[project]/messaging/providers/settingsFormList.svelte index 609b55790..356ea4759 100644 --- a/src/routes/console/project-[project]/messaging/providers/settingsFormList.svelte +++ b/src/routes/console/project-[project]/messaging/providers/settingsFormList.svelte @@ -1,17 +1,6 @@ -
- - - +
+
+ 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]/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 95% 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..e469b7991 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 @@ -18,15 +18,16 @@ } 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 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'; + 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} diff --git a/src/routes/console/project-[project]/messaging/wizard/emailFormList.svelte b/src/routes/console/project-[project]/messaging/wizard/emailFormList.svelte index ca25f281c..693d209fb 100644 --- a/src/routes/console/project-[project]/messaging/wizard/emailFormList.svelte +++ b/src/routes/console/project-[project]/messaging/wizard/emailFormList.svelte @@ -49,6 +49,7 @@ @@ -56,10 +57,10 @@ - diff --git a/src/routes/console/project-[project]/messaging/wizard/pushFormList.svelte b/src/routes/console/project-[project]/messaging/wizard/pushFormList.svelte index 5137cafa2..7858daa6a 100644 --- a/src/routes/console/project-[project]/messaging/wizard/pushFormList.svelte +++ b/src/routes/console/project-[project]/messaging/wizard/pushFormList.svelte @@ -91,6 +91,7 @@ @@ -99,6 +100,7 @@ id="message" label="Message" placeholder="Type here..." + required maxlength={1000} bind:value={$messageParams[MessagingProviderType.Push]['body']}> diff --git a/src/routes/console/project-[project]/messaging/wizard/smsFormList.svelte b/src/routes/console/project-[project]/messaging/wizard/smsFormList.svelte index c01466df6..9b315caa1 100644 --- a/src/routes/console/project-[project]/messaging/wizard/smsFormList.svelte +++ b/src/routes/console/project-[project]/messaging/wizard/smsFormList.svelte @@ -38,8 +38,9 @@ diff --git a/src/routes/console/project-[project]/messaging/wizard/step2.svelte b/src/routes/console/project-[project]/messaging/wizard/step2.svelte index da25ba1fa..b922dd4a2 100644 --- a/src/routes/console/project-[project]/messaging/wizard/step2.svelte +++ b/src/routes/console/project-[project]/messaging/wizard/step2.svelte @@ -41,13 +41,19 @@ $targetsById = rest; } + async function beforeSubmit() { + if (topicIdsLength === 0 && targetIdsLength === 0) { + throw new Error('At least one topic or target is required.'); + } + } + $: topicIdsLength = Object.keys($topicsById).length; $: targetIdsLength = Object.keys($targetsById).length; $: $messageParams[$providerType].targets = Object.keys($targetsById); $: $messageParams[$providerType].topics = Object.keys($topicsById); - + Targets Select targets to whom this message should be directed. diff --git a/src/routes/console/project-[project]/settings/webhooks/+page.svelte b/src/routes/console/project-[project]/settings/webhooks/+page.svelte index d20533a1f..ea1a2cbe6 100644 --- a/src/routes/console/project-[project]/settings/webhooks/+page.svelte +++ b/src/routes/console/project-[project]/settings/webhooks/+page.svelte @@ -7,8 +7,7 @@ +
diff --git a/src/routes/console/project-[project]/settings/webhooks/[webhook]/details.svelte b/src/routes/console/project-[project]/settings/webhooks/[webhook]/details.svelte new file mode 100644 index 000000000..37424e263 --- /dev/null +++ b/src/routes/console/project-[project]/settings/webhooks/[webhook]/details.svelte @@ -0,0 +1,89 @@ + + + + {$webhook.url} + + +
+
    + + + + +
  • Created: {toLocaleDateTime($webhook.$createdAt)}
  • +
  • Last updated: {toLocaleDateTime($webhook.$updatedAt)}
  • +
+ +
+
+ + +
+ {#if $webhook.logs.length > 0} + + {/if} + + +
+
+
+ + diff --git a/src/routes/console/project-[project]/settings/webhooks/[webhook]/header.svelte b/src/routes/console/project-[project]/settings/webhooks/[webhook]/header.svelte index 9a09cbb01..8debdc385 100644 --- a/src/routes/console/project-[project]/settings/webhooks/[webhook]/header.svelte +++ b/src/routes/console/project-[project]/settings/webhooks/[webhook]/header.svelte @@ -12,6 +12,6 @@ {$webhook?.name} - Webhook ID + {$webhook?.$id} diff --git a/src/routes/console/project-[project]/settings/webhooks/failedModal.svelte b/src/routes/console/project-[project]/settings/webhooks/failedModal.svelte new file mode 100644 index 000000000..67437a82b --- /dev/null +++ b/src/routes/console/project-[project]/settings/webhooks/failedModal.svelte @@ -0,0 +1,52 @@ + + + +
+
+

+

+ + {#if showUpdateButton} + + {/if} +
+ +

+ The connection to {webhook.url} stopped after {webhook.attempts} consecutive failures. Please + refer to the logs below for more information or try to update the webhook to resolve this + issue. +

+
+ +
+
+ + + + +
diff --git a/src/routes/console/project-[project]/settings/webhooks/messageStatusPill.svelte b/src/routes/console/project-[project]/settings/webhooks/messageStatusPill.svelte new file mode 100644 index 000000000..2c12a4ee0 --- /dev/null +++ b/src/routes/console/project-[project]/settings/webhooks/messageStatusPill.svelte @@ -0,0 +1,16 @@ + + + + + + diff --git a/src/routes/console/project-[project]/settings/webhooks/store.ts b/src/routes/console/project-[project]/settings/webhooks/store.ts new file mode 100644 index 000000000..4d7bfd323 --- /dev/null +++ b/src/routes/console/project-[project]/settings/webhooks/store.ts @@ -0,0 +1,17 @@ +// import { page } from '$app/stores'; +import type { Column } from '$lib/helpers/types'; +// import type { Models } from '@appwrite.io/console'; +import { writable } from 'svelte/store'; + +// export const database = derived(page, ($page) => $page.data.database as Models.Database); +// export const showCreate = writable(false); + +export const columns = writable([ + { id: '$id', title: 'Webhook ID', type: 'string', show: true, width: 150 }, + { id: 'name', title: 'Name', type: 'string', show: true, width: 120 }, + { id: 'url', title: 'Post URL', type: 'string', show: true, width: 120 }, + { id: 'events', title: 'Events', type: 'string', show: true, width: 60 }, + { id: 'enabled', title: 'Status', type: 'string', show: true, width: 150 }, + { id: '$createdAt', title: 'Created', type: 'datetime', show: true, width: 120 }, + { id: '$updatedAt', title: 'Updated', type: 'datetime', show: true, width: 120 } +]); diff --git a/src/routes/mfa/+page.svelte b/src/routes/mfa/+page.svelte index eedc50900..46653e270 100644 --- a/src/routes/mfa/+page.svelte +++ b/src/routes/mfa/+page.svelte @@ -16,10 +16,10 @@ async function verify() { try { disabled = true; - const challenge = await sdk.forConsole.account.createChallenge( + const challenge = await sdk.forConsole.account.createMfaChallenge( AuthenticationFactor.Totp ); - await sdk.forConsole.account.updateChallenge(challenge.$id, code); + await sdk.forConsole.account.updateMfaChallenge(challenge.$id, code); await invalidate(Dependencies.ACCOUNT); trackEvent(Submit.AccountCreate); if ($page.url.searchParams) { @@ -61,14 +61,4 @@ - - - -