diff --git a/package-lock.json b/package-lock.json index e1692d09c..5ed77b508 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "@appwrite/console", "dependencies": { - "@appwrite.io/console": "^0.6.0-rc.13", + "@appwrite.io/console": "^0.6.0-rc.14", "@appwrite.io/pink": "0.5.0", "@appwrite.io/pink-icons": "0.5.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.13", - "resolved": "https://registry.npmjs.org/@appwrite.io/console/-/console-0.6.0-rc.13.tgz", - "integrity": "sha512-/c+HGkqdqWjjlzVgOmC6vb4t2jsHgbmX/aaDLoQHXFmaakEDWzK1cgVYRHoU3o14xIEpBupteh3KzOoqdLvvsQ==", + "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==", "dependencies": { "cross-fetch": "3.1.5", "isomorphic-form-data": "2.0.0" diff --git a/package.json b/package.json index 0b588133e..eb70246cc 100644 --- a/package.json +++ b/package.json @@ -12,13 +12,13 @@ "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch", "lint": "prettier --check . && eslint .", "format": "prettier --write .", - "test": "vitest run", - "test:ui": "vitest --ui", - "test:watch": "vitest watch", + "test": "TZ=EST vitest run", + "test:ui": "TZ=EST vitest --ui", + "test:watch": "TZ=EST vitest watch", "e2e": "playwright test tests/e2e" }, "dependencies": { - "@appwrite.io/console": "^0.6.0-rc.13", + "@appwrite.io/console": "^0.6.0-rc.14", "@appwrite.io/pink": "0.5.0", "@appwrite.io/pink-icons": "0.5.0", "@popperjs/core": "^2.11.8", diff --git a/src/lib/actions/analytics.ts b/src/lib/actions/analytics.ts index e967ec3d2..5da9bede1 100644 --- a/src/lib/actions/analytics.ts +++ b/src/lib/actions/analytics.ts @@ -301,7 +301,7 @@ export enum Submit { MessagingTopicCreate = 'submit_messaging_topic_create', MessagingTopicDelete = 'submit_messaging_topic_delete', MessagingTopicUpdateName = 'submit_messaging_topic_update_name', - MessagingTopicUpdateDescription = 'submit_messaging_topic_update_description', + MessagingTopicUpdatePermissions = 'submit_messaging_topic_update_permissions', MessagingTopicSubscriberAdd = 'submit_messaging_topic_subscriber_add', MessagingTopicSubscriberDelete = 'submit_messaging_topic_subscriber_delete' } diff --git a/src/lib/components/collapsibleItem.svelte b/src/lib/components/collapsibleItem.svelte index 736f2fe21..3420b555c 100644 --- a/src/lib/components/collapsibleItem.svelte +++ b/src/lib/components/collapsibleItem.svelte @@ -3,10 +3,11 @@ export let withIndentation = false; export let open = false; + export let disabled = false;
  • -
    +
    - + {#if $$slots.subtitle} - + {/if}
    -
  • + + diff --git a/src/lib/components/filePicker.svelte b/src/lib/components/filePicker.svelte index fcbd6f3c4..64755ca4d 100644 --- a/src/lib/components/filePicker.svelte +++ b/src/lib/components/filePicker.svelte @@ -274,7 +274,7 @@
    { value = next.join(''); + + if (value.length === 6 && !autoSubmitted) { + autoSubmitted = true; + const firstInputElement = element.querySelector('input'); + firstInputElement?.form.requestSubmit(); + } + return next; } }); onMount(() => { - if (element && autofocus) { - element.querySelector('input')?.focus(); - } + const interval = setInterval(() => { + const input = element.querySelector('input'); + if (element) { + if (input && autofocus) { + input.focus(); + } + clearInterval(interval); + } + }, 10); }); diff --git a/src/lib/helpers/date.ts b/src/lib/helpers/date.ts index c8aaf0fc8..d0802c9cc 100644 --- a/src/lib/helpers/date.ts +++ b/src/lib/helpers/date.ts @@ -41,6 +41,38 @@ export const toLocaleDateTime = (datetime: string | number) => { return date.toLocaleDateString('en', options); }; +/** + * Returns a date string usig the local timezone in ISO format (yyyy-mm-dd) + * + * @param datetime date string or milliseconds since the epoch + */ +export const toLocaleDateISO = (datetime: string | number) => { + const date = new Date(datetime); + + if (isNaN(date.getTime())) { + return 'n/a'; + } + + // Use Sweden's locale (sv) since it matches ISO format + return date.toLocaleDateString('sv'); +}; + +/** + * Returns a time string usig the local timezone in ISO format (hh:mm:ss) + * + * @param datetime date string or milliseconds since the epoch + */ +export const toLocaleTimeISO = (datetime: string | number) => { + const date = new Date(datetime); + + if (isNaN(date.getTime())) { + return 'n/a'; + } + + // Use Sweden's locale (sv) since it matches ISO format + return date.toLocaleTimeString('sv'); +}; + export const isSameDay = (date1: Date, date2: Date) => { return ( date1.getFullYear() === date2.getFullYear() && diff --git a/src/lib/pages/domains/wizard/step1.svelte b/src/lib/pages/domains/wizard/step1.svelte index 2c0010a3a..794d6d945 100644 --- a/src/lib/pages/domains/wizard/step1.svelte +++ b/src/lib/pages/domains/wizard/step1.svelte @@ -34,7 +34,7 @@ - Add function domain + Domain Use your self-owned domain as the endpoint of your Appwrite API. { + async listAddresses(queries: string[] = []): Promise { const path = `/account/billing-addresses`; const params = { queries diff --git a/src/lib/wizards/functions/steps/executeAccess.svelte b/src/lib/wizards/functions/steps/executeAccess.svelte index 6d0e7c29d..6972bb2f6 100644 --- a/src/lib/wizards/functions/steps/executeAccess.svelte +++ b/src/lib/wizards/functions/steps/executeAccess.svelte @@ -5,7 +5,7 @@ - Execution permissions + Permissions Choose who can execute this function using the client API. For more information, visit our 0; let loadingProjects = false; let projectType = 'existing'; @@ -43,9 +42,7 @@ - - {hasProjects ? 'Select project' : 'Create project'} - + Project
    {#if organizations.length > 1} diff --git a/src/routes/console/(migration-wizard)/step2.svelte b/src/routes/console/(migration-wizard)/step2.svelte index c65a20327..a19e67603 100644 --- a/src/routes/console/(migration-wizard)/step2.svelte +++ b/src/routes/console/(migration-wizard)/step2.svelte @@ -7,7 +7,7 @@ - Select resources + Resources Select the resources you need to migrate to Appwrite. Some resources can be migrated, but with limitations. -

    Are you sure you want to delete this authentication method from your account?

    +

    + Deleting the authentication method will disable multi-factor authentication for your + account. To re-enable it, you'll need to add a new authentication method. +

    +

    Enter the 6-digit verification code generated by your authenticator app to continue.

    diff --git a/src/routes/console/account/mfa.svelte b/src/routes/console/account/mfa.svelte index 2f584fb18..11d8db720 100644 --- a/src/routes/console/account/mfa.svelte +++ b/src/routes/console/account/mfa.svelte @@ -13,6 +13,7 @@ export let showSetup = false; export let showRecoveryCodes = false; + let copyParent: HTMLElement; let code: string; let type: Models.MfaType = null; async function addAuthenticator(): Promise { @@ -48,13 +49,43 @@ Install an authenticator app on your mobile device, open it and scan the provided QR code or enter it manually.

    -
    - {#await addAuthenticator()} + + {#await addAuthenticator()} +
    - {:then qr} +
    + {:then qr} +
    MFA QR Code - {/await} -
    +
    + or + +
    + + + +
    + +
    +
    + {#key copyParent} + + + {/key} +
    +
    +
    +
    + {/await} +
    diff --git a/src/routes/console/organization-[organization]/billing/wizard/addCredit.svelte b/src/routes/console/organization-[organization]/billing/wizard/addCredit.svelte index ddc5292c2..d62ffc7ab 100644 --- a/src/routes/console/organization-[organization]/billing/wizard/addCredit.svelte +++ b/src/routes/console/organization-[organization]/billing/wizard/addCredit.svelte @@ -38,7 +38,7 @@ - Add credits + Credits Add Appwrite credits to your organization. A payment method is required before credits can be applied. diff --git a/src/routes/console/organization-[organization]/billing/wizard/paymentDetails.svelte b/src/routes/console/organization-[organization]/billing/wizard/paymentDetails.svelte index b4f54264d..72dfd81c2 100644 --- a/src/routes/console/organization-[organization]/billing/wizard/paymentDetails.svelte +++ b/src/routes/console/organization-[organization]/billing/wizard/paymentDetails.svelte @@ -41,7 +41,7 @@ - Payment details + Details Add a payment method to your organization. You will not be charged until you upgrade to a Pro or Scale plan. diff --git a/src/routes/console/organization-[organization]/excesLimitModal.svelte b/src/routes/console/organization-[organization]/excesLimitModal.svelte index bead52e17..848f1b51e 100644 --- a/src/routes/console/organization-[organization]/excesLimitModal.svelte +++ b/src/routes/console/organization-[organization]/excesLimitModal.svelte @@ -13,7 +13,6 @@ import ChangeOrganizationTierCloud from '../changeOrganizationTierCloud.svelte'; import { goto } from '$app/navigation'; import { last } from '$lib/helpers/array'; - import { BillingPlan } from '$lib/constants'; import { trackEvent } from '$lib/actions/analytics'; export let show = false; @@ -58,25 +57,14 @@ - - Your usage exceeds the {tierToPlan($organization.billingPlan).name} plan limits - - - {#if $organization.billingPlan === BillingPlan.STARTER} -

    - Usage for {$organization.name} organization has reached the limits of the {tierToPlan( - $organization.billingPlan - ).name} plan. Consider upgrading to increase your resource usage. -

    - {:else} -

    - Usage for {$organization.name} organization has reached the limits of the {tierToPlan( - $organization.billingPlan - ).name} plan. Excess usage fees will apply. -

    - {/if} +

    + Usage for {$organization.name} organization has reached the limits of the {tierToPlan( + $organization.billingPlan + ).name} plan. Excess usage fees will apply. +

    +
    diff --git a/src/routes/console/organization-[organization]/header.svelte b/src/routes/console/organization-[organization]/header.svelte index 23c2d23d8..0dca9c0e3 100644 --- a/src/routes/console/organization-[organization]/header.svelte +++ b/src/routes/console/organization-[organization]/header.svelte @@ -78,7 +78,7 @@ }, ...permanentTabSettings ] - : permanentTabs; + : [...permanentTabs, ...permanentTabSettings]; {#if $organization?.$id} diff --git a/src/routes/console/organization-[organization]/settings/+page.svelte b/src/routes/console/organization-[organization]/settings/+page.svelte index 840754307..4b09765ee 100644 --- a/src/routes/console/organization-[organization]/settings/+page.svelte +++ b/src/routes/console/organization-[organization]/settings/+page.svelte @@ -99,4 +99,6 @@ {/if} - +{#if isCloud && data.invoices} + +{/if} diff --git a/src/routes/console/organization-[organization]/settings/+page.ts b/src/routes/console/organization-[organization]/settings/+page.ts index f4db3678f..c3d520eb2 100644 --- a/src/routes/console/organization-[organization]/settings/+page.ts +++ b/src/routes/console/organization-[organization]/settings/+page.ts @@ -2,12 +2,14 @@ import type { PageLoad } from './$types'; import { Dependencies } from '$lib/constants'; import { sdk } from '$lib/stores/sdk'; import { Query } from '@appwrite.io/console'; +import { isCloud } from '$lib/system'; export const load: PageLoad = async ({ depends, parent }) => { const { organization } = await parent(); depends(Dependencies.ORGANIZATION); + return { projects: await sdk.forConsole.projects.list([Query.equal('teamId', organization.$id)]), - invoices: await sdk.forConsole.billing.listInvoices(organization.$id) + invoices: isCloud ? await sdk.forConsole.billing.listInvoices(organization.$id) : undefined }; }; diff --git a/src/routes/console/organization-[organization]/wizard/step1.svelte b/src/routes/console/organization-[organization]/wizard/step1.svelte index 70bbc0050..612fd11fc 100644 --- a/src/routes/console/organization-[organization]/wizard/step1.svelte +++ b/src/routes/console/organization-[organization]/wizard/step1.svelte @@ -9,7 +9,7 @@ - Project Details + Details +

    + Deleting the authentication method will disable multi-factor authentication for this + account. To re-enable it, user will need to add a new authentication method. +

    Are you sure you want to delete this authentication method from your account?

    - - - diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/wizard/step1.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/wizard/step1.svelte index fc7bb5c78..b14c3a728 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/wizard/step1.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/wizard/step1.svelte @@ -5,7 +5,7 @@ - Create data + Data Provide document data based on attributes you created earlier. diff --git a/src/routes/console/project-[project]/functions/function-[function]/execute.svelte b/src/routes/console/project-[project]/functions/function-[function]/execute.svelte index a8460d6db..57d52063d 100644 --- a/src/routes/console/project-[project]/functions/function-[function]/execute.svelte +++ b/src/routes/console/project-[project]/functions/function-[function]/execute.svelte @@ -121,11 +121,7 @@ - + {:else} @@ -214,7 +210,7 @@
    diff --git a/src/routes/console/project-[project]/functions/wizard/step1.svelte b/src/routes/console/project-[project]/functions/wizard/step1.svelte index 17408aacb..8700c7bbe 100644 --- a/src/routes/console/project-[project]/functions/wizard/step1.svelte +++ b/src/routes/console/project-[project]/functions/wizard/step1.svelte @@ -20,7 +20,7 @@ - Configuration function + Configuration Create your new Appwrite Function. + disabled={message.status === 'processing'} /> {#each $columns as column (column.id)} {#if column.show} diff --git a/src/routes/console/project-[project]/messaging/create.svelte b/src/routes/console/project-[project]/messaging/create.svelte new file mode 100644 index 000000000..e1f5d15bf --- /dev/null +++ b/src/routes/console/project-[project]/messaging/create.svelte @@ -0,0 +1,151 @@ + + + diff --git a/src/routes/console/project-[project]/messaging/createMessageDropdown.svelte b/src/routes/console/project-[project]/messaging/createMessageDropdown.svelte index f35e08683..4e23952a0 100644 --- a/src/routes/console/project-[project]/messaging/createMessageDropdown.svelte +++ b/src/routes/console/project-[project]/messaging/createMessageDropdown.svelte @@ -3,8 +3,8 @@ import { Button } from '$lib/elements/forms'; import { wizard } from '$lib/stores/wizard'; import { providers } from './providers/store'; - import Wizard from './wizard.svelte'; - import { messageParams, operation, providerType, targetsById } from './wizard/store'; + import Create from './create.svelte'; + import { messageParams, providerType, targetsById } from './wizard/store'; import { topicsById } from './store'; import { MessagingProviderType } from '@appwrite.io/console'; @@ -30,7 +30,6 @@ ) return; $providerType = type; - $operation = 'create'; $topicsById = {}; $targetsById = {}; const common = { @@ -62,7 +61,7 @@ break; } showCreateDropdown = false; - wizard.start(Wizard); + wizard.start(Create); }}> {option.name} 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 8bcefdc55..878c47ffd 100644 --- a/src/routes/console/project-[project]/messaging/message-[message]/+page.svelte +++ b/src/routes/console/project-[project]/messaging/message-[message]/+page.svelte @@ -1,118 +1,40 @@ - + {#if $message.providerType === MessagingProviderType.Email} - + {:else if $message.providerType === MessagingProviderType.Sms} - + {:else if $message.providerType === MessagingProviderType.Push} - + {/if} - - - {#if $message.status !== MessageStatus.Processing} + + + {#if $message.status !== 'processing'} {/if} diff --git a/src/routes/console/project-[project]/messaging/message-[message]/cancelModal.svelte b/src/routes/console/project-[project]/messaging/message-[message]/cancelModal.svelte new file mode 100644 index 000000000..39802b18d --- /dev/null +++ b/src/routes/console/project-[project]/messaging/message-[message]/cancelModal.svelte @@ -0,0 +1,95 @@ + + + +
    +

    + Are you sure you want to cancel the scheduling of {message.data.title ?? + message.data.subject ?? + message.data.content ?? + 'Message'}? +

    +
    + + + +
    diff --git a/src/routes/console/project-[project]/messaging/message-[message]/emailMessage.svelte b/src/routes/console/project-[project]/messaging/message-[message]/emailMessage.svelte new file mode 100644 index 000000000..6fcaad6d4 --- /dev/null +++ b/src/routes/console/project-[project]/messaging/message-[message]/emailMessage.svelte @@ -0,0 +1,93 @@ + + +
    + +
    + Message +
    + + + + + + + Enable the HTML mode if your message contains HTML tags. + + + + + + + +
    +
    diff --git a/src/routes/console/project-[project]/messaging/message-[message]/emailPreview.svelte b/src/routes/console/project-[project]/messaging/message-[message]/emailPreview.svelte deleted file mode 100644 index c6d5e051d..000000000 --- a/src/routes/console/project-[project]/messaging/message-[message]/emailPreview.svelte +++ /dev/null @@ -1,33 +0,0 @@ - - - -
    - Preview -
    - - - - - - -
    - -
    -
    -
    -
    diff --git a/src/routes/console/project-[project]/messaging/message-[message]/overview.svelte b/src/routes/console/project-[project]/messaging/message-[message]/overview.svelte index b9c95e2d8..c9bbe244f 100644 --- a/src/routes/console/project-[project]/messaging/message-[message]/overview.svelte +++ b/src/routes/console/project-[project]/messaging/message-[message]/overview.svelte @@ -1,64 +1,77 @@ - +
    - - {providerType} + + + +
    -

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

    -

    Scheduled at: {toLocaleDateTime(scheduledAt)}

    +

    Created: {toLocaleDateTime(message.$createdAt)}

    + {#if message.scheduledAt} +

    Scheduled at: {toLocaleDateTime(message.scheduledAt)}

    + {/if} + {#if message.deliveredAt} +

    Sent at: {toLocaleDateTime(message.deliveredAt)}

    + {/if}
    - +
    - + {#if message.status === 'draft'} +
    + + +
    + {:else if message.status === 'scheduled'} +
    + + +
    + {:else if message.status === 'failed'} + + {/if}
    + + + + + + diff --git a/src/routes/console/project-[project]/messaging/message-[message]/pushMessage.svelte b/src/routes/console/project-[project]/messaging/message-[message]/pushMessage.svelte new file mode 100644 index 000000000..d35aa1131 --- /dev/null +++ b/src/routes/console/project-[project]/messaging/message-[message]/pushMessage.svelte @@ -0,0 +1,180 @@ + + +
    + +
    + Message +
    + +
    +
    + + + + + + + + +
    +
      + {#each customData || [] as _, rowIndex} + + + + + + + + + {/each} +
    + {#if dataError} + {dataError} + {/if} + +
    + +
    +
    + + + +
    + diff --git a/src/routes/console/project-[project]/messaging/message-[message]/pushPreview.svelte b/src/routes/console/project-[project]/messaging/message-[message]/pushPreview.svelte deleted file mode 100644 index eefb59c0a..000000000 --- a/src/routes/console/project-[project]/messaging/message-[message]/pushPreview.svelte +++ /dev/null @@ -1,33 +0,0 @@ - - - -
    - Preview -
    - -
    -
    - - - - - - -
    - -
    -
    -
    -
    diff --git a/src/routes/console/project-[project]/messaging/message-[message]/scheduleModal.svelte b/src/routes/console/project-[project]/messaging/message-[message]/scheduleModal.svelte new file mode 100644 index 000000000..a8d749d2c --- /dev/null +++ b/src/routes/console/project-[project]/messaging/message-[message]/scheduleModal.svelte @@ -0,0 +1,138 @@ + + + +
    + +
    + + +
    +
    + + {#if !dateTime || isNaN(dateTime.getTime())} + The message will be sent later + {:else} + The message will be sent at {dateTime.toLocaleString('en', formatOptions)} + {/if} + +
    + + + + +
    diff --git a/src/routes/console/project-[project]/messaging/message-[message]/sendModal.svelte b/src/routes/console/project-[project]/messaging/message-[message]/sendModal.svelte new file mode 100644 index 000000000..fdfaa1d5c --- /dev/null +++ b/src/routes/console/project-[project]/messaging/message-[message]/sendModal.svelte @@ -0,0 +1,100 @@ + + + +
    +

    + You are about to send a message to an estimated {totalTargets} targets. Would you like to proceed? +

    + +

    This action is irreversible.

    +
    + + + + +
    diff --git a/src/routes/console/project-[project]/messaging/message-[message]/smsMessage.svelte b/src/routes/console/project-[project]/messaging/message-[message]/smsMessage.svelte new file mode 100644 index 000000000..d71353c40 --- /dev/null +++ b/src/routes/console/project-[project]/messaging/message-[message]/smsMessage.svelte @@ -0,0 +1,68 @@ + + +
    + +
    + Message + +
    + + + + + + + + +
    +
    diff --git a/src/routes/console/project-[project]/messaging/message-[message]/smsPreview.svelte b/src/routes/console/project-[project]/messaging/message-[message]/smsPreview.svelte deleted file mode 100644 index 8e6e772bb..000000000 --- a/src/routes/console/project-[project]/messaging/message-[message]/smsPreview.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - -
    - Preview - -
    - - - - -
    - -
    -
    -
    -
    diff --git a/src/routes/console/project-[project]/messaging/message-[message]/targets.svelte b/src/routes/console/project-[project]/messaging/message-[message]/targets.svelte deleted file mode 100644 index ca3e6ae03..000000000 --- a/src/routes/console/project-[project]/messaging/message-[message]/targets.svelte +++ /dev/null @@ -1,62 +0,0 @@ - - - - Targets - - {@const sum = targets.length} - {#if sum} -
    - - - ID - Name - Identifier - - - {#each targets.slice(offset, offset + limit) as target (target.$id)} - - - {target.$id} - - - - {usersById[target.userId]?.name || 'Unknown'} - - - - {target.providerType === MessagingProviderType.Push - ? target.name - : target.identifier} - - - {/each} - -
    -
    -

    Total targets: {sum}

    - -
    -
    - {:else} - Edit the message to add a Target - {/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 deleted file mode 100644 index 1df5200aa..000000000 --- a/src/routes/console/project-[project]/messaging/message-[message]/topics.svelte +++ /dev/null @@ -1,59 +0,0 @@ - - - - Topics - - {@const sum = topics.length} - {#if sum} -
    - - - ID - Name - Subscribers - - - {#each topics.slice(offset, offset + limit) as topic (topic.$id)} - - - {topic.$id} - - - - {topic.name} - - - - {topic.smsTotal + topic.emailTotal + topic.pushTotal} - - - {/each} - -
    -
    -

    Total topics: {sum}

    - -
    -
    - {:else} - Edit the message to add a Topic - {/if} -
    -
    diff --git a/src/routes/console/project-[project]/messaging/message-[message]/updateTargets.svelte b/src/routes/console/project-[project]/messaging/message-[message]/updateTargets.svelte new file mode 100644 index 000000000..8c112fba9 --- /dev/null +++ b/src/routes/console/project-[project]/messaging/message-[message]/updateTargets.svelte @@ -0,0 +1,208 @@ + + +
    + + Targets + + {@const sum = targetIds.length} + {#if sum} +
    +
    + Target +
    + {#if message.status == 'draft'} + + {/if} +
    +
    + + + + + + + + {#each targets.slice(offset, offset + limit) as target (target.$id)} + + +
    + + + + {#if target.providerType === MessagingProviderType.Push} + {target.name} + {:else} + {target.identifier} + {/if} + + +
    +
    + + {#if message.status === 'draft'} +
    + +
    + {/if} +
    +
    + {/each} +
    +
    +
    +

    Total targets: {sum}

    + +
    +
    + {:else if message.status == 'draft'} + (showTargets = true)}>Add a target + {:else} + +
    + No targets have been selected. +

    + Need a hand? Check out our . +

    +
    +
    + {/if} +
    + + + +
    +
    + + { + showTargets = false; + targetsById = e.detail; + }}> + Select existing targets to which you want to send this message. + diff --git a/src/routes/console/project-[project]/messaging/message-[message]/updateTopics.svelte b/src/routes/console/project-[project]/messaging/message-[message]/updateTopics.svelte new file mode 100644 index 000000000..be240b2d1 --- /dev/null +++ b/src/routes/console/project-[project]/messaging/message-[message]/updateTopics.svelte @@ -0,0 +1,189 @@ + + +
    + + Topics + + {@const sum = topicIds.length} + {#if sum} +
    +
    + Topic +
    + {#if message.status == 'draft'} + + {/if} +
    +
    + + + + + + + {#each topics.slice(offset, offset + limit) as topic (topic.$id)} + + +
    + + + + {topic.name} + + + ({getTotal(topic)} targets) + + + +
    +
    + + {#if message.status === 'draft'} +
    + +
    + {/if} +
    +
    + {/each} +
    +
    +
    +

    Total topics: {sum}

    + +
    +
    + {:else if message.status == 'draft'} + (showTopics = true)}>Add a topic + {:else} + +
    + No topics have been selected. +

    + Need a hand? Check out our . +

    +
    +
    + {/if} +
    + + + +
    +
    + + { + showTopics = false; + topicsById = e.detail; + }} /> diff --git a/src/routes/console/project-[project]/messaging/providers/create.svelte b/src/routes/console/project-[project]/messaging/providers/create.svelte index 53cdf91a4..60da9ed89 100644 --- a/src/routes/console/project-[project]/messaging/providers/create.svelte +++ b/src/routes/console/project-[project]/messaging/providers/create.svelte @@ -44,8 +44,8 @@ providerId, $providerParams[$provider].name, $providerParams[$provider].from, - $providerParams[$provider].username, - $providerParams[$provider].password, + $providerParams[$provider].customerId, + $providerParams[$provider].apiKey, $providerParams[$provider].enabled ); break; @@ -156,7 +156,7 @@ const stepsComponents: WizardStepsType = new Map(); stepsComponents.set(1, { - label: 'Proivder', + label: 'Provider', component: Provider }); stepsComponents.set(2, { diff --git a/src/routes/console/project-[project]/messaging/providers/provider-[provider]/+page.svelte b/src/routes/console/project-[project]/messaging/providers/provider-[provider]/+page.svelte index 139723fc4..d206197e9 100644 --- a/src/routes/console/project-[project]/messaging/providers/provider-[provider]/+page.svelte +++ b/src/routes/console/project-[project]/messaging/providers/provider-[provider]/+page.svelte @@ -48,8 +48,8 @@ providerId: $providerData.$id, name: $providerData.name, enabled: $providerData.enabled, - username: $providerData.credentials['username'], - password: $providerData.credentials['password'], + customerId: $providerData.credentials['customerId'], + apiKey: $providerData.credentials['apiKey'], from: $providerData.options['from'] }; break; 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 fb806d134..c4c5a912f 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 @@ -91,8 +91,8 @@ providerId, undefined, undefined, - formValues['username'], - formValues['password'], + formValues['customerId'], + formValues['apiKey'], formValues['from'] ); break; diff --git a/src/routes/console/project-[project]/messaging/providers/settingsFormList.svelte b/src/routes/console/project-[project]/messaging/providers/settingsFormList.svelte index 582ce00c0..609b55790 100644 --- a/src/routes/console/project-[project]/messaging/providers/settingsFormList.svelte +++ b/src/routes/console/project-[project]/messaging/providers/settingsFormList.svelte @@ -120,7 +120,7 @@ {:else if input.type === 'switch'} - {input.description} +

    {@html input.description}

    {:else if input.type === 'checkbox'} diff --git a/src/routes/console/project-[project]/messaging/providers/store.ts b/src/routes/console/project-[project]/messaging/providers/store.ts index aff9dbc5a..37bcd459c 100644 --- a/src/routes/console/project-[project]/messaging/providers/store.ts +++ b/src/routes/console/project-[project]/messaging/providers/store.ts @@ -167,7 +167,8 @@ export const providers: ProvidersMap = { label: 'Sandbox', name: 'sandbox', type: 'switch', - description: 'Use the development APNS server.' + description: + 'Enable sandbox mode for testing on apps signed with development provisioning profiles.
    Learn more.' } ] } @@ -469,16 +470,21 @@ export const providers: ProvidersMap = { description: '', configure: [ { - label: 'Username', - name: 'username', + label: 'Customer ID', + name: 'customerId', type: 'text', - placeholder: 'Enter username' + placeholder: 'Enter customer ID' }, { - label: 'Password', - name: 'password', + label: 'API Key', + name: 'apiKey', type: 'password', - placeholder: 'Enter password' + placeholder: 'Enter API key', + popover: [ + 'How to get the API key?', + 'Create an account in Telesign.', + 'Head to Telesign portal -> Profile -> API Keys.' + ] }, { label: 'Sender number', @@ -579,8 +585,8 @@ export type Msg91ProviderParams = ProviderParams & { export type TelesignProviderParams = ProviderParams & { from: string; - username: string; - password: string; + customerId: string; + apiKey: string; }; export type TextmagicProviderParams = ProviderParams & { diff --git a/src/routes/console/project-[project]/messaging/providers/wizard/provider.svelte b/src/routes/console/project-[project]/messaging/providers/wizard/provider.svelte index ec43fac46..cda98136b 100644 --- a/src/routes/console/project-[project]/messaging/providers/wizard/provider.svelte +++ b/src/routes/console/project-[project]/messaging/providers/wizard/provider.svelte @@ -39,8 +39,8 @@ providerId: id, name: name, enabled: true, - username: '', - password: '', + customerId: '', + apiKey: '', from: '' }; break; diff --git a/src/routes/console/project-[project]/messaging/providers/wizard/settings.svelte b/src/routes/console/project-[project]/messaging/providers/wizard/settings.svelte index 57908ad4b..46dc634e5 100644 --- a/src/routes/console/project-[project]/messaging/providers/wizard/settings.svelte +++ b/src/routes/console/project-[project]/messaging/providers/wizard/settings.svelte @@ -97,7 +97,7 @@
    @@ -135,7 +135,7 @@ diff --git a/src/routes/console/project-[project]/messaging/wizard.svelte b/src/routes/console/project-[project]/messaging/wizard.svelte deleted file mode 100644 index 4fbc93c55..000000000 --- a/src/routes/console/project-[project]/messaging/wizard.svelte +++ /dev/null @@ -1,263 +0,0 @@ - - - diff --git a/src/routes/console/project-[project]/messaging/wizard/emailFormList.svelte b/src/routes/console/project-[project]/messaging/wizard/emailFormList.svelte index bcc6be1d6..ca25f281c 100644 --- a/src/routes/console/project-[project]/messaging/wizard/emailFormList.svelte +++ b/src/routes/console/project-[project]/messaging/wizard/emailFormList.svelte @@ -1,5 +1,5 @@ - + Schedule Schedule the time you want to deliver this message. Learn more in our