mirror of
https://github.com/appwrite/console.git
synced 2026-06-06 19:27:48 +00:00
Replace client.call() with the respective SDK methods
This commit is contained in:
@@ -1,9 +1,7 @@
|
||||
<script lang="ts">
|
||||
import { page } from '$app/stores';
|
||||
import { Button } from '$lib/elements/forms';
|
||||
import {
|
||||
Empty,
|
||||
EmptySearch,
|
||||
PaginationWithLimit,
|
||||
Heading,
|
||||
ViewSelector,
|
||||
@@ -93,7 +91,7 @@
|
||||
total={data.targets.total} />
|
||||
{:else if $hasPageQueries}
|
||||
<EmptyFilter resource="targets" />
|
||||
{:else if data.search}
|
||||
<!-- {:else if data.search}
|
||||
<EmptySearch>
|
||||
<div class="u-text-center">
|
||||
<b>Sorry, we couldn't find '{data.search}'</b>
|
||||
@@ -104,7 +102,7 @@
|
||||
href={`/console/project-${$page.params.project}/auth/user-${$page.params.user}/targets`}>
|
||||
Clear Search
|
||||
</Button>
|
||||
</EmptySearch>
|
||||
</EmptySearch> -->
|
||||
{:else}
|
||||
<!-- TODO: update docs link -->
|
||||
<Empty
|
||||
|
||||
@@ -1,60 +1,33 @@
|
||||
import { queries, queryParamToMap } from '$lib/components/filters';
|
||||
import { Dependencies, PAGE_LIMIT } from '$lib/constants';
|
||||
import { getLimit, getPage, getQuery, getSearch, pageToOffset } from '$lib/helpers/load';
|
||||
import { getLimit, getPage, getQuery, pageToOffset } from '$lib/helpers/load';
|
||||
import { sdk } from '$lib/stores/sdk';
|
||||
import { Query, type Models } from '@appwrite.io/console';
|
||||
import type { PageLoad } from './$types';
|
||||
|
||||
export const load: PageLoad = async ({ params, url, route, depends }) => {
|
||||
depends(Dependencies.USER_TARGETS);
|
||||
|
||||
const page = getPage(url);
|
||||
const limit = getLimit(url, route, PAGE_LIMIT);
|
||||
const offset = pageToOffset(page, limit);
|
||||
const search = getSearch(url);
|
||||
const query = getQuery(url);
|
||||
|
||||
const parsedQueries = queryParamToMap(query || '[]');
|
||||
queries.set(parsedQueries);
|
||||
|
||||
const payload = {
|
||||
queries: [
|
||||
Query.limit(limit),
|
||||
Query.offset(offset),
|
||||
Query.orderDesc(''),
|
||||
...parsedQueries.values()
|
||||
]
|
||||
};
|
||||
|
||||
if (search) {
|
||||
payload['search'] = search;
|
||||
}
|
||||
|
||||
// TODO: remove when the API is ready with data
|
||||
// This allows us to mock w/ data and when search returns 0 results
|
||||
const targets: { targets: Models.Target[]; total: number } = await sdk.forProject.client.call(
|
||||
'GET',
|
||||
new URL(`${sdk.forProject.client.config.endpoint}/users/${params.user}/targets`),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
payload
|
||||
);
|
||||
const targets = await sdk.forProject.users.listTargets(params.user, [
|
||||
Query.limit(limit),
|
||||
Query.offset(offset),
|
||||
Query.orderDesc(''),
|
||||
...parsedQueries.values()
|
||||
]);
|
||||
|
||||
const promisesById: Record<string, Promise<Models.Provider>> = {};
|
||||
targets.targets.forEach((target) => {
|
||||
if (target.providerId && !promisesById[target.providerId]) {
|
||||
promisesById[target.providerId] = sdk.forProject.client.call(
|
||||
'GET',
|
||||
new URL(
|
||||
`${sdk.forProject.client.config.endpoint}/messaging/providers/${target.providerId}`
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
}
|
||||
promisesById[target.providerId] = sdk.forProject.messaging.getProvider(
|
||||
target.providerId
|
||||
);
|
||||
}
|
||||
});
|
||||
@@ -71,7 +44,6 @@ export const load: PageLoad = async ({ params, url, route, depends }) => {
|
||||
return {
|
||||
offset,
|
||||
limit,
|
||||
search,
|
||||
query,
|
||||
targets,
|
||||
providersById
|
||||
|
||||
@@ -28,31 +28,13 @@
|
||||
|
||||
const create = async () => {
|
||||
try {
|
||||
const payload = {
|
||||
targetId: id ? id : ID.unique(),
|
||||
await sdk.forProject.users.createTarget(
|
||||
$page.params.user,
|
||||
id ? id : ID.unique(),
|
||||
providerType,
|
||||
identifier
|
||||
};
|
||||
|
||||
if (providerId) {
|
||||
payload['providerId'] = providerId;
|
||||
}
|
||||
|
||||
if (name) {
|
||||
payload['name'] = name;
|
||||
}
|
||||
|
||||
await sdk.forProject.client.call(
|
||||
'POST',
|
||||
new URL(
|
||||
`${sdk.forProject.client.config.endpoint}/users/${$page.params.user}/targets`
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
payload
|
||||
identifier,
|
||||
providerId ?? undefined,
|
||||
name ?? undefined
|
||||
);
|
||||
show = false;
|
||||
addNotification({
|
||||
|
||||
@@ -34,21 +34,9 @@
|
||||
async function handleDelete() {
|
||||
showDelete = false;
|
||||
|
||||
async function deleteTarget(id: string) {
|
||||
await sdk.forProject.client.call(
|
||||
'DELETE',
|
||||
new URL(
|
||||
`${sdk.forProject.client.config.endpoint}/users/${$page.params.user}/targets/${id}`
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
const promises = selectedIds.map((id) => deleteTarget(id));
|
||||
const promises = selectedIds.map((id) =>
|
||||
sdk.forProject.users.deleteTarget($page.params.user, id)
|
||||
);
|
||||
|
||||
try {
|
||||
await Promise.all(promises);
|
||||
|
||||
@@ -17,25 +17,12 @@
|
||||
let error = '';
|
||||
|
||||
onMount(async () => {
|
||||
// TODO: Remove type cast when console SDK is updated
|
||||
labels = [...($user as unknown as { labels: string[] }).labels];
|
||||
labels = [...$user.labels];
|
||||
});
|
||||
|
||||
async function updateLabels() {
|
||||
try {
|
||||
// TODO: Use SDK method when console SDK is updated
|
||||
// await sdk.forProject.users.updateLabels($user.$id, labels);
|
||||
const path = `/users/${$user.$id}/labels`;
|
||||
await sdk.forProject.client.call(
|
||||
'PUT',
|
||||
new URL(sdk.forConsole.client.config.endpoint + path),
|
||||
{
|
||||
'content-type': 'application/json'
|
||||
},
|
||||
{
|
||||
labels: labels
|
||||
}
|
||||
);
|
||||
await sdk.forProject.users.updateLabels($user.$id, labels);
|
||||
await invalidate(Dependencies.USER);
|
||||
isDisabled = true;
|
||||
|
||||
|
||||
+1
-4
@@ -9,10 +9,7 @@ export const load: PageLoad = async ({ params }) => {
|
||||
const period = isValueOfStringEnum(FunctionUsageRange, params.period)
|
||||
? params.period
|
||||
: FunctionUsageRange.ThirtyDays;
|
||||
return sdk.forProject.functions.getFunctionUsage(
|
||||
params.function,
|
||||
period
|
||||
);
|
||||
return sdk.forProject.functions.getFunctionUsage(params.function, period);
|
||||
} catch (e) {
|
||||
throw error(e.code, e.message);
|
||||
}
|
||||
|
||||
@@ -24,38 +24,6 @@ export const load: PageLoad = async ({ url, route }) => {
|
||||
const parsedQueries = queryParamToMap(query || '[]');
|
||||
queries.set(parsedQueries);
|
||||
|
||||
// TODO: remove when the API is ready with data
|
||||
// This allows us to mock w/ data and when search returns 0 results
|
||||
let messages: {
|
||||
messages: ({ data: Record<string, string> } & Models.Message)[];
|
||||
total: number;
|
||||
} = { messages: [], total: 0 };
|
||||
const params = {
|
||||
queries: [
|
||||
Query.limit(limit),
|
||||
Query.offset(offset),
|
||||
Query.orderDesc(''),
|
||||
...parsedQueries.values()
|
||||
]
|
||||
};
|
||||
|
||||
if (search) {
|
||||
params['search'] = search;
|
||||
}
|
||||
|
||||
const response = await sdk.forProject.client.call(
|
||||
'GET',
|
||||
new URL(sdk.forProject.client.config.endpoint + '/messaging/messages'),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
params
|
||||
);
|
||||
|
||||
messages = response;
|
||||
|
||||
return {
|
||||
offset,
|
||||
limit,
|
||||
@@ -63,6 +31,17 @@ export const load: PageLoad = async ({ url, route }) => {
|
||||
query,
|
||||
page,
|
||||
view,
|
||||
messages
|
||||
messages: sdk.forProject.messaging.listMessages(
|
||||
[
|
||||
Query.limit(limit),
|
||||
Query.offset(offset),
|
||||
Query.orderDesc(''),
|
||||
...parsedQueries.values()
|
||||
],
|
||||
search || undefined
|
||||
) as Promise<{
|
||||
total: number;
|
||||
messages: (Models.Message & { data: Record<string, string> })[]; // Add typing for message.data
|
||||
}>
|
||||
};
|
||||
};
|
||||
|
||||
@@ -4,37 +4,16 @@ import Header from './header.svelte';
|
||||
import { sdk } from '$lib/stores/sdk';
|
||||
import { Dependencies } from '$lib/constants';
|
||||
import { error } from '@sveltejs/kit';
|
||||
import type { Models } from '@appwrite.io/console';
|
||||
|
||||
export const load: LayoutLoad = async ({ params, depends }) => {
|
||||
depends(Dependencies.MESSAGING_MESSAGE);
|
||||
|
||||
try {
|
||||
const response: Models.Message = await sdk.forProject.client.call(
|
||||
'GET',
|
||||
new URL(
|
||||
`${sdk.forProject.client.config.endpoint}/messaging/messages/${params.message}`
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
}
|
||||
);
|
||||
const message = await sdk.forProject.messaging.getMessage(params.message);
|
||||
|
||||
const topicsById = {};
|
||||
const topicsPromise = Promise.allSettled(
|
||||
response.topics.map((topicId) => {
|
||||
return sdk.forProject.client.call(
|
||||
'GET',
|
||||
new URL(`${sdk.forProject.client.config.endpoint}/messaging/topics/${topicId}`),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
}
|
||||
);
|
||||
})
|
||||
message.topics.map((topicId) => sdk.forProject.messaging.getTopic(topicId))
|
||||
).then((results) => {
|
||||
results.forEach((result) => {
|
||||
if (result.status === 'fulfilled') {
|
||||
@@ -44,18 +23,8 @@ export const load: LayoutLoad = async ({ params, depends }) => {
|
||||
});
|
||||
|
||||
const targetsById = {};
|
||||
const targetsPromise = sdk.forProject.client
|
||||
.call(
|
||||
'GET',
|
||||
new URL(
|
||||
`${sdk.forProject.client.config.endpoint}/messaging/messages/${params.message}/targets`
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
}
|
||||
)
|
||||
const targetsPromise = sdk.forProject.messaging
|
||||
.listTargets(params.message)
|
||||
.then((response) => {
|
||||
response.targets.forEach((target) => {
|
||||
targetsById[target.$id] = target;
|
||||
@@ -65,11 +34,11 @@ export const load: LayoutLoad = async ({ params, depends }) => {
|
||||
await Promise.allSettled([topicsPromise, targetsPromise]);
|
||||
|
||||
return {
|
||||
message,
|
||||
topicsById,
|
||||
targetsById,
|
||||
header: Header,
|
||||
breadcrumbs: Breadcrumbs,
|
||||
message: response
|
||||
breadcrumbs: Breadcrumbs
|
||||
};
|
||||
} catch (e) {
|
||||
throw error(e.code, e.message);
|
||||
|
||||
@@ -6,12 +6,7 @@
|
||||
import { message } from './store';
|
||||
import SMSPreview from './smsPreview.svelte';
|
||||
import PushPreview from './pushPreview.svelte';
|
||||
import {
|
||||
messageParams,
|
||||
operation,
|
||||
providerType,
|
||||
targetsById
|
||||
} from '../wizard/store';
|
||||
import { messageParams, operation, providerType, targetsById } from '../wizard/store';
|
||||
import { topicsById } from '../store';
|
||||
import { wizard } from '$lib/stores/wizard';
|
||||
import Wizard from '../wizard.svelte';
|
||||
|
||||
+1
-11
@@ -13,17 +13,7 @@
|
||||
|
||||
const deleteMessage = async () => {
|
||||
try {
|
||||
await sdk.forProject.client.call(
|
||||
'DELETE',
|
||||
new URL(
|
||||
`${sdk.forProject.client.config.endpoint}/messaging/messages/${$message.$id}`
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
}
|
||||
);
|
||||
await sdk.forProject.messaging.delete($message.$id);
|
||||
show = false;
|
||||
addNotification({
|
||||
type: 'success',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Query, type Models } from '@appwrite.io/console';
|
||||
import { Query } from '@appwrite.io/console';
|
||||
import { sdk } from '$lib/stores/sdk';
|
||||
import {
|
||||
View,
|
||||
@@ -25,34 +25,6 @@ export const load = async ({ depends, url, route }) => {
|
||||
const parsedQueries = queryParamToMap(query || '[]');
|
||||
queries.set(parsedQueries);
|
||||
|
||||
// TODO: get rid of demo data
|
||||
let providers: { providers: Models.Provider[]; total: number } = { providers: [], total: 0 };
|
||||
const params = {
|
||||
queries: [
|
||||
Query.limit(limit),
|
||||
Query.offset(offset),
|
||||
Query.orderDesc(''),
|
||||
...parsedQueries.values()
|
||||
]
|
||||
};
|
||||
|
||||
if (search) {
|
||||
params['search'] = search;
|
||||
}
|
||||
|
||||
const response = await sdk.forProject.client.call(
|
||||
'GET',
|
||||
new URL(sdk.forProject.client.config.endpoint + '/messaging/providers'),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
params
|
||||
);
|
||||
|
||||
providers = response;
|
||||
|
||||
return {
|
||||
offset,
|
||||
limit,
|
||||
@@ -60,6 +32,14 @@ export const load = async ({ depends, url, route }) => {
|
||||
query,
|
||||
page,
|
||||
view,
|
||||
providers
|
||||
providers: sdk.forProject.messaging.listProviders(
|
||||
[
|
||||
Query.limit(limit),
|
||||
Query.offset(offset),
|
||||
Query.orderDesc(''),
|
||||
...parsedQueries.values()
|
||||
],
|
||||
search || undefined
|
||||
)
|
||||
};
|
||||
};
|
||||
|
||||
@@ -12,204 +12,107 @@
|
||||
import { project } from '../../store';
|
||||
import { wizard } from '$lib/stores/wizard';
|
||||
import { provider, providerParams } from './wizard/store';
|
||||
import { ID } from '@appwrite.io/console';
|
||||
import { ID, type Models } from '@appwrite.io/console';
|
||||
import { Providers } from '../provider.svelte';
|
||||
|
||||
async function create() {
|
||||
try {
|
||||
let response = { $id: '', name: '' };
|
||||
let response: Models.Provider;
|
||||
const providerId = $providerParams[$provider].providerId || ID.unique();
|
||||
switch ($provider) {
|
||||
case Providers.Twilio:
|
||||
response = await sdk.forProject.client.call(
|
||||
'POST',
|
||||
new URL(
|
||||
sdk.forProject.client.config.endpoint + '/messaging/providers/twilio'
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
providerId: providerId,
|
||||
name: $providerParams[$provider].name,
|
||||
enabled: $providerParams[$provider].enabled,
|
||||
accountSid: $providerParams[$provider].accountSid,
|
||||
authToken: $providerParams[$provider].authToken,
|
||||
from: $providerParams[$provider].from
|
||||
}
|
||||
response = await sdk.forProject.messaging.createTwilioProvider(
|
||||
providerId,
|
||||
$providerParams[$provider].name,
|
||||
$providerParams[$provider].from,
|
||||
$providerParams[$provider].accountSid,
|
||||
$providerParams[$provider].authToken,
|
||||
$providerParams[$provider].enabled
|
||||
);
|
||||
break;
|
||||
case Providers.Msg91:
|
||||
response = await sdk.forProject.client.call(
|
||||
'POST',
|
||||
new URL(
|
||||
sdk.forProject.client.config.endpoint + '/messaging/providers/msg91'
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
providerId: providerId,
|
||||
name: $providerParams[$provider].name,
|
||||
enabled: $providerParams[$provider].enabled,
|
||||
from: $providerParams[$provider].from,
|
||||
senderId: $providerParams[$provider].senderId,
|
||||
authKey: $providerParams[$provider].authKey
|
||||
}
|
||||
response = await sdk.forProject.messaging.createMsg91Provider(
|
||||
providerId,
|
||||
$providerParams[$provider].name,
|
||||
$providerParams[$provider].from,
|
||||
$providerParams[$provider].senderId,
|
||||
$providerParams[$provider].authKey,
|
||||
$providerParams[$provider].enabled
|
||||
);
|
||||
break;
|
||||
case Providers.Telesign:
|
||||
response = await sdk.forProject.client.call(
|
||||
'POST',
|
||||
new URL(
|
||||
sdk.forProject.client.config.endpoint + '/messaging/providers/telesign'
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
providerId: providerId,
|
||||
name: $providerParams[$provider].name,
|
||||
enabled: $providerParams[$provider].enabled,
|
||||
from: $providerParams[$provider].from,
|
||||
username: $providerParams[$provider].username,
|
||||
password: $providerParams[$provider].password
|
||||
}
|
||||
response = await sdk.forProject.messaging.createTelesignProvider(
|
||||
providerId,
|
||||
$providerParams[$provider].name,
|
||||
$providerParams[$provider].from,
|
||||
$providerParams[$provider].username,
|
||||
$providerParams[$provider].password,
|
||||
$providerParams[$provider].enabled
|
||||
);
|
||||
break;
|
||||
case Providers.Textmagic:
|
||||
response = await sdk.forProject.client.call(
|
||||
'POST',
|
||||
new URL(
|
||||
sdk.forProject.client.config.endpoint + '/messaging/providers/textmagic'
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
providerId: providerId,
|
||||
name: $providerParams[$provider].name,
|
||||
enabled: $providerParams[$provider].enabled,
|
||||
from: $providerParams[$provider].from,
|
||||
username: $providerParams[$provider].username,
|
||||
apiKey: $providerParams[$provider].apiKey
|
||||
}
|
||||
response = await sdk.forProject.messaging.createTextmagicProvider(
|
||||
providerId,
|
||||
$providerParams[$provider].name,
|
||||
$providerParams[$provider].from,
|
||||
$providerParams[$provider].username,
|
||||
$providerParams[$provider].apiKey,
|
||||
$providerParams[$provider].enabled
|
||||
);
|
||||
break;
|
||||
case Providers.Vonage:
|
||||
response = await sdk.forProject.client.call(
|
||||
'POST',
|
||||
new URL(
|
||||
sdk.forProject.client.config.endpoint + '/messaging/providers/vonage'
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
providerId: providerId,
|
||||
name: $providerParams[$provider].name,
|
||||
enabled: $providerParams[$provider].enabled,
|
||||
from: $providerParams[$provider].from,
|
||||
apiKey: $providerParams[$provider].apiKey,
|
||||
apiSecret: $providerParams[$provider].apiSecret
|
||||
}
|
||||
response = await sdk.forProject.messaging.createVonageProvider(
|
||||
providerId,
|
||||
$providerParams[$provider].name,
|
||||
$providerParams[$provider].from,
|
||||
$providerParams[$provider].apiKey,
|
||||
$providerParams[$provider].apiSecret,
|
||||
$providerParams[$provider].enabled
|
||||
);
|
||||
break;
|
||||
case Providers.Mailgun:
|
||||
response = await sdk.forProject.client.call(
|
||||
'POST',
|
||||
new URL(
|
||||
sdk.forProject.client.config.endpoint + '/messaging/providers/mailgun'
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
providerId: providerId,
|
||||
name: $providerParams[$provider].name,
|
||||
enabled: $providerParams[$provider].enabled,
|
||||
isEuRegion: $providerParams[$provider].isEuRegion,
|
||||
fromEmail: $providerParams[$provider].fromEmail,
|
||||
fromName: $providerParams[$provider].fromName,
|
||||
replyToEmail: $providerParams[$provider].replyToEmail,
|
||||
replyToName: $providerParams[$provider].replyToName,
|
||||
apiKey: $providerParams[$provider].apiKey,
|
||||
domain: $providerParams[$provider].domain
|
||||
}
|
||||
response = await sdk.forProject.messaging.createMailgunProvider(
|
||||
providerId,
|
||||
$providerParams[$provider].name,
|
||||
$providerParams[$provider].apiKey,
|
||||
$providerParams[$provider].domain,
|
||||
$providerParams[$provider].isEuRegion,
|
||||
$providerParams[$provider].fromName,
|
||||
$providerParams[$provider].fromEmail,
|
||||
$providerParams[$provider].replyToName,
|
||||
$providerParams[$provider].replyToEmail,
|
||||
$providerParams[$provider].enabled
|
||||
);
|
||||
break;
|
||||
case Providers.Sendgrid:
|
||||
response = await sdk.forProject.client.call(
|
||||
'POST',
|
||||
new URL(
|
||||
sdk.forProject.client.config.endpoint + '/messaging/providers/sendgrid'
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
providerId: providerId,
|
||||
name: $providerParams[$provider].name,
|
||||
enabled: $providerParams[$provider].enabled,
|
||||
fromEmail: $providerParams[$provider].fromEmail,
|
||||
fromName: $providerParams[$provider].fromName,
|
||||
replyToEmail: $providerParams[$provider].replyToEmail,
|
||||
replyToName: $providerParams[$provider].replyToName,
|
||||
apiKey: $providerParams[$provider].apiKey
|
||||
}
|
||||
response = await sdk.forProject.messaging.createSendgridProvider(
|
||||
providerId,
|
||||
$providerParams[$provider].name,
|
||||
$providerParams[$provider].apiKey,
|
||||
$providerParams[$provider].fromName,
|
||||
$providerParams[$provider].fromEmail,
|
||||
$providerParams[$provider].replyToName,
|
||||
$providerParams[$provider].replyToEmail,
|
||||
$providerParams[$provider].enabled
|
||||
);
|
||||
break;
|
||||
case Providers.FCM:
|
||||
response = await sdk.forProject.client.call(
|
||||
'POST',
|
||||
new URL(sdk.forProject.client.config.endpoint + '/messaging/providers/fcm'),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
providerId: providerId,
|
||||
name: $providerParams[$provider].name,
|
||||
enabled: $providerParams[$provider].enabled,
|
||||
serviceAccountJSON: $providerParams[$provider].serviceAccountJSON
|
||||
}
|
||||
response = await sdk.forProject.messaging.createFCMProvider(
|
||||
providerId,
|
||||
$providerParams[$provider].name,
|
||||
JSON.parse($providerParams[$provider].serviceAccountJSON),
|
||||
$providerParams[$provider].enabled
|
||||
);
|
||||
break;
|
||||
case Providers.APNS:
|
||||
response = await sdk.forProject.client.call(
|
||||
'POST',
|
||||
new URL(
|
||||
sdk.forProject.client.config.endpoint + '/messaging/providers/apns'
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
providerId: providerId,
|
||||
name: $providerParams[$provider].name,
|
||||
enabled: $providerParams[$provider].enabled,
|
||||
authKey: $providerParams[$provider].authKey,
|
||||
authKeyId: $providerParams[$provider].authKeyId,
|
||||
teamId: $providerParams[$provider].teamId,
|
||||
bundleId: $providerParams[$provider].bundleId
|
||||
}
|
||||
response = await sdk.forProject.messaging.createAPNSProvider(
|
||||
providerId,
|
||||
$providerParams[$provider].name,
|
||||
$providerParams[$provider].authKey,
|
||||
$providerParams[$provider].authKeyId,
|
||||
$providerParams[$provider].teamId,
|
||||
$providerParams[$provider].bundleId,
|
||||
$providerParams[$provider].enabled
|
||||
);
|
||||
break;
|
||||
}
|
||||
|
||||
+5
-20
@@ -3,28 +3,13 @@ import Breadcrumbs from './breadcrumbs.svelte';
|
||||
import Header from './header.svelte';
|
||||
import { sdk } from '$lib/stores/sdk';
|
||||
import { Dependencies } from '$lib/constants';
|
||||
import { error } from '@sveltejs/kit';
|
||||
|
||||
export const load: LayoutLoad = async ({ params, depends }) => {
|
||||
depends(Dependencies.MESSAGING_PROVIDER);
|
||||
|
||||
const response = await sdk.forProject.client.call(
|
||||
'GET',
|
||||
new URL(sdk.forProject.client.config.endpoint + '/messaging/providers/' + params.provider),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
}
|
||||
);
|
||||
|
||||
try {
|
||||
return {
|
||||
header: Header,
|
||||
breadcrumbs: Breadcrumbs,
|
||||
provider: response
|
||||
};
|
||||
} catch (e) {
|
||||
throw error(e.code, e.message);
|
||||
}
|
||||
return {
|
||||
header: Header,
|
||||
breadcrumbs: Breadcrumbs,
|
||||
provider: sdk.forProject.messaging.getProvider(params.provider)
|
||||
};
|
||||
};
|
||||
|
||||
+1
-11
@@ -14,17 +14,7 @@
|
||||
|
||||
const deleteProvider = async () => {
|
||||
try {
|
||||
await sdk.forProject.client.call(
|
||||
'DELETE',
|
||||
new URL(
|
||||
sdk.forProject.client.config.endpoint + '/messaging/providers/' + $provider.$id
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
}
|
||||
);
|
||||
await sdk.forProject.messaging.deleteProvider($provider.$id);
|
||||
showDelete = false;
|
||||
addNotification({
|
||||
type: 'success',
|
||||
|
||||
+39
-135
@@ -135,165 +135,69 @@
|
||||
const providerId = $provider.$id;
|
||||
switch ($provider.provider) {
|
||||
case Providers.Twilio:
|
||||
response = await sdk.forProject.client.call(
|
||||
'PATCH',
|
||||
new URL(
|
||||
sdk.forProject.client.config.endpoint +
|
||||
'/messaging/providers/twilio/' +
|
||||
providerId
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
enabled: enabled
|
||||
}
|
||||
response = await sdk.forProject.messaging.updateTwilioProvider(
|
||||
providerId,
|
||||
undefined,
|
||||
enabled
|
||||
);
|
||||
break;
|
||||
case Providers.Msg91:
|
||||
response = await sdk.forProject.client.call(
|
||||
'PATCH',
|
||||
new URL(
|
||||
sdk.forProject.client.config.endpoint +
|
||||
'/messaging/providers/msg91/' +
|
||||
providerId
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
enabled: enabled
|
||||
}
|
||||
response = await sdk.forProject.messaging.updateMsg91Provider(
|
||||
providerId,
|
||||
undefined,
|
||||
enabled
|
||||
);
|
||||
break;
|
||||
case Providers.Telesign:
|
||||
response = await sdk.forProject.client.call(
|
||||
'PATCH',
|
||||
new URL(
|
||||
sdk.forProject.client.config.endpoint +
|
||||
'/messaging/providers/telesign/' +
|
||||
providerId
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
enabled: enabled
|
||||
}
|
||||
response = await sdk.forProject.messaging.updateTelesignProvider(
|
||||
providerId,
|
||||
undefined,
|
||||
enabled
|
||||
);
|
||||
break;
|
||||
case Providers.Textmagic:
|
||||
response = await sdk.forProject.client.call(
|
||||
'PATCH',
|
||||
new URL(
|
||||
sdk.forProject.client.config.endpoint +
|
||||
'/messaging/providers/textmagic/' +
|
||||
providerId
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
enabled: enabled
|
||||
}
|
||||
response = await sdk.forProject.messaging.updateTextmagicProvider(
|
||||
providerId,
|
||||
undefined,
|
||||
enabled
|
||||
);
|
||||
break;
|
||||
case Providers.Vonage:
|
||||
response = await sdk.forProject.client.call(
|
||||
'PATCH',
|
||||
new URL(
|
||||
sdk.forProject.client.config.endpoint +
|
||||
'/messaging/providers/vonage/' +
|
||||
providerId
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
enabled: enabled
|
||||
}
|
||||
response = await sdk.forProject.messaging.updateVonageProvider(
|
||||
providerId,
|
||||
undefined,
|
||||
enabled
|
||||
);
|
||||
break;
|
||||
case Providers.Mailgun:
|
||||
response = await sdk.forProject.client.call(
|
||||
'PATCH',
|
||||
new URL(
|
||||
sdk.forProject.client.config.endpoint +
|
||||
'/messaging/providers/mailgun/' +
|
||||
providerId
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
enabled: enabled
|
||||
}
|
||||
response = await sdk.forProject.messaging.updateMailgunProvider(
|
||||
providerId,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
enabled
|
||||
);
|
||||
break;
|
||||
case Providers.Sendgrid:
|
||||
response = await sdk.forProject.client.call(
|
||||
'PATCH',
|
||||
new URL(
|
||||
sdk.forProject.client.config.endpoint +
|
||||
'/messaging/providers/sendgrid/' +
|
||||
providerId
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
enabled: enabled
|
||||
}
|
||||
response = await sdk.forProject.messaging.updateSendgridProvider(
|
||||
providerId,
|
||||
undefined,
|
||||
enabled
|
||||
);
|
||||
break;
|
||||
case Providers.FCM:
|
||||
response = await sdk.forProject.client.call(
|
||||
'PATCH',
|
||||
new URL(
|
||||
sdk.forProject.client.config.endpoint +
|
||||
'/messaging/providers/fcm/' +
|
||||
providerId
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
enabled: enabled
|
||||
}
|
||||
response = await sdk.forProject.messaging.updateFCMProvider(
|
||||
providerId,
|
||||
undefined,
|
||||
enabled
|
||||
);
|
||||
break;
|
||||
case Providers.APNS:
|
||||
response = await sdk.forProject.client.call(
|
||||
'PATCH',
|
||||
new URL(
|
||||
sdk.forProject.client.config.endpoint +
|
||||
'/messaging/providers/apns/' +
|
||||
providerId
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
enabled: enabled
|
||||
}
|
||||
response = await sdk.forProject.messaging.updateAPNSProvider(
|
||||
providerId,
|
||||
undefined,
|
||||
enabled
|
||||
);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -34,21 +34,7 @@
|
||||
async function handleDelete() {
|
||||
showDelete = false;
|
||||
|
||||
function deleteProvider(providerId: string) {
|
||||
return sdk.forProject.client.call(
|
||||
'DELETE',
|
||||
new URL(
|
||||
`${sdk.forProject.client.config.endpoint}/messaging/providers/${providerId}`
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
const promises = selectedIds.map((id) => deleteProvider(id));
|
||||
const promises = selectedIds.map((id) => sdk.forProject.messaging.deleteProvider(id));
|
||||
|
||||
try {
|
||||
await Promise.all(promises);
|
||||
|
||||
@@ -12,204 +12,106 @@
|
||||
import { provider, providerParams } from './wizard/store';
|
||||
import { Providers } from '../provider.svelte';
|
||||
import { Dependencies } from '$lib/constants';
|
||||
import type { Models } from '@appwrite.io/console';
|
||||
|
||||
async function update() {
|
||||
try {
|
||||
let response = { $id: '', name: '' };
|
||||
let response: Models.Provider;
|
||||
const providerId = $providerParams[$provider].providerId;
|
||||
switch ($provider) {
|
||||
case Providers.Twilio:
|
||||
response = await sdk.forProject.client.call(
|
||||
'PATCH',
|
||||
new URL(
|
||||
`${sdk.forProject.client.config.endpoint}/messaging/providers/twilio/${providerId}`
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
providerId: providerId,
|
||||
name: $providerParams[$provider].name,
|
||||
enabled: $providerParams[$provider].enabled,
|
||||
accountSid: $providerParams[$provider].accountSid,
|
||||
authToken: $providerParams[$provider].authToken,
|
||||
from: $providerParams[$provider].from
|
||||
}
|
||||
response = await sdk.forProject.messaging.updateTwilioProvider(
|
||||
providerId,
|
||||
$providerParams[$provider].name,
|
||||
$providerParams[$provider].enabled,
|
||||
$providerParams[$provider].accountSid,
|
||||
$providerParams[$provider].authToken,
|
||||
$providerParams[$provider].from
|
||||
);
|
||||
break;
|
||||
case Providers.Msg91:
|
||||
response = await sdk.forProject.client.call(
|
||||
'PATCH',
|
||||
new URL(
|
||||
`${sdk.forProject.client.config.endpoint}/messaging/providers/msg91/${providerId}`
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
providerId: providerId,
|
||||
name: $providerParams[$provider].name,
|
||||
enabled: $providerParams[$provider].enabled,
|
||||
from: $providerParams[$provider].from,
|
||||
senderId: $providerParams[$provider].senderId,
|
||||
authKey: $providerParams[$provider].authKey
|
||||
}
|
||||
response = await sdk.forProject.messaging.updateMsg91Provider(
|
||||
providerId,
|
||||
$providerParams[$provider].name,
|
||||
$providerParams[$provider].enabled,
|
||||
$providerParams[$provider].senderId,
|
||||
$providerParams[$provider].authKey,
|
||||
$providerParams[$provider].from
|
||||
);
|
||||
break;
|
||||
case Providers.Telesign:
|
||||
response = await sdk.forProject.client.call(
|
||||
'PATCH',
|
||||
new URL(
|
||||
`${sdk.forProject.client.config.endpoint}/messaging/providers/telesign/${providerId}`
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
providerId: providerId,
|
||||
name: $providerParams[$provider].name,
|
||||
enabled: $providerParams[$provider].enabled,
|
||||
from: $providerParams[$provider].from,
|
||||
username: $providerParams[$provider].username,
|
||||
password: $providerParams[$provider].password
|
||||
}
|
||||
response = await sdk.forProject.messaging.updateTelesignProvider(
|
||||
providerId,
|
||||
$providerParams[$provider].name,
|
||||
$providerParams[$provider].enabled,
|
||||
$providerParams[$provider].username,
|
||||
$providerParams[$provider].password,
|
||||
$providerParams[$provider].from
|
||||
);
|
||||
break;
|
||||
case Providers.Textmagic:
|
||||
response = await sdk.forProject.client.call(
|
||||
'PATCH',
|
||||
new URL(
|
||||
`${sdk.forProject.client.config.endpoint}/messaging/providers/textmagic/${providerId}`
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
providerId: providerId,
|
||||
name: $providerParams[$provider].name,
|
||||
enabled: $providerParams[$provider].enabled,
|
||||
from: $providerParams[$provider].from,
|
||||
username: $providerParams[$provider].username,
|
||||
apiKey: $providerParams[$provider].apiKey
|
||||
}
|
||||
response = await sdk.forProject.messaging.updateTextmagicProvider(
|
||||
providerId,
|
||||
$providerParams[$provider].name,
|
||||
$providerParams[$provider].enabled,
|
||||
$providerParams[$provider].username,
|
||||
$providerParams[$provider].apiKey,
|
||||
$providerParams[$provider].from
|
||||
);
|
||||
break;
|
||||
case Providers.Vonage:
|
||||
response = await sdk.forProject.client.call(
|
||||
'PATCH',
|
||||
new URL(
|
||||
`${sdk.forProject.client.config.endpoint}/messaging/providers/vonage/${providerId}`
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
providerId: providerId,
|
||||
name: $providerParams[$provider].name,
|
||||
enabled: $providerParams[$provider].enabled,
|
||||
from: $providerParams[$provider].from,
|
||||
apiKey: $providerParams[$provider].apiKey,
|
||||
apiSecret: $providerParams[$provider].apiSecret
|
||||
}
|
||||
response = await sdk.forProject.messaging.updateVonageProvider(
|
||||
providerId,
|
||||
$providerParams[$provider].name,
|
||||
$providerParams[$provider].enabled,
|
||||
$providerParams[$provider].apiKey,
|
||||
$providerParams[$provider].apiSecret,
|
||||
$providerParams[$provider].from
|
||||
);
|
||||
break;
|
||||
case Providers.Mailgun:
|
||||
response = await sdk.forProject.client.call(
|
||||
'PATCH',
|
||||
new URL(
|
||||
`${sdk.forProject.client.config.endpoint}/messaging/providers/mailgun/${providerId}`
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
providerId: providerId,
|
||||
name: $providerParams[$provider].name,
|
||||
enabled: $providerParams[$provider].enabled,
|
||||
isEuRegion: $providerParams[$provider].isEuRegion,
|
||||
fromEmail: $providerParams[$provider].fromEmail,
|
||||
fromName: $providerParams[$provider].fromName,
|
||||
replyToEmail: $providerParams[$provider].replyToEmail,
|
||||
replyToName: $providerParams[$provider].replyToName,
|
||||
apiKey: $providerParams[$provider].apiKey,
|
||||
domain: $providerParams[$provider].domain
|
||||
}
|
||||
response = await sdk.forProject.messaging.updateMailgunProvider(
|
||||
providerId,
|
||||
$providerParams[$provider].name,
|
||||
$providerParams[$provider].apiKey,
|
||||
$providerParams[$provider].domain,
|
||||
$providerParams[$provider].isEuRegion,
|
||||
$providerParams[$provider].enabled,
|
||||
$providerParams[$provider].fromName,
|
||||
$providerParams[$provider].fromEmail,
|
||||
$providerParams[$provider].replyToName,
|
||||
$providerParams[$provider].replyToEmail
|
||||
);
|
||||
break;
|
||||
case Providers.Sendgrid:
|
||||
response = await sdk.forProject.client.call(
|
||||
'PATCH',
|
||||
new URL(
|
||||
`${sdk.forProject.client.config.endpoint}/messaging/providers/sendgrid/${providerId}`
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
providerId: providerId,
|
||||
name: $providerParams[$provider].name,
|
||||
enabled: $providerParams[$provider].enabled,
|
||||
fromEmail: $providerParams[$provider].fromEmail,
|
||||
fromName: $providerParams[$provider].fromName,
|
||||
replyToEmail: $providerParams[$provider].replyToEmail,
|
||||
replyToName: $providerParams[$provider].replyToName,
|
||||
apiKey: $providerParams[$provider].apiKey
|
||||
}
|
||||
response = await sdk.forProject.messaging.updateSendgridProvider(
|
||||
providerId,
|
||||
$providerParams[$provider].name,
|
||||
$providerParams[$provider].enabled,
|
||||
$providerParams[$provider].apiKey,
|
||||
$providerParams[$provider].fromName,
|
||||
$providerParams[$provider].fromEmail,
|
||||
$providerParams[$provider].replyToName,
|
||||
$providerParams[$provider].replyToEmail
|
||||
);
|
||||
break;
|
||||
case Providers.FCM:
|
||||
response = await sdk.forProject.client.call(
|
||||
'PATCH',
|
||||
new URL(
|
||||
`${sdk.forProject.client.config.endpoint}/messaging/providers/fcm')/${providerId}`
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
providerId: providerId,
|
||||
name: $providerParams[$provider].name,
|
||||
enabled: $providerParams[$provider].enabled,
|
||||
serviceAccountJSON: $providerParams[$provider].serviceAccountJSON
|
||||
}
|
||||
response = await sdk.forProject.messaging.updateFCMProvider(
|
||||
providerId,
|
||||
$providerParams[$provider].name,
|
||||
$providerParams[$provider].enabled,
|
||||
JSON.parse($providerParams[$provider].serviceAccountJSON)
|
||||
);
|
||||
break;
|
||||
case Providers.APNS:
|
||||
response = await sdk.forProject.client.call(
|
||||
'PATCH',
|
||||
new URL(
|
||||
`${sdk.forProject.client.config.endpoint}/messaging/providers/apns/${providerId}`
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
providerId: providerId,
|
||||
name: $providerParams[$provider].name,
|
||||
enabled: $providerParams[$provider].enabled,
|
||||
authKey: $providerParams[$provider].authKey,
|
||||
authKeyId: $providerParams[$provider].authKeyId,
|
||||
teamId: $providerParams[$provider].teamId,
|
||||
bundleId: $providerParams[$provider].bundleId
|
||||
}
|
||||
response = await sdk.forProject.messaging.updateAPNSProvider(
|
||||
providerId,
|
||||
$providerParams[$provider].name,
|
||||
$providerParams[$provider].enabled,
|
||||
$providerParams[$provider].authKey,
|
||||
$providerParams[$provider].authKeyId,
|
||||
$providerParams[$provider].teamId,
|
||||
$providerParams[$provider].bundleId
|
||||
);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Query, type Models } from '@appwrite.io/console';
|
||||
import { Query } from '@appwrite.io/console';
|
||||
import { sdk } from '$lib/stores/sdk';
|
||||
import { getLimit, getPage, getQuery, getSearch, pageToOffset } from '$lib/helpers/load';
|
||||
import { Dependencies, PAGE_LIMIT } from '$lib/constants';
|
||||
@@ -15,38 +15,20 @@ export const load = async ({ depends, url, route }) => {
|
||||
const parsedQueries = queryParamToMap(query || '[]');
|
||||
queries.set(parsedQueries);
|
||||
|
||||
const payload = {
|
||||
queries: [
|
||||
Query.limit(limit),
|
||||
Query.offset(offset),
|
||||
Query.orderDesc(''),
|
||||
...parsedQueries.values()
|
||||
]
|
||||
};
|
||||
|
||||
if (search) {
|
||||
payload['search'] = search;
|
||||
}
|
||||
|
||||
// TODO: remove when the API is ready with data
|
||||
// This allows us to mock w/ data and when search returns 0 results
|
||||
const topics: { topics: Models.Topic[]; total: number } = await sdk.forProject.client.call(
|
||||
'GET',
|
||||
new URL(sdk.forProject.client.config.endpoint + '/messaging/topics'),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
payload
|
||||
);
|
||||
|
||||
return {
|
||||
offset,
|
||||
limit,
|
||||
search,
|
||||
query,
|
||||
page,
|
||||
topics
|
||||
topics: sdk.forProject.messaging.listTopics(
|
||||
[
|
||||
Query.limit(limit),
|
||||
Query.offset(offset),
|
||||
Query.orderDesc(''),
|
||||
...parsedQueries.values()
|
||||
],
|
||||
search || undefined
|
||||
)
|
||||
};
|
||||
};
|
||||
|
||||
@@ -17,19 +17,7 @@
|
||||
|
||||
const create = async () => {
|
||||
try {
|
||||
const topic = await sdk.forProject.client.call(
|
||||
'POST',
|
||||
new URL(sdk.forProject.client.config.endpoint + '/messaging/topics'),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
name,
|
||||
topicId: id ?? ID.unique()
|
||||
}
|
||||
);
|
||||
const topic = await sdk.forProject.messaging.createTopic(id ?? ID.unique(), name);
|
||||
name = '';
|
||||
showCreate = false;
|
||||
showCustomId = false;
|
||||
|
||||
@@ -32,19 +32,7 @@
|
||||
async function handleDelete() {
|
||||
showDelete = false;
|
||||
|
||||
function deleteTopic(topicId: string) {
|
||||
return sdk.forProject.client.call(
|
||||
'DELETE',
|
||||
new URL(`${sdk.forProject.client.config.endpoint}/messaging/topics/${topicId}`),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
const promises = selectedIds.map((id) => deleteTopic(id));
|
||||
const promises = selectedIds.map((id) => sdk.forProject.messaging.deleteTopic(id));
|
||||
|
||||
try {
|
||||
await Promise.all(promises);
|
||||
|
||||
@@ -3,28 +3,13 @@ import Breadcrumbs from './breadcrumbs.svelte';
|
||||
import Header from './header.svelte';
|
||||
import { sdk } from '$lib/stores/sdk';
|
||||
import { Dependencies } from '$lib/constants';
|
||||
import { error } from '@sveltejs/kit';
|
||||
|
||||
export const load: LayoutLoad = async ({ params, depends }) => {
|
||||
depends(Dependencies.MESSAGING_TOPIC);
|
||||
|
||||
const response = await sdk.forProject.client.call(
|
||||
'GET',
|
||||
new URL(sdk.forProject.client.config.endpoint + '/messaging/topics/' + params.topic),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
}
|
||||
);
|
||||
|
||||
try {
|
||||
return {
|
||||
header: Header,
|
||||
breadcrumbs: Breadcrumbs,
|
||||
topic: response
|
||||
};
|
||||
} catch (e) {
|
||||
throw error(e.code, e.message);
|
||||
}
|
||||
return {
|
||||
header: Header,
|
||||
breadcrumbs: Breadcrumbs,
|
||||
topic: sdk.forProject.messaging.getTopic(params.topic)
|
||||
};
|
||||
};
|
||||
|
||||
+5
-19
@@ -1,4 +1,4 @@
|
||||
import { Query, type Models } from '@appwrite.io/console';
|
||||
import { Query } from '@appwrite.io/console';
|
||||
import { sdk } from '$lib/stores/sdk';
|
||||
import { getLimit, getPage, pageToOffset } from '$lib/helpers/load';
|
||||
import { PAGE_LIMIT } from '$lib/constants';
|
||||
@@ -9,26 +9,12 @@ export const load: PageLoad = async ({ params, url, route }) => {
|
||||
const limit = getLimit(url, route, PAGE_LIMIT);
|
||||
const offset = pageToOffset(page, limit);
|
||||
|
||||
const payload = {
|
||||
queries: [Query.limit(limit), Query.offset(offset)]
|
||||
};
|
||||
|
||||
// TODO: remove when the API is ready with data
|
||||
// This allows us to mock w/ data and when search returns 0 results
|
||||
const logs: Models.LogList = await sdk.forProject.client.call(
|
||||
'GET',
|
||||
new URL(`${sdk.forProject.client.config.endpoint}/messaging/topics/${params.topic}/logs`),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
payload
|
||||
);
|
||||
|
||||
return {
|
||||
offset,
|
||||
limit,
|
||||
logs
|
||||
logs: sdk.forProject.messaging.listTopicLogs(params.topic, [
|
||||
Query.limit(limit),
|
||||
Query.offset(offset)
|
||||
])
|
||||
};
|
||||
};
|
||||
|
||||
+2
-9
@@ -13,15 +13,8 @@
|
||||
export let showDelete = false;
|
||||
const deleteTopic = async () => {
|
||||
try {
|
||||
await sdk.forProject.client.call(
|
||||
'DELETE',
|
||||
new URL(sdk.forProject.client.config.endpoint + '/messaging/topics/' + $topic.$id),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
}
|
||||
);
|
||||
await sdk.forProject.messaging.deleteTopic($topic.$id);
|
||||
|
||||
showDelete = false;
|
||||
addNotification({
|
||||
type: 'success',
|
||||
|
||||
+4
-21
@@ -22,14 +22,13 @@
|
||||
import { targetsById } from '../../../store';
|
||||
import UserTargetsModal from '../../../userTargetsModal.svelte';
|
||||
import { onMount } from 'svelte';
|
||||
import type { Subscriber } from './+page';
|
||||
import { Filters, hasPageQueries } from '$lib/components/filters';
|
||||
import { columns } from './store';
|
||||
import { View } from '$lib/helpers/load';
|
||||
|
||||
export let data: PageData;
|
||||
let showAdd = false;
|
||||
let subscribersByTargetId: Record<string, Subscriber> = {};
|
||||
let subscribersByTargetId: Record<string, Models.Subscriber> = {};
|
||||
|
||||
onMount(() => {
|
||||
$targetsById = {};
|
||||
@@ -43,29 +42,13 @@
|
||||
async function addTargets(event: CustomEvent<Record<string, Models.Target>>) {
|
||||
showAdd = false;
|
||||
$targetsById = event.detail;
|
||||
async function addSubscriber(targetId: string) {
|
||||
await sdk.forProject.client.call(
|
||||
'POST',
|
||||
new URL(
|
||||
`${sdk.forProject.client.config.endpoint}/messaging/topics/${$page.params.topic}/subscribers`
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
subscriberId: ID.unique(),
|
||||
topicId: $page.params.topic,
|
||||
targetId: targetId
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
const targetIds = Object.keys($targetsById).filter(
|
||||
(targetId) => !(targetId in subscribersByTargetId)
|
||||
);
|
||||
const promises = targetIds.map(addSubscriber);
|
||||
const promises = targetIds.map((targetId) =>
|
||||
sdk.forProject.messaging.createSubscriber($page.params.topic, ID.unique(), targetId)
|
||||
);
|
||||
|
||||
try {
|
||||
await Promise.all(promises);
|
||||
|
||||
+13
-45
@@ -1,22 +1,13 @@
|
||||
import { Query, type Models } from '@appwrite.io/console';
|
||||
import { Query } from '@appwrite.io/console';
|
||||
import { sdk } from '$lib/stores/sdk';
|
||||
import { getLimit, getPage, getQuery, getSearch, pageToOffset } from '$lib/helpers/load';
|
||||
import { Dependencies, PAGE_LIMIT } from '$lib/constants';
|
||||
import type { PageLoad } from './$types';
|
||||
import { queryParamToMap, queries } from '$lib/components/filters';
|
||||
|
||||
export type Subscriber = {
|
||||
$id: string;
|
||||
$createdAt: string;
|
||||
$updatedAt: string;
|
||||
targetId: string;
|
||||
target: Models.Target;
|
||||
userName: string;
|
||||
topicId: string;
|
||||
};
|
||||
|
||||
export const load: PageLoad = async ({ params, url, route, depends, parent }) => {
|
||||
export const load: PageLoad = async ({ params, url, route, depends }) => {
|
||||
depends(Dependencies.MESSAGING_TOPIC_SUBSCRIBERS);
|
||||
|
||||
const page = getPage(url);
|
||||
const limit = getLimit(url, route, PAGE_LIMIT);
|
||||
const offset = pageToOffset(page, limit);
|
||||
@@ -26,43 +17,20 @@ export const load: PageLoad = async ({ params, url, route, depends, parent }) =>
|
||||
const parsedQueries = queryParamToMap(query || '[]');
|
||||
queries.set(parsedQueries);
|
||||
|
||||
const payload = {
|
||||
queries: [
|
||||
Query.limit(limit),
|
||||
Query.offset(offset),
|
||||
Query.orderDesc(''),
|
||||
...parsedQueries.values()
|
||||
]
|
||||
};
|
||||
|
||||
if (search) {
|
||||
payload['search'] = search;
|
||||
}
|
||||
|
||||
const { topic } = await parent();
|
||||
|
||||
// TODO: remove when the API is ready with data
|
||||
// This allows us to mock w/ data and when search returns 0 results
|
||||
const subscribers: { subscribers: Subscriber[]; total: number } =
|
||||
await sdk.forProject.client.call(
|
||||
'GET',
|
||||
new URL(
|
||||
`${sdk.forProject.client.config.endpoint}/messaging/topics/${params.topic}/subscribers`
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
payload
|
||||
);
|
||||
|
||||
return {
|
||||
offset,
|
||||
limit,
|
||||
search,
|
||||
query,
|
||||
topic,
|
||||
subscribers
|
||||
subscribers: sdk.forProject.messaging.listSubscribers(
|
||||
params.topic,
|
||||
[
|
||||
Query.limit(limit),
|
||||
Query.offset(offset),
|
||||
Query.orderDesc(''),
|
||||
...parsedQueries.values()
|
||||
],
|
||||
search || undefined
|
||||
)
|
||||
};
|
||||
};
|
||||
|
||||
+4
-15
@@ -25,14 +25,13 @@
|
||||
import { sdk } from '$lib/stores/sdk';
|
||||
import { page } from '$app/stores';
|
||||
import { targetsById } from '../../../store';
|
||||
import type { Subscriber } from './+page';
|
||||
import { MessagingProviderType } from '@appwrite.io/console';
|
||||
import { MessagingProviderType, type Models } from '@appwrite.io/console';
|
||||
|
||||
export let data: PageData;
|
||||
|
||||
let subscribers: Record<string, Subscriber> = {};
|
||||
let subscribers: Record<string, Models.Subscriber> = {};
|
||||
let selectedIds: string[] = [];
|
||||
let selected: Record<string, Subscriber> = {};
|
||||
let selected: Record<string, Models.Subscriber> = {};
|
||||
let showDelete = false;
|
||||
let deleting = false;
|
||||
|
||||
@@ -40,17 +39,7 @@
|
||||
showDelete = false;
|
||||
|
||||
async function deleteSubscriber(subscriberId: string) {
|
||||
await sdk.forProject.client.call(
|
||||
'DELETE',
|
||||
new URL(
|
||||
`${sdk.forProject.client.config.endpoint}/messaging/topics/${$page.params.topic}/subscribers/${subscriberId}`
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
}
|
||||
);
|
||||
await sdk.forProject.messaging.deleteSubscriber($page.params.topic, subscriberId);
|
||||
const { target } = subscribers[subscriberId];
|
||||
const { [target.$id]: _, ...rest } = $targetsById;
|
||||
$targetsById = rest;
|
||||
|
||||
+1
-13
@@ -15,19 +15,7 @@
|
||||
});
|
||||
async function updateName() {
|
||||
try {
|
||||
// await sdk.forProject.users.updateName($provider.$id, providerName);
|
||||
await sdk.forProject.client.call(
|
||||
'PATCH',
|
||||
new URL(`${sdk.forProject.client.config.endpoint}/messaging/topics/${$topic.$id}`),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
name: name
|
||||
}
|
||||
);
|
||||
await sdk.forProject.messaging.updateTopic($topic.$id, name);
|
||||
await invalidate(Dependencies.MESSAGING_TOPIC);
|
||||
addNotification({
|
||||
message: 'Name has been updated',
|
||||
|
||||
@@ -32,25 +32,7 @@
|
||||
if (!show) return;
|
||||
const queries = [Query.limit(5), Query.offset(offset)];
|
||||
|
||||
const params = {
|
||||
queries
|
||||
};
|
||||
|
||||
if (search) {
|
||||
params['search'] = search;
|
||||
}
|
||||
|
||||
// TODO: replace with sdk.forProject.users.list once User type has targets
|
||||
const response = await sdk.forProject.client.call(
|
||||
'GET',
|
||||
new URL(sdk.forProject.client.config.endpoint + '/messaging/topics'),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
params
|
||||
);
|
||||
const response = await sdk.forProject.messaging.listTopics(queries, search || undefined);
|
||||
|
||||
totalResults = response.total;
|
||||
topicResultsById = {};
|
||||
|
||||
@@ -46,25 +46,7 @@
|
||||
queries.push(Query.notEqual('phone', ''));
|
||||
}
|
||||
|
||||
const params = {
|
||||
queries
|
||||
};
|
||||
|
||||
if (search) {
|
||||
params['search'] = search;
|
||||
}
|
||||
|
||||
// TODO: replace with sdk.forProject.users.list once User type has targets
|
||||
const response = await sdk.forProject.client.call(
|
||||
'GET',
|
||||
new URL(sdk.forProject.client.config.endpoint + '/users'),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
params
|
||||
);
|
||||
const response = await sdk.forProject.users.list(queries, search || undefined);
|
||||
|
||||
totalResults = response.total;
|
||||
userResultsById = {};
|
||||
|
||||
@@ -11,71 +11,40 @@
|
||||
import { base } from '$app/paths';
|
||||
import { project } from '../store';
|
||||
import { wizard } from '$lib/stores/wizard';
|
||||
import {
|
||||
providerType,
|
||||
messageParams,
|
||||
type PushMessageParams,
|
||||
type SMSMessageParams,
|
||||
type EmailMessageParams,
|
||||
operation
|
||||
} from './wizard/store';
|
||||
import { ID, MessageType, MessagingProviderType } from '@appwrite.io/console';
|
||||
import { providerType, messageParams, operation } from './wizard/store';
|
||||
import { ID, MessageType, MessagingProviderType, type Models } from '@appwrite.io/console';
|
||||
import { Dependencies } from '$lib/constants';
|
||||
|
||||
async function create() {
|
||||
try {
|
||||
let response = { $id: '' };
|
||||
let response: Models.Message;
|
||||
const messageId = $messageParams[$providerType].messageId || ID.unique();
|
||||
|
||||
const params = $messageParams[$providerType];
|
||||
|
||||
console.log(params);
|
||||
|
||||
const payload:
|
||||
| Partial<SMSMessageParams>
|
||||
| Partial<EmailMessageParams>
|
||||
| Partial<PushMessageParams> = {
|
||||
topics: params.topics || [],
|
||||
users: params.users || [],
|
||||
targets: params.targets || []
|
||||
};
|
||||
Object.keys(params).forEach((key) => {
|
||||
if (['messageId', 'topics', 'users', 'targets'].includes(key)) return;
|
||||
if (typeof params[key] === 'undefined') return;
|
||||
payload[key] = params[key];
|
||||
});
|
||||
|
||||
switch ($providerType) {
|
||||
case MessagingProviderType.Email:
|
||||
response = await sdk.forProject.client.call(
|
||||
'POST',
|
||||
new URL(
|
||||
sdk.forProject.client.config.endpoint + '/messaging/messages/email'
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
...payload,
|
||||
messageId
|
||||
}
|
||||
response = await sdk.forProject.messaging.createEmail(
|
||||
messageId,
|
||||
$messageParams[$providerType].subject,
|
||||
$messageParams[$providerType].content,
|
||||
$messageParams[$providerType].topics,
|
||||
$messageParams[$providerType].users,
|
||||
$messageParams[$providerType].targets,
|
||||
undefined,
|
||||
undefined,
|
||||
$messageParams[$providerType].status,
|
||||
$messageParams[$providerType].html,
|
||||
$messageParams[$providerType].scheduledAt
|
||||
);
|
||||
break;
|
||||
case MessagingProviderType.Sms:
|
||||
response = await sdk.forProject.client.call(
|
||||
'POST',
|
||||
new URL(sdk.forProject.client.config.endpoint + '/messaging/messages/sms'),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
...payload,
|
||||
messageId
|
||||
}
|
||||
response = await sdk.forProject.messaging.createSMS(
|
||||
messageId,
|
||||
$messageParams[$providerType].content,
|
||||
$messageParams[$providerType].topics,
|
||||
$messageParams[$providerType].users,
|
||||
$messageParams[$providerType].targets,
|
||||
$messageParams[$providerType].status,
|
||||
$messageParams[$providerType].scheduledAt
|
||||
);
|
||||
break;
|
||||
case MessagingProviderType.Push:
|
||||
@@ -89,35 +58,37 @@
|
||||
});
|
||||
}
|
||||
|
||||
response = await sdk.forProject.client.call(
|
||||
'POST',
|
||||
new URL(
|
||||
sdk.forProject.client.config.endpoint + '/messaging/messages/push'
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
...payload,
|
||||
data: customData,
|
||||
messageId
|
||||
}
|
||||
response = await sdk.forProject.messaging.createPush(
|
||||
messageId,
|
||||
$messageParams[$providerType].title,
|
||||
$messageParams[$providerType].body,
|
||||
$messageParams[$providerType].topics,
|
||||
$messageParams[$providerType].users,
|
||||
$messageParams[$providerType].targets,
|
||||
customData,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
$messageParams[$providerType].status,
|
||||
$messageParams[$providerType].scheduledAt
|
||||
);
|
||||
}
|
||||
break;
|
||||
}
|
||||
wizard.hide();
|
||||
let message = '';
|
||||
switch (params.status) {
|
||||
switch (response.status) {
|
||||
case MessageType.Draft:
|
||||
message = 'The message has been saved as draft.';
|
||||
break;
|
||||
case MessageType.Processing:
|
||||
message = 'The message is queued for processing.';
|
||||
break;
|
||||
case MessageType.Scheduled:
|
||||
case 'scheduled':
|
||||
// TODO: fix message status
|
||||
message = 'The message has been scheduled.';
|
||||
break;
|
||||
}
|
||||
@@ -127,7 +98,7 @@
|
||||
});
|
||||
trackEvent(Submit.MessagingMessageCreate, {
|
||||
providerType: $providerType,
|
||||
status: params.status
|
||||
status: response.status
|
||||
});
|
||||
await goto(`${base}/console/project-${$project.$id}/messaging/message-${response.$id}`);
|
||||
} catch (error) {
|
||||
@@ -141,62 +112,39 @@
|
||||
|
||||
async function update() {
|
||||
try {
|
||||
let response = { $id: '' };
|
||||
let response: Models.Message;
|
||||
|
||||
const messageId = $messageParams[$providerType].messageId;
|
||||
|
||||
const params = $messageParams[$providerType];
|
||||
|
||||
console.log(params);
|
||||
|
||||
const payload:
|
||||
| Partial<SMSMessageParams>
|
||||
| Partial<EmailMessageParams>
|
||||
| Partial<PushMessageParams> = {
|
||||
topics: params.topics || [],
|
||||
users: params.users || [],
|
||||
targets: params.targets || []
|
||||
};
|
||||
Object.keys(params).forEach((key) => {
|
||||
if (['messageId', 'topics', 'users', 'targets'].includes(key)) return;
|
||||
if (typeof params[key] === 'undefined') return;
|
||||
payload[key] = params[key];
|
||||
});
|
||||
|
||||
console.log(payload);
|
||||
|
||||
switch ($providerType) {
|
||||
case MessagingProviderType.Email:
|
||||
response = await sdk.forProject.client.call(
|
||||
'PATCH',
|
||||
new URL(
|
||||
`${sdk.forProject.client.config.endpoint}/messaging/messages/email/${messageId}`
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
...payload,
|
||||
messageId
|
||||
}
|
||||
response = await sdk.forProject.messaging.updateEmail(
|
||||
messageId,
|
||||
$messageParams[$providerType].topics,
|
||||
$messageParams[$providerType].users,
|
||||
$messageParams[$providerType].targets,
|
||||
$messageParams[$providerType].subject,
|
||||
$messageParams[$providerType].content,
|
||||
$messageParams[$providerType].status,
|
||||
$messageParams[$providerType].html,
|
||||
undefined,
|
||||
undefined,
|
||||
$messageParams[$providerType].scheduledAt
|
||||
);
|
||||
break;
|
||||
case MessagingProviderType.Sms:
|
||||
response = await sdk.forProject.client.call(
|
||||
'PATCH',
|
||||
new URL(
|
||||
`${sdk.forProject.client.config.endpoint}/messaging/messages/sms/${messageId}`
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
...payload,
|
||||
messageId
|
||||
}
|
||||
response = await sdk.forProject.messaging.updateSMS(
|
||||
messageId,
|
||||
$messageParams[$providerType].topics,
|
||||
$messageParams[$providerType].users,
|
||||
$messageParams[$providerType].targets,
|
||||
$messageParams[$providerType].content,
|
||||
$messageParams[$providerType].status,
|
||||
$messageParams[$providerType].scheduledAt
|
||||
);
|
||||
break;
|
||||
case MessagingProviderType.Push:
|
||||
@@ -210,35 +158,37 @@
|
||||
});
|
||||
}
|
||||
|
||||
response = await sdk.forProject.client.call(
|
||||
'PATCH',
|
||||
new URL(
|
||||
`${sdk.forProject.client.config.endpoint}/messaging/messages/push/${messageId}`
|
||||
),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
{
|
||||
...payload,
|
||||
data: customData,
|
||||
messageId
|
||||
}
|
||||
response = await sdk.forProject.messaging.updatePush(
|
||||
messageId,
|
||||
$messageParams[$providerType].topics,
|
||||
$messageParams[$providerType].users,
|
||||
$messageParams[$providerType].targets,
|
||||
$messageParams[$providerType].title,
|
||||
$messageParams[$providerType].body,
|
||||
customData,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
$messageParams[$providerType].status,
|
||||
$messageParams[$providerType].scheduledAt
|
||||
);
|
||||
}
|
||||
break;
|
||||
}
|
||||
wizard.hide();
|
||||
let message = '';
|
||||
switch (params.status) {
|
||||
switch (response.status) {
|
||||
case MessageType.Draft:
|
||||
message = 'The message has been saved as draft.';
|
||||
break;
|
||||
case MessageType.Processing:
|
||||
message = 'The message is queued for processing.';
|
||||
break;
|
||||
case MessageType.Scheduled:
|
||||
case 'scheduled':
|
||||
// TODO: fix message status
|
||||
message = 'The message has been scheduled.';
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1,27 +1,5 @@
|
||||
<script context="module" lang="ts">
|
||||
export async function createEmailMessage(params: EmailMessageParams) {
|
||||
const response = await sdk.forProject.client.call(
|
||||
'POST',
|
||||
new URL(sdk.forProject.client.config.endpoint + '/messaging/messages/email'),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
params
|
||||
);
|
||||
|
||||
return response.json();
|
||||
}
|
||||
</script>
|
||||
|
||||
<script lang="ts">
|
||||
import {
|
||||
messageParams,
|
||||
providerType,
|
||||
type EmailMessageParams,
|
||||
operation
|
||||
} from './store';
|
||||
import { messageParams, providerType, operation } from './store';
|
||||
import {
|
||||
Button,
|
||||
FormList,
|
||||
@@ -47,17 +25,20 @@
|
||||
const email = selected === 'self' ? $user.email : otherEmail;
|
||||
console.log(email);
|
||||
|
||||
createEmailMessage({
|
||||
topics: $messageParams[MessagingProviderType.Email]?.topics || [],
|
||||
targets: $messageParams[MessagingProviderType.Email]?.targets || [],
|
||||
status: MessageType.Processing,
|
||||
messageId: ID.unique(),
|
||||
// TODO: properly handle the test email address
|
||||
users: ['steven'],
|
||||
subject: $messageParams[MessagingProviderType.Email]?.subject || '',
|
||||
content: $messageParams[MessagingProviderType.Email]?.content || '',
|
||||
html: $messageParams[MessagingProviderType.Email]?.html || false
|
||||
});
|
||||
// TODO: replace with test method
|
||||
sdk.forProject.messaging.createEmail(
|
||||
ID.unique(),
|
||||
$messageParams[MessagingProviderType.Email]?.subject || undefined,
|
||||
$messageParams[MessagingProviderType.Email]?.content || undefined,
|
||||
$messageParams[MessagingProviderType.Email]?.topics || [],
|
||||
$messageParams[MessagingProviderType.Email]?.users || [],
|
||||
$messageParams[MessagingProviderType.Email]?.targets || [],
|
||||
undefined,
|
||||
undefined,
|
||||
MessageType.Processing,
|
||||
$messageParams[MessagingProviderType.Email]?.html || false,
|
||||
undefined
|
||||
);
|
||||
}
|
||||
|
||||
$: otherEmail = selected === 'self' ? '' : otherEmail;
|
||||
|
||||
@@ -1,19 +1,4 @@
|
||||
<script context="module" lang="ts">
|
||||
export async function createPushMessage(params: PushMessageParams) {
|
||||
const response = await sdk.forProject.client.call(
|
||||
'POST',
|
||||
new URL(sdk.forProject.client.config.endpoint + '/messaging/messages/push'),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
params
|
||||
);
|
||||
|
||||
return response.json();
|
||||
}
|
||||
|
||||
export function validateData(data: string[][]) {
|
||||
if (!data || data.length === 0) return;
|
||||
|
||||
@@ -39,12 +24,7 @@
|
||||
</script>
|
||||
|
||||
<script lang="ts">
|
||||
import {
|
||||
messageParams,
|
||||
providerType,
|
||||
type PushMessageParams,
|
||||
operation
|
||||
} from './store';
|
||||
import { messageParams, providerType, operation } from './store';
|
||||
import {
|
||||
Button,
|
||||
FormItem,
|
||||
@@ -81,17 +61,24 @@
|
||||
const email = selected === 'self' ? $user.email : otherEmail;
|
||||
console.log(email);
|
||||
|
||||
createPushMessage({
|
||||
topics: $messageParams[MessagingProviderType.Push]?.topics || [],
|
||||
targets: $messageParams[MessagingProviderType.Push]?.targets || [],
|
||||
status: MessageType.Processing,
|
||||
messageId: ID.unique(),
|
||||
// TODO: properly handle the test email address
|
||||
users: ['steven'],
|
||||
body: $messageParams[MessagingProviderType.Push]?.body || '',
|
||||
title: $messageParams[MessagingProviderType.Push]?.title || '',
|
||||
data: $messageParams[MessagingProviderType.Push]?.data || []
|
||||
});
|
||||
// TODO: replace with test method
|
||||
sdk.forProject.messaging.createPush(
|
||||
ID.unique(),
|
||||
$messageParams[MessagingProviderType.Push]?.title || undefined,
|
||||
$messageParams[MessagingProviderType.Push]?.body || undefined,
|
||||
$messageParams[MessagingProviderType.Push]?.topics || [],
|
||||
$messageParams[MessagingProviderType.Push]?.users || [],
|
||||
$messageParams[MessagingProviderType.Push]?.targets || [],
|
||||
$messageParams[MessagingProviderType.Push]?.data || undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
MessageType.Processing,
|
||||
undefined
|
||||
);
|
||||
}
|
||||
|
||||
$: otherEmail = selected === 'self' ? '' : otherEmail;
|
||||
|
||||
@@ -1,27 +1,5 @@
|
||||
<script context="module" lang="ts">
|
||||
export async function createSMSMessage(params: EmailMessageParams) {
|
||||
const response = await sdk.forProject.client.call(
|
||||
'POST',
|
||||
new URL(sdk.forProject.client.config.endpoint + '/messaging/messages/sms'),
|
||||
{
|
||||
'X-Appwrite-Project': sdk.forProject.client.config.project,
|
||||
'content-type': 'application/json',
|
||||
'X-Appwrite-Mode': 'admin'
|
||||
},
|
||||
params
|
||||
);
|
||||
|
||||
return response.json();
|
||||
}
|
||||
</script>
|
||||
|
||||
<script lang="ts">
|
||||
import {
|
||||
messageParams,
|
||||
providerType,
|
||||
type EmailMessageParams,
|
||||
operation
|
||||
} from './store';
|
||||
import { messageParams, providerType, operation } from './store';
|
||||
import { Button, FormList, InputEmail, InputRadio, InputTextarea } from '$lib/elements/forms';
|
||||
import { Pill } from '$lib/elements';
|
||||
import { CustomId, Modal } from '$lib/components';
|
||||
@@ -39,17 +17,16 @@
|
||||
async function sendTestSMS() {
|
||||
// const email = selected === 'self' ? $user.email : otherEmail;
|
||||
|
||||
createSMSMessage({
|
||||
topics: $messageParams[MessagingProviderType.Email]?.topics || [],
|
||||
targets: $messageParams[MessagingProviderType.Email]?.targets || [],
|
||||
status: MessageType.Processing,
|
||||
messageId: ID.unique(),
|
||||
// TODO: properly handle the test email address
|
||||
users: ['steven'],
|
||||
subject: $messageParams[MessagingProviderType.Email]?.subject || '',
|
||||
content: $messageParams[MessagingProviderType.Email]?.content || '',
|
||||
html: $messageParams[MessagingProviderType.Email]?.html || false
|
||||
});
|
||||
// TODO: replace with test method
|
||||
sdk.forProject.messaging.createSMS(
|
||||
ID.unique(),
|
||||
$messageParams[MessagingProviderType.Sms]?.content || undefined,
|
||||
$messageParams[MessagingProviderType.Sms]?.topics || [],
|
||||
$messageParams[MessagingProviderType.Sms]?.users || [],
|
||||
$messageParams[MessagingProviderType.Sms]?.targets || [],
|
||||
MessageType.Processing,
|
||||
undefined
|
||||
);
|
||||
}
|
||||
|
||||
$: otherEmail = selected === 'self' ? '' : otherEmail;
|
||||
|
||||
Reference in New Issue
Block a user