diff --git a/package.json b/package.json
index b6069da58f..059aaee069 100644
--- a/package.json
+++ b/package.json
@@ -19,7 +19,7 @@
"e2e:ui": "playwright test tests/e2e --ui"
},
"dependencies": {
- "@appwrite.io/console": "1.5.2",
+ "@appwrite.io/console": "https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@1641",
"@appwrite.io/pink": "0.25.0",
"@appwrite.io/pink-icons": "0.25.0",
"@popperjs/core": "^2.11.8",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index dc75b7bce2..8601156a95 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -12,8 +12,8 @@ importers:
specifier: ^1.1.22
version: 1.1.22(svelte@4.2.19)(zod@3.24.2)
'@appwrite.io/console':
- specifier: 1.5.2
- version: 1.5.2
+ specifier: https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@1641
+ version: https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@1641
'@appwrite.io/pink':
specifier: 0.25.0
version: 0.25.0
@@ -230,8 +230,9 @@ packages:
'@analytics/type-utils@0.6.2':
resolution: {integrity: sha512-TD+xbmsBLyYy/IxFimW/YL/9L2IEnM7/EoV9Aeh56U64Ify8o27HJcKjo38XY9Tcn0uOq1AX3thkKgvtWvwFQg==}
- '@appwrite.io/console@1.5.2':
- resolution: {integrity: sha512-9nNZzxoQcpm5C5pKlGJLWxsEJ4sr5mdt01Hg6M8QpfMtsRe0gjaPa7WGrGBepRnZVKPDNpozh3Hua7nqgx4aEA==}
+ '@appwrite.io/console@https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@1641':
+ resolution: {tarball: https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@1641}
+ version: 1.4.1
'@appwrite.io/pink-icons@0.25.0':
resolution: {integrity: sha512-0O3i2oEuh5mWvjO80i+X6rbzrWLJ1m5wmv2/M3a1p2PyBJsFxN8xQMTEmTn3Wl/D26SsM7SpzbdW6gmfgoVU9Q==}
@@ -3796,7 +3797,7 @@ snapshots:
'@analytics/type-utils@0.6.2': {}
- '@appwrite.io/console@1.5.2': {}
+ '@appwrite.io/console@https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@1641': {}
'@appwrite.io/pink-icons@0.25.0': {}
diff --git a/src/lib/actions/analytics.ts b/src/lib/actions/analytics.ts
index 260cffe519..0b7ba43027 100644
--- a/src/lib/actions/analytics.ts
+++ b/src/lib/actions/analytics.ts
@@ -252,6 +252,10 @@ export enum Submit {
KeyUpdateName = 'submit_key_update_name',
KeyUpdateScopes = 'submit_key_update_scopes',
KeyUpdateExpire = 'submit_key_update_expire',
+ DevKeyCreate = 'submit_dev_key_create',
+ DevKeyDelete = 'submit_dev_key_delete',
+ DevKeyUpdateName = 'submit_dev_key_update_name',
+ DevKeyUpdateExpire = 'submit_dev_key_update_expire',
PlatformCreate = 'submit_platform_create',
PlatformDelete = 'submit_platform_delete',
PlatformUpdate = 'submit_platform_update',
diff --git a/src/lib/constants.ts b/src/lib/constants.ts
index 00ee09df31..b089e8b8ed 100644
--- a/src/lib/constants.ts
+++ b/src/lib/constants.ts
@@ -46,6 +46,8 @@ export enum Dependencies {
PLATFORMS = 'dependency:platforms',
KEY = 'dependency:key',
KEYS = 'dependency:keys',
+ DEV_KEY = 'dependency:dev_key',
+ DEV_KEYS = 'dependency:dev_keys',
DOMAINS = 'dependency:domains',
WEBHOOK = 'dependency:webhook',
WEBHOOKS = 'dependency:webhooks',
diff --git a/src/routes/(console)/project-[project]/overview/+layout.svelte b/src/routes/(console)/project-[project]/overview/+layout.svelte
index d0f59d1fc0..6fbf04ccde 100644
--- a/src/routes/(console)/project-[project]/overview/+layout.svelte
+++ b/src/routes/(console)/project-[project]/overview/+layout.svelte
@@ -27,6 +27,7 @@
import type { Metric } from '$lib/sdk/usage';
import { periodToDates } from '$lib/layout/usage.svelte';
import { canWriteProjects } from '$lib/stores/roles';
+ import { createDevKey } from '$routes/(console)/project-[project]/overview/dev-keys/+page.svelte';
$: projectId = $page.params.project;
$: path = `${base}/project-${projectId}/overview`;
@@ -69,6 +70,16 @@
keys: ['c', 'k'],
group: 'integrations',
disabled: !$canWriteProjects
+ },
+ {
+ label: 'Create Dev Key',
+ icon: 'plus',
+ callback() {
+ createDevKey();
+ },
+ keys: ['c', 'd', 'k'],
+ group: 'integrations',
+ disabled: !$canWriteProjects
}
]);
@@ -227,6 +238,10 @@
href={`${path}/keys`}
selected={$page.url.pathname === `${path}/keys`}
event="keys">API keys
+ Dev keys
diff --git a/src/routes/(console)/project-[project]/overview/keys/checkbox.svelte b/src/routes/(console)/project-[project]/overview/components/checkbox.svelte
similarity index 100%
rename from src/routes/(console)/project-[project]/overview/keys/checkbox.svelte
rename to src/routes/(console)/project-[project]/overview/components/checkbox.svelte
diff --git a/src/routes/(console)/project-[project]/overview/components/delete.svelte b/src/routes/(console)/project-[project]/overview/components/delete.svelte
new file mode 100644
index 0000000000..3070197598
--- /dev/null
+++ b/src/routes/(console)/project-[project]/overview/components/delete.svelte
@@ -0,0 +1,66 @@
+
+
+
+ The {resourceType} key will be permanently deleted. This action is irreversible.
+
+
+
+
+
+
diff --git a/src/routes/(console)/project-[project]/overview/keys/expirationInput.svelte b/src/routes/(console)/project-[project]/overview/components/expirationInput.svelte
similarity index 80%
rename from src/routes/(console)/project-[project]/overview/keys/expirationInput.svelte
rename to src/routes/(console)/project-[project]/overview/components/expirationInput.svelte
index 843cc9f3d4..bd60a1b431 100644
--- a/src/routes/(console)/project-[project]/overview/keys/expirationInput.svelte
+++ b/src/routes/(console)/project-[project]/overview/components/expirationInput.svelte
@@ -19,7 +19,7 @@
return date.toISOString();
}
- const options = [
+ const defaultOptions = [
{
label: 'Never',
value: null
@@ -46,10 +46,30 @@
}
];
+ const limitedOptions = [
+ {
+ label: '1 Day',
+ value: incrementToday(1, 'day')
+ },
+ {
+ label: '7 Days',
+ value: incrementToday(7, 'day')
+ },
+ {
+ label: '30 days',
+ value: incrementToday(30, 'day')
+ }
+ ];
+
export let value: string | null = null;
+ export let resourceType: 'API' | 'Dev' = 'API';
+
+ const options = resourceType === 'API' ? defaultOptions : limitedOptions;
function initExpirationSelect() {
- if (value === null || !isValidDate(value)) return null;
+ if (value === null || !isValidDate(value)) {
+ return options[0]?.value ?? null;
+ }
let result = 'custom';
for (const option of options) {
diff --git a/src/routes/(console)/project-[project]/overview/components/updateExpirationDate.svelte b/src/routes/(console)/project-[project]/overview/components/updateExpirationDate.svelte
new file mode 100644
index 0000000000..0a14b1f124
--- /dev/null
+++ b/src/routes/(console)/project-[project]/overview/components/updateExpirationDate.svelte
@@ -0,0 +1,48 @@
+
+
+
diff --git a/src/routes/(console)/project-[project]/overview/dev-keys/+page.svelte b/src/routes/(console)/project-[project]/overview/dev-keys/+page.svelte
new file mode 100644
index 0000000000..54699cfa65
--- /dev/null
+++ b/src/routes/(console)/project-[project]/overview/dev-keys/+page.svelte
@@ -0,0 +1,74 @@
+
+
+
+
+
+ Dev keys
+ {#if $canWriteKeys}
+
+
+
+ {/if}
+
+
+{#if data.devKeys.total}
+
+
+ Name
+ last accessed
+ expiration date
+
+
+ {#each data.devKeys.keys as key}
+
+
+ {key.name}
+
+
+ {key.accessedAt ? toLocaleDate(key.accessedAt) : 'never'}
+
+
+ {key.expire ? toLocaleDateTime(key.expire) : 'never'}
+
+
+ {/each}
+
+
+{:else}
+
+
+{/if}
diff --git a/src/routes/(console)/project-[project]/overview/dev-keys/+page.ts b/src/routes/(console)/project-[project]/overview/dev-keys/+page.ts
new file mode 100644
index 0000000000..5f7e3e6238
--- /dev/null
+++ b/src/routes/(console)/project-[project]/overview/dev-keys/+page.ts
@@ -0,0 +1,13 @@
+import { Dependencies } from '$lib/constants';
+import { sdk } from '$lib/stores/sdk';
+import { selectedTab } from '../store';
+import type { PageLoad } from './$types';
+
+selectedTab.set('dev-keys');
+
+export const load: PageLoad = async ({ params, depends }) => {
+ depends(Dependencies.DEV_KEYS);
+ return {
+ devKeys: await sdk.forConsole.projects.listDevKeys(params.project)
+ };
+};
diff --git a/src/routes/(console)/project-[project]/overview/dev-keys/[key]/+page.ts b/src/routes/(console)/project-[project]/overview/dev-keys/[key]/+page.ts
new file mode 100644
index 0000000000..b47b352d06
--- /dev/null
+++ b/src/routes/(console)/project-[project]/overview/dev-keys/[key]/+page.ts
@@ -0,0 +1,23 @@
+import Header from './header.svelte';
+import Breadcrumbs from './breadcrumbs.svelte';
+import { sdk } from '$lib/stores/sdk';
+import { Dependencies } from '$lib/constants';
+import type { PageLoad } from './$types';
+
+export const load: PageLoad = async ({ params, depends }) => {
+ depends(Dependencies.DEV_KEY);
+
+ const devKey = await sdk.forConsole.projects.getDevKey(params.project, params.key);
+
+ if (devKey.expire) {
+ devKey.expire = new Date(devKey.expire).toISOString().slice(0, 23);
+ } else {
+ devKey.expire = undefined;
+ }
+
+ return {
+ devKey,
+ header: Header,
+ breadcrumbs: Breadcrumbs
+ };
+};
diff --git a/src/routes/(console)/project-[project]/overview/dev-keys/[key]/+page@project-[project].svelte b/src/routes/(console)/project-[project]/overview/dev-keys/[key]/+page@project-[project].svelte
new file mode 100644
index 0000000000..1ae5a0ba0b
--- /dev/null
+++ b/src/routes/(console)/project-[project]/overview/dev-keys/[key]/+page@project-[project].svelte
@@ -0,0 +1,142 @@
+
+
+
+ Dev key - Appwrite
+
+
+
+ {@const accessedAt = $devKey.accessedAt ? toLocaleDate($devKey.accessedAt) : 'never'}
+
+
+ {$devKey.name}
+
+
+
+ Last accessed: {accessedAt}
+
+
+
+
+
+ Dev key secret
+
+
+
+
+
+
+
+
+
+
+
+ Delete Dev key
+
+ The Dev key will be permanently deleted. This action is irreversible.
+
+
+
+
+
{$devKey.name}
+
Last accessed: {accessedAt}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/routes/(console)/project-[project]/overview/dev-keys/[key]/breadcrumbs.svelte b/src/routes/(console)/project-[project]/overview/dev-keys/[key]/breadcrumbs.svelte
new file mode 100644
index 0000000000..a1a2f9f7c6
--- /dev/null
+++ b/src/routes/(console)/project-[project]/overview/dev-keys/[key]/breadcrumbs.svelte
@@ -0,0 +1,28 @@
+
+
+
diff --git a/src/routes/(console)/project-[project]/overview/dev-keys/[key]/header.svelte b/src/routes/(console)/project-[project]/overview/dev-keys/[key]/header.svelte
new file mode 100644
index 0000000000..54e1f51c56
--- /dev/null
+++ b/src/routes/(console)/project-[project]/overview/dev-keys/[key]/header.svelte
@@ -0,0 +1,18 @@
+
+
+
+
+
+ {$devKey?.name}
+
+ Dev key secret
+
+
diff --git a/src/routes/(console)/project-[project]/overview/dev-keys/[key]/store.ts b/src/routes/(console)/project-[project]/overview/dev-keys/[key]/store.ts
new file mode 100644
index 0000000000..c2da2a1610
--- /dev/null
+++ b/src/routes/(console)/project-[project]/overview/dev-keys/[key]/store.ts
@@ -0,0 +1,5 @@
+import { derived } from 'svelte/store';
+import { page } from '$app/stores';
+import type { Models } from '@appwrite.io/console';
+
+export const devKey = derived(page, ($page) => $page.data.devKey as Models.DevKey);
diff --git a/src/routes/(console)/project-[project]/overview/dev-keys/wizard.svelte b/src/routes/(console)/project-[project]/overview/dev-keys/wizard.svelte
new file mode 100644
index 0000000000..fb23bb50a4
--- /dev/null
+++ b/src/routes/(console)/project-[project]/overview/dev-keys/wizard.svelte
@@ -0,0 +1,48 @@
+
+
+
diff --git a/src/routes/(console)/project-[project]/overview/dev-keys/wizard/step1.svelte b/src/routes/(console)/project-[project]/overview/dev-keys/wizard/step1.svelte
new file mode 100644
index 0000000000..5c631ab577
--- /dev/null
+++ b/src/routes/(console)/project-[project]/overview/dev-keys/wizard/step1.svelte
@@ -0,0 +1,22 @@
+
+
+
+ Dev key
+
+ Test your app without rate limits and more detailed error messages.
+
+
+
+
+
+
diff --git a/src/routes/(console)/project-[project]/overview/keys/[key]/+page.ts b/src/routes/(console)/project-[project]/overview/keys/[key]/+page.ts
index e235ed2d60..3b8b7b0b57 100644
--- a/src/routes/(console)/project-[project]/overview/keys/[key]/+page.ts
+++ b/src/routes/(console)/project-[project]/overview/keys/[key]/+page.ts
@@ -7,16 +7,16 @@ import type { PageLoad } from './$types';
export const load: PageLoad = async ({ params, depends }) => {
depends(Dependencies.KEY);
- const key = await sdk.forConsole.projects.getKey(params.project, params.key);
- if (key.expire) {
- key.expire = new Date(key.expire).toISOString().slice(0, 23);
+ const apiKey = await sdk.forConsole.projects.getKey(params.project, params.key);
+ if (apiKey.expire) {
+ apiKey.expire = new Date(apiKey.expire).toISOString().slice(0, 23);
} else {
- key.expire = undefined;
+ apiKey.expire = undefined;
}
return {
+ apiKey,
header: Header,
- breadcrumbs: Breadcrumbs,
- key
+ breadcrumbs: Breadcrumbs
};
};
diff --git a/src/routes/(console)/project-[project]/overview/keys/[key]/+page@project-[project].svelte b/src/routes/(console)/project-[project]/overview/keys/[key]/+page@project-[project].svelte
index bbf1c1b6e0..820141f486 100644
--- a/src/routes/(console)/project-[project]/overview/keys/[key]/+page@project-[project].svelte
+++ b/src/routes/(console)/project-[project]/overview/keys/[key]/+page@project-[project].svelte
@@ -12,9 +12,9 @@
import { onMount } from 'svelte';
import { project } from '../../../store';
import Scopes from '../scopes.svelte';
- import Delete from './delete.svelte';
- import { key } from './store';
- import UpdateExpirationDate from './updateExpirationDate.svelte';
+ import { apiKey } from './store';
+ import Delete from '../../components/delete.svelte';
+ import UpdateExpirationDate from '../../components/updateExpirationDate.svelte';
let showDelete = false;
let name: string = null;
@@ -22,19 +22,43 @@
let scopes: string[] = null;
onMount(() => {
- name ??= $key.name;
- secret ??= $key.secret;
- scopes ??= $key.scopes;
+ name ??= $apiKey.name;
+ secret ??= $apiKey.secret;
+ scopes ??= $apiKey.scopes;
});
+ async function updateExpire() {
+ try {
+ await sdk.forConsole.projects.updateKey(
+ $project.$id,
+ $apiKey.$id,
+ $apiKey.name,
+ $apiKey.scopes,
+ $apiKey.expire
+ );
+ await invalidate(Dependencies.KEY);
+ trackEvent(Submit.KeyUpdateExpire);
+ addNotification({
+ type: 'success',
+ message: 'API key expiration has been updated'
+ });
+ } catch (error) {
+ addNotification({
+ type: 'error',
+ message: error.message
+ });
+ trackError(error, Submit.KeyUpdateExpire);
+ }
+ }
+
async function updateName() {
try {
await sdk.forConsole.projects.updateKey(
$project.$id,
- $key.$id,
+ $apiKey.$id,
name,
- $key.scopes,
- $key.expire
+ $apiKey.scopes,
+ $apiKey.expire
);
await invalidate(Dependencies.KEY);
trackEvent(Submit.KeyUpdateName);
@@ -55,10 +79,10 @@
try {
await sdk.forConsole.projects.updateKey(
$project.$id,
- $key.$id,
- $key.name,
+ $apiKey.$id,
+ $apiKey.name,
scopes,
- $key.expire
+ $apiKey.expire
);
await invalidate(Dependencies.KEY);
trackEvent(Submit.KeyUpdateScopes, {
@@ -83,15 +107,15 @@
- {@const accessedAt = $key.accessedAt ? toLocaleDate($key.accessedAt) : 'never'}
+ {@const accessedAt = $apiKey.accessedAt ? toLocaleDate($apiKey.accessedAt) : 'never'}
- {$key.name}
+ {$apiKey.name}
Last accessed: {accessedAt}
- Scopes granted: {$key.scopes.length}
+ Scopes granted: {$apiKey.scopes.length}
@@ -119,7 +143,7 @@
-
+
@@ -140,13 +164,13 @@
+ $apiKey?.scopes &&
+ !symmetricDifference(scopes, $apiKey.scopes).length}>Update
-
+
@@ -157,7 +181,7 @@
-
{$key.name}
+
{$apiKey.name}
Last accessed: {accessedAt}
@@ -170,4 +194,4 @@
-
+
diff --git a/src/routes/(console)/project-[project]/overview/keys/[key]/breadcrumbs.svelte b/src/routes/(console)/project-[project]/overview/keys/[key]/breadcrumbs.svelte
index 426594191e..7971aeb78a 100644
--- a/src/routes/(console)/project-[project]/overview/keys/[key]/breadcrumbs.svelte
+++ b/src/routes/(console)/project-[project]/overview/keys/[key]/breadcrumbs.svelte
@@ -3,7 +3,7 @@
import { Breadcrumbs } from '$lib/layout';
import { organization } from '$lib/stores/organization';
import { project } from '../../../store';
- import { key } from './store';
+ import { apiKey } from './store';
$: breadcrumbs = [
{
@@ -19,8 +19,8 @@
title: 'API keys'
},
{
- href: `${base}/project-${$project?.$id}/overview/keys/${$key?.$id}`,
- title: $key?.name
+ href: `${base}/project-${$project?.$id}/overview/keys/${$apiKey?.$id}`,
+ title: $apiKey?.name
}
];
diff --git a/src/routes/(console)/project-[project]/overview/keys/[key]/delete.svelte b/src/routes/(console)/project-[project]/overview/keys/[key]/delete.svelte
deleted file mode 100644
index cbf3d0b7da..0000000000
--- a/src/routes/(console)/project-[project]/overview/keys/[key]/delete.svelte
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
- The API key will be permanently deleted. This action is irreversible.
-
-
-
-
-
-
diff --git a/src/routes/(console)/project-[project]/overview/keys/[key]/header.svelte b/src/routes/(console)/project-[project]/overview/keys/[key]/header.svelte
index 09259d5588..9e28e510c7 100644
--- a/src/routes/(console)/project-[project]/overview/keys/[key]/header.svelte
+++ b/src/routes/(console)/project-[project]/overview/keys/[key]/header.svelte
@@ -3,7 +3,7 @@
import { page } from '$app/stores';
import { Id } from '$lib/components';
import { Cover, CoverTitle } from '$lib/layout';
- import { key } from './store';
+ import { apiKey } from './store';
const projectId = $page.params.project;
@@ -11,8 +11,8 @@
- {$key?.name}
+ {$apiKey?.name}
- API key secret
+ API key secret
diff --git a/src/routes/(console)/project-[project]/overview/keys/[key]/store.ts b/src/routes/(console)/project-[project]/overview/keys/[key]/store.ts
index dc984c86ca..bfdff943cc 100644
--- a/src/routes/(console)/project-[project]/overview/keys/[key]/store.ts
+++ b/src/routes/(console)/project-[project]/overview/keys/[key]/store.ts
@@ -2,4 +2,4 @@ import { derived } from 'svelte/store';
import { page } from '$app/stores';
import type { Models } from '@appwrite.io/console';
-export const key = derived(page, ($page) => $page.data.key as Models.Key);
+export const apiKey = derived(page, ($page) => $page.data.apiKey as Models.Key);
diff --git a/src/routes/(console)/project-[project]/overview/keys/[key]/updateExpirationDate.svelte b/src/routes/(console)/project-[project]/overview/keys/[key]/updateExpirationDate.svelte
deleted file mode 100644
index 2a819a37aa..0000000000
--- a/src/routes/(console)/project-[project]/overview/keys/[key]/updateExpirationDate.svelte
+++ /dev/null
@@ -1,74 +0,0 @@
-
-
-
diff --git a/src/routes/(console)/project-[project]/overview/keys/scopes.svelte b/src/routes/(console)/project-[project]/overview/keys/scopes.svelte
index 946de6153a..31b7ff9839 100644
--- a/src/routes/(console)/project-[project]/overview/keys/scopes.svelte
+++ b/src/routes/(console)/project-[project]/overview/keys/scopes.svelte
@@ -4,7 +4,7 @@
import { scopes as allScopes } from '$lib/constants';
import { onMount } from 'svelte';
import { symmetricDifference } from '$lib/helpers/array';
- import Checkbox from './checkbox.svelte';
+ import Checkbox from '../components/checkbox.svelte';
export let scopes: string[];
@@ -96,7 +96,7 @@
onCategoryChange(e, category)} />
diff --git a/src/routes/(console)/project-[project]/overview/keys/wizard.svelte b/src/routes/(console)/project-[project]/overview/keys/wizard.svelte
index e6c6701fae..badb10c303 100644
--- a/src/routes/(console)/project-[project]/overview/keys/wizard.svelte
+++ b/src/routes/(console)/project-[project]/overview/keys/wizard.svelte
@@ -4,7 +4,7 @@
import type { WizardStepsType } from '$lib/layout/wizard.svelte';
import Step1 from './wizard/step1.svelte';
import Step2 from './wizard/step2.svelte';
- import { key } from './wizard/store';
+ import { apiKey } from '../store';
import { sdk } from '$lib/stores/sdk';
import { page } from '$app/stores';
import { addNotification } from '$lib/stores/notifications';
@@ -18,15 +18,15 @@
try {
const { $id } = await sdk.forConsole.projects.createKey(
$page.params.project,
- $key.name,
- $key.scopes,
- $key.expire || undefined
+ $apiKey.name,
+ $apiKey.scopes,
+ $apiKey.expire || undefined
);
if ($onboarding) {
await invalidate(Dependencies.PROJECT);
}
trackEvent(Submit.KeyCreate, {
- scopes: $key.scopes
+ scopes: $apiKey.scopes
});
goto(`${base}/project-${$page.params.project}/overview/keys/${$id}`);
} catch (error) {
@@ -39,7 +39,7 @@
}
onDestroy(() => {
- key.reset();
+ apiKey.reset();
});
const stepsComponents: WizardStepsType = new Map();
diff --git a/src/routes/(console)/project-[project]/overview/keys/wizard/step1.svelte b/src/routes/(console)/project-[project]/overview/keys/wizard/step1.svelte
index cb53ed0346..8b1c3019c0 100644
--- a/src/routes/(console)/project-[project]/overview/keys/wizard/step1.svelte
+++ b/src/routes/(console)/project-[project]/overview/keys/wizard/step1.svelte
@@ -1,8 +1,8 @@
@@ -14,7 +14,7 @@
label="Name"
placeholder="API key name"
required
- bind:value={$key.name} />
-
+ bind:value={$apiKey.name} />
+
diff --git a/src/routes/(console)/project-[project]/overview/keys/wizard/step2.svelte b/src/routes/(console)/project-[project]/overview/keys/wizard/step2.svelte
index 383a8d4262..ada219a88b 100644
--- a/src/routes/(console)/project-[project]/overview/keys/wizard/step2.svelte
+++ b/src/routes/(console)/project-[project]/overview/keys/wizard/step2.svelte
@@ -1,8 +1,8 @@
@@ -12,6 +12,6 @@
the permissions you need to meet your project goals.
-
+
diff --git a/src/routes/(console)/project-[project]/overview/keys/wizard/store.ts b/src/routes/(console)/project-[project]/overview/keys/wizard/store.ts
deleted file mode 100644
index 49f23c0e91..0000000000
--- a/src/routes/(console)/project-[project]/overview/keys/wizard/store.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { writable } from 'svelte/store';
-import type { Models } from '@appwrite.io/console';
-
-function createKeyStore() {
- const { subscribe, update, set } = writable>({
- name: null,
- expire: null,
- scopes: []
- });
-
- return {
- subscribe,
- update,
- set,
- reset() {
- set({
- name: null,
- expire: null,
- scopes: []
- });
- }
- };
-}
-
-export const key = createKeyStore();
diff --git a/src/routes/(console)/project-[project]/overview/onboard.svelte b/src/routes/(console)/project-[project]/overview/onboard.svelte
index 677258ccc6..6ac8cea3d9 100644
--- a/src/routes/(console)/project-[project]/overview/onboard.svelte
+++ b/src/routes/(console)/project-[project]/overview/onboard.svelte
@@ -10,9 +10,11 @@
import OnboardLight2Mobile from './onboard-2-light-mobile.svg';
import { app } from '$lib/stores/app';
import { wizard } from '$lib/stores/wizard';
- import Wizard from './keys/wizard.svelte';
+ import ApiKeyWizard from './keys/wizard.svelte';
+ import DevKeyWizard from './dev-keys/wizard.svelte';
import { canWriteKeys, canWritePlatforms } from '$lib/stores/roles';
import { base } from '$app/paths';
+ import { keyType } from './store';
export let projectId: string;
@@ -44,8 +46,9 @@
}
];
- function createKey() {
- wizard.start(Wizard);
+ function createKey(isDev: boolean = false) {
+ keyType.set(!isDev ? 'api' : 'dev');
+ wizard.start(!isDev ? ApiKeyWizard : DevKeyWizard);
}
$: onBoardImage1Mobile = $app.themeInUse === 'dark' ? OnboardDark1Mobile : OnboardLight1Mobile;
@@ -121,7 +124,7 @@