Skip to content

Commit 380bf73

Browse files
committed
Upgrade SDK to new platforms API
1 parent 14613f6 commit 380bf73

27 files changed

Lines changed: 429 additions & 347 deletions

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
},
2121
"dependencies": {
2222
"@ai-sdk/svelte": "^1.1.24",
23-
"@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@24e07fc",
23+
"@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@67539a6",
2424
"@appwrite.io/pink-icons": "0.25.0",
2525
"@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@bfe7ce3",
2626
"@appwrite.io/pink-legacy": "^1.0.3",

pnpm-lock.yaml

Lines changed: 12 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/lib/helpers/platform.ts

Lines changed: 50 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,59 @@
1+
import type { Models } from '@appwrite.io/console';
2+
3+
export type AnyPlatform =
4+
| Models.PlatformWeb
5+
| Models.PlatformApple
6+
| Models.PlatformAndroid
7+
| Models.PlatformWindows
8+
| Models.PlatformLinux;
9+
110
export function isMac(): boolean {
211
return window.navigator.platform.toUpperCase().indexOf('MAC') >= 0;
312
}
413

514
export const getPlatformInfo = (platform: string) => {
615
let name: string, icon: string;
7-
if (platform.includes('flutter')) {
8-
name = 'Flutter';
9-
icon = 'flutter';
10-
} else if (platform.includes('react-native')) {
11-
name = 'React Native';
12-
icon = 'react-native';
13-
} else if (platform.includes('apple')) {
14-
name = 'Apple';
15-
icon = 'apple';
16-
} else if (platform.includes('android')) {
17-
name = 'Android';
18-
icon = 'android';
19-
} else if (platform.includes('unity')) {
20-
name = 'Unity';
21-
icon = 'unity';
22-
} else if (platform.includes('web')) {
23-
name = 'Web';
24-
icon = 'code';
25-
} else {
26-
name = 'Unknown';
27-
icon = 'unknown';
16+
switch (platform) {
17+
case 'apple':
18+
name = 'Apple';
19+
icon = 'apple';
20+
break;
21+
case 'android':
22+
name = 'Android';
23+
icon = 'android';
24+
break;
25+
case 'web':
26+
name = 'Web';
27+
icon = 'code';
28+
break;
29+
case 'windows':
30+
name = 'Windows';
31+
icon = 'windows';
32+
break;
33+
case 'linux':
34+
name = 'Linux';
35+
icon = 'linux';
36+
break;
37+
default:
38+
name = 'Unknown';
39+
icon = 'unknown';
2840
}
2941
return { name, icon };
3042
};
43+
44+
export function getPlatformIdentifier(platform: AnyPlatform): string {
45+
switch (platform.type) {
46+
case 'web':
47+
return (platform as Models.PlatformWeb).hostname;
48+
case 'android':
49+
return (platform as Models.PlatformAndroid).applicationId;
50+
case 'apple':
51+
return (platform as Models.PlatformApple).bundleIdentifier;
52+
case 'windows':
53+
return (platform as Models.PlatformWindows).packageIdentifierName;
54+
case 'linux':
55+
return (platform as Models.PlatformLinux).packageName;
56+
default:
57+
return '';
58+
}
59+
}

src/routes/(console)/project-[region]-[project]/overview/onboard.svelte

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,11 @@
3030
import PlatformSdkImgSourceDark from './assets/platform-sdk-dark.png';
3131
import { resolve } from '$app/paths';
3232
import { isSmallViewport } from '$lib/stores/viewport';
33-
import type { Models } from '@appwrite.io/console';
34-
import { getPlatformInfo } from '$lib/helpers/platform';
33+
import {
34+
getPlatformInfo,
35+
getPlatformIdentifier,
36+
type AnyPlatform
37+
} from '$lib/helpers/platform';
3538
import { Click, trackEvent } from '$lib/actions/analytics';
3639
import { goto } from '$app/navigation';
3740
import { page } from '$app/state';
@@ -42,11 +45,11 @@
4245
platforms = []
4346
}: {
4447
pingCount: number;
45-
platforms: Array<Models.Platform>;
48+
platforms: Array<AnyPlatform>;
4649
} = $props();
4750
4851
const platformMap = $derived.by(() => {
49-
const map = new Map<string, Models.Platform>();
52+
const map = new Map<string, AnyPlatform>();
5053
platforms.forEach((platform) => {
5154
const platformInfo = getPlatformInfo(platform.type);
5255
map.set(platformInfo.name, platform);
@@ -68,9 +71,9 @@
6871
goto(`${projectRoute}/overview/api-keys/create`, { replaceState: true });
6972
}
7073
71-
function openPlatformWizard(type: Platform, platform?: Models.Platform) {
74+
function openPlatformWizard(type: Platform, platform?: AnyPlatform) {
7275
if (platform) {
73-
continuePlatform(type, platform.name, platform.key, platform.type);
76+
continuePlatform(type, platform.name, getPlatformIdentifier(platform), platform.type);
7477
} else {
7578
trackEvent(Click.PlatformCreateClick, { source: 'onboarding' });
7679
addPlatform(type);

src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte

Lines changed: 22 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import CreateWeb from './createWeb.svelte';
99
import { createPlatform } from './wizard/store';
1010
import { Click, trackEvent } from '$lib/actions/analytics';
11-
import type { PlatformType } from '@appwrite.io/console';
1211
1312
export enum Platform {
1413
Web,
@@ -31,11 +30,12 @@
3130
platform: Platform,
3231
name: string,
3332
key: string,
34-
type: PlatformType
33+
type: string
3534
) {
3635
createPlatform.set({
3736
name: name,
3837
key: key,
38+
hostname: null,
3939
type: type
4040
});
4141
@@ -84,10 +84,10 @@
8484
} from '@appwrite.io/pink-icons-svelte';
8585
import type { ComponentType } from 'svelte';
8686
import DualTimeView from '$lib/components/dualTimeView.svelte';
87+
import type { AnyPlatform } from '$lib/helpers/platform';
8788
8889
import { page } from '$app/state';
8990
import type { PageProps } from './$types';
90-
import type { Models } from '@appwrite.io/console';
9191
import {
9292
type DeleteOperationState,
9393
type DeleteOperation,
@@ -97,41 +97,32 @@
9797
import { Submit, trackError } from '$lib/actions/analytics';
9898
import { invalidate } from '$app/navigation';
9999
import { Dependencies } from '$lib/constants';
100+
import { getPlatformIdentifier } from '$lib/helpers/platform';
100101
101102
const { data }: PageProps = $props();
102103
103104
const PlatformTypes = {
104-
'apple-ios': 'iOS',
105-
'apple-macos': 'macOS',
106-
'apple-watchos': 'watchOS',
107-
'apple-tvos': 'tvOS',
108105
android: 'Android',
109-
'flutter-android': 'Android',
110-
'flutter-ios': 'iOS',
111-
'flutter-linux': 'Linux',
112-
'flutter-macos': 'macOS',
113-
'flutter-windows': 'Windows',
114-
'flutter-web': 'Web',
115-
'react-native-android': 'Android',
116-
'react-native-ios': 'iOS',
117-
web: 'Web'
106+
apple: 'Apple',
107+
web: 'Web',
108+
windows: 'Windows',
109+
linux: 'Linux'
118110
} as const;
119111
120-
function getPlatformInfo(platform: string): ComponentType {
121-
if (platform.includes('flutter')) {
122-
return IconFlutter;
123-
} else if (platform.includes('react-native')) {
124-
return IconReact;
125-
} else if (platform.includes('apple')) {
126-
return IconApple;
127-
} else if (platform.includes('android')) {
128-
return IconAndroid;
129-
} else {
130-
return IconCode;
112+
function getPlatformIcon(platform: string): ComponentType {
113+
switch (platform) {
114+
case 'apple':
115+
return IconApple;
116+
case 'android':
117+
return IconAndroid;
118+
case 'web':
119+
return IconCode;
120+
default:
121+
return IconCode;
131122
}
132123
}
133124
134-
function getPlatformPath(platform: Models.Platform) {
125+
function getPlatformPath(platform: AnyPlatform) {
135126
return resolve('/(console)/project-[region]-[project]/overview/platforms/[platform]', {
136127
region: page.params.region,
137128
project: page.params.project,
@@ -143,8 +134,7 @@
143134
batchDelete: DeleteOperation
144135
): Promise<DeleteOperationState> {
145136
const result = await batchDelete((platformId) =>
146-
sdk.forConsole.projects.deletePlatform({
147-
projectId: page.params.project,
137+
sdk.forProject(page.params.region, page.params.project).project.deletePlatform({
148138
platformId
149139
})
150140
);
@@ -187,16 +177,12 @@
187177
</Table.Cell>
188178
<Table.Cell {root}>
189179
<Layout.Stack direction="row" gap="s" alignItems="center">
190-
<Icon icon={getPlatformInfo(platform.type)} />
180+
<Icon icon={getPlatformIcon(platform.type)} />
191181
{PlatformTypes[platform.type]}
192182
</Layout.Stack>
193183
</Table.Cell>
194184
<Table.Cell {root}>
195-
{#if platform.type.includes('web') || platform.type === 'web'}
196-
{platform.hostname || ''}
197-
{:else}
198-
{platform.key || platform.hostname || ''}
199-
{/if}
185+
{getPlatformIdentifier(platform) || ''}
200186
</Table.Cell>
201187
<Table.Cell {root}>
202188
{#if platform.$updatedAt}

src/routes/(console)/project-[region]-[project]/overview/platforms/[platform]/+page.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ export const load: PageLoad = async ({ params, depends }) => {
1010
return {
1111
header: Header,
1212
breadcrumbs: Breadcrumbs,
13-
platform: await sdk.forConsole.projects.getPlatform({
14-
projectId: params.project,
13+
platform: await sdk.forProject(params.region, params.project).project.getPlatform({
1514
platformId: params.platform
1615
})
1716
};

0 commit comments

Comments
 (0)