diff --git a/src/lib/components/pagination.svelte b/src/lib/components/pagination.svelte index f3b8218d6..12d48afb3 100644 --- a/src/lib/components/pagination.svelte +++ b/src/lib/components/pagination.svelte @@ -69,7 +69,7 @@ + href="https://appwrite.io/docs/server/authentication?sdk=nodejs-default#usersGetsessions"> + Documentation + {/if}

Total results: {$accountSession?.total}

- +
diff --git a/src/routes/console/organization-[organization]/+page.svelte b/src/routes/console/organization-[organization]/+page.svelte index 4373a820c..7788eba71 100644 --- a/src/routes/console/organization-[organization]/+page.svelte +++ b/src/routes/console/organization-[organization]/+page.svelte @@ -14,8 +14,8 @@ import CreateProject from './_createProject.svelte'; import { cardLimit } from '$lib/stores/layout'; import CardContainer from '$lib/components/cardContainer.svelte'; + import { createPersistentPagination } from '$lib/stores/pagination'; - let projects: Models.Project[] = []; $: organizationId = $page.params.organization; onMount(handle); @@ -23,7 +23,7 @@ async function handle() { await projectList.load([ - Query.offset(offset), + Query.offset($offset), Query.limit($cardLimit), Query.equal('teamId', organizationId) ]); @@ -31,7 +31,7 @@ let showCreate = false; let addOrganization = false; - let offset = 0; + const offset = createPersistentPagination($cardLimit); const projectCreated = async (event: CustomEvent) => { await project.load(event.detail.$id); @@ -79,9 +79,12 @@ {#if $projectList?.total} - (showCreate = true)}> + (showCreate = true)}> {#each $projectList.projects as project, index} - {#if index >= offset && index < $cardLimit + offset} + {#if index >= $offset && index < $cardLimit + $offset} {project?.platforms?.length ? project?.platforms?.length : 'No'} apps @@ -113,20 +116,15 @@

Create a new project

- -
-

Total results: {$projectList.total}

- -
{:else} (showCreate = true)}>

Create a new project

-
-

Total results: {projects?.length}

- -
{/if} +
+

Total results: {$projectList?.total}

+ +
diff --git a/src/routes/console/organization-[organization]/members/+page.svelte b/src/routes/console/organization-[organization]/members/+page.svelte index 0a7c14ee8..623fd70c5 100644 --- a/src/routes/console/organization-[organization]/members/+page.svelte +++ b/src/routes/console/organization-[organization]/members/+page.svelte @@ -19,18 +19,22 @@ import { pageLimit } from '$lib/stores/layout'; import { page } from '$app/stores'; import { addNotification } from '$lib/stores/notifications'; + import { createPersistentPagination } from '$lib/stores/pagination'; let search = ''; - let offset = 0; - let selectedMember: Models.Membership; let showDelete = false; const url = `${$page.url.origin}/console/`; + const offset = createPersistentPagination($pageLimit); const getAvatar = (name: string) => sdkForConsole.avatars.getInitials(name, 120, 120).toString(); const deleted = () => - memberList.load($organization.$id, [Query.limit($pageLimit), Query.offset(offset)], search); + memberList.load( + $organization.$id, + [Query.limit($pageLimit), Query.offset($offset)], + search + ); const resend = async (member: Models.Membership) => { try { await sdkForConsole.teams.createMembership( @@ -52,8 +56,8 @@ } }; - $: if (search) offset = 0; - $: memberList.load($organization.$id, [Query.limit($pageLimit), Query.offset(offset)], search); + $: if (search) $offset = 0; + $: memberList.load($organization.$id, [Query.limit($pageLimit), Query.offset($offset)], search); @@ -61,10 +65,7 @@

Members

- @@ -86,8 +87,9 @@ size={40} src={getAvatar(member.userName)} name={member.userName} /> - {member.userName ? member.userName : 'n/a'} + + {member.userName ? member.userName : 'n/a'} + {#if member.invited && !member.joined} Pending {/if} @@ -120,7 +122,7 @@

Total results: {$memberList.total}

- +
{/if} diff --git a/src/routes/console/project-[project]/authentication/+page.svelte b/src/routes/console/project-[project]/authentication/+page.svelte index 27daffdee..c3350a8d8 100644 --- a/src/routes/console/project-[project]/authentication/+page.svelte +++ b/src/routes/console/project-[project]/authentication/+page.svelte @@ -22,10 +22,11 @@ import { usersList } from './store'; import { Query, type Models } from '@aw-labs/appwrite-console'; import { pageLimit } from '$lib/stores/layout'; + import { createPersistentPagination } from '$lib/stores/pagination'; let showCreate = false; let search = ''; - let offset = 0; + const offset = createPersistentPagination($pageLimit); const project = $page.params.project; const getAvatar = (name: string) => sdkForProject.avatars.getInitials(name, 32, 32).toString(); @@ -33,9 +34,9 @@ await goto(`${base}/console/project-${project}/authentication/user/${event.detail.$id}`); }; - $: if (search) offset = 0; + $: if (search) $offset = 0; $: usersList.load( - [Query.limit($pageLimit), Query.offset(offset), Query.orderDesc('$createdAt')], + [Query.limit($pageLimit), Query.offset($offset), Query.orderDesc('$createdAt')], search ); @@ -126,7 +127,7 @@

Total results: {$usersList.total}

- +
{:else if search} diff --git a/src/routes/console/project-[project]/authentication/_appleOAuth.svelte b/src/routes/console/project-[project]/authentication/_appleOAuth.svelte index 2b1dc4926..181236ece 100644 --- a/src/routes/console/project-[project]/authentication/_appleOAuth.svelte +++ b/src/routes/console/project-[project]/authentication/_appleOAuth.svelte @@ -12,23 +12,37 @@ import { addNotification } from '$lib/stores/notifications'; import { sdkForConsole } from '$lib/stores/sdk'; import type { Provider } from '$lib/stores/oauth-providers'; + import { onMount } from 'svelte'; export let showModal = false; export let provider: Provider; - let { keyID, teamID, p8 } = JSON.parse(provider.secret); + let id: string = null; + let active = false; + let keyID: string = null; + let teamID: string = null; + let p8: string = null; + + onMount(() => { + id ??= provider.id; + active ??= provider.active; + if (provider.secret) ({ keyID, teamID, p8 } = JSON.parse(provider.secret)); + }); + let error: string; const projectId = $page.params.project; const update = async () => { try { - const secret = JSON.stringify({ keyID, teamID, p8 }); await sdkForConsole.projects.updateOAuth2( projectId, provider.name.toLowerCase(), - provider.id, + id, secret ); + provider.active = active; + provider.id = id; + provider.secret = secret; showModal = false; addNotification({ type: 'success', @@ -40,9 +54,11 @@ error = message; } }; + + $: secret = keyID && teamID && p8 ? JSON.stringify({ keyID, teamID, p8 }) : provider.secret; -
+ {provider.name} OAuth2 Settings @@ -53,16 +69,13 @@ visit the docs.

- + + bind:value={id} /> @@ -79,7 +92,12 @@
- +
diff --git a/src/routes/console/project-[project]/authentication/_auth0OAuth.svelte b/src/routes/console/project-[project]/authentication/_auth0OAuth.svelte index 869907614..8a07aed3c 100644 --- a/src/routes/console/project-[project]/authentication/_auth0OAuth.svelte +++ b/src/routes/console/project-[project]/authentication/_auth0OAuth.svelte @@ -12,23 +12,35 @@ import { sdkForConsole } from '$lib/stores/sdk'; import type { Provider } from '$lib/stores/oauth-providers'; import { addNotification } from '$lib/stores/notifications'; + import { onMount } from 'svelte'; export let showModal = false; export let provider: Provider; - let { clientSecret, auth0Domain } = JSON.parse(provider.secret); + let id: string = null; + let active = false; + let clientSecret: string = null; + let auth0Domain: string = null; let error: string; + onMount(() => { + id ??= provider.id; + active ??= provider.active; + if (provider.secret) ({ clientSecret, auth0Domain } = JSON.parse(provider.secret)); + }); + const projectId = $page.params.project; const update = async () => { try { - const secret = JSON.stringify({ clientSecret, auth0Domain }); await sdkForConsole.projects.updateOAuth2( projectId, provider.name.toLowerCase(), - provider.id, + id, secret ); + provider.active = active; + provider.id = id; + provider.secret = secret; showModal = false; addNotification({ type: 'success', @@ -40,9 +52,14 @@ error = message; } }; + + $: secret = + clientSecret && auth0Domain + ? JSON.stringify({ clientSecret, auth0Domain }) + : provider.secret; -
+ {provider.name} OAuth2 Settings @@ -52,20 +69,18 @@ visit the docs.

- + + bind:value={id} /> - +
diff --git a/src/routes/console/project-[project]/authentication/_mainOAuth.svelte b/src/routes/console/project-[project]/authentication/_mainOAuth.svelte index cf0495456..5c6074b32 100644 --- a/src/routes/console/project-[project]/authentication/_mainOAuth.svelte +++ b/src/routes/console/project-[project]/authentication/_mainOAuth.svelte @@ -12,12 +12,22 @@ import { sdkForConsole } from '$lib/stores/sdk'; import type { Provider } from '$lib/stores/oauth-providers'; import { addNotification } from '$lib/stores/notifications'; + import { onMount } from 'svelte'; export let showModal = false; export let provider: Provider; const projectId = $page.params.project; + let active = false; + let id: string = null; + let secret: string = null; + + onMount(() => { + active ??= provider.active; + id ??= provider.id; + secret ??= provider.secret; + }); let error: string; const update = async () => { @@ -25,9 +35,12 @@ await sdkForConsole.projects.updateOAuth2( projectId, provider.name.toLowerCase(), - provider.id, - provider.secret + id, + secret ); + provider.active = active; + provider.id = id; + provider.secret = secret; showModal = false; addNotification({ type: 'success', @@ -41,7 +54,7 @@ }; -
+ {provider.name} OAuth2 Settings @@ -51,22 +64,20 @@ visit the docs.

- + + bind:value={id} /> + bind:value={secret} /> To complete set up, add this OAuth2 redirect URI to your {provider.name} app configuration. @@ -80,7 +91,13 @@
- +
diff --git a/src/routes/console/project-[project]/authentication/_microsoftOAuth.svelte b/src/routes/console/project-[project]/authentication/_microsoftOAuth.svelte index a954704bc..695453153 100644 --- a/src/routes/console/project-[project]/authentication/_microsoftOAuth.svelte +++ b/src/routes/console/project-[project]/authentication/_microsoftOAuth.svelte @@ -12,24 +12,36 @@ import { sdkForConsole } from '$lib/stores/sdk'; import type { Provider } from '$lib/stores/oauth-providers'; import { addNotification } from '$lib/stores/notifications'; + import { onMount } from 'svelte'; export let showModal = false; export let provider: Provider; - let { clientSecret, tenantID } = JSON.parse(provider.secret); + let id: string = null; + let active = false; + let clientSecret: string = null; + let tenantID: string = null; let error: string; + onMount(() => { + id ??= provider.id; + active ??= provider.active; + if (provider.secret) ({ clientSecret, tenantID } = JSON.parse(provider.secret)); + }); + const projectId = $page.params.project; const update = async () => { try { - const secret = JSON.stringify({ clientSecret, tenantID }); await sdkForConsole.projects.updateOAuth2( projectId, provider.name.toLowerCase(), - provider.id, + id, secret ); + provider.active = active; + provider.id = id; + provider.secret = secret; showModal = false; addNotification({ @@ -42,9 +54,12 @@ error = message; } }; + + $: secret = + clientSecret && tenantID ? JSON.stringify({ clientSecret, tenantID }) : provider.secret; -
+ {provider.name} OAuth2 Settings @@ -55,21 +70,19 @@ visit the docs.

- + + bind:value={id} /> - +
diff --git a/src/routes/console/project-[project]/authentication/_oktaOAuth.svelte b/src/routes/console/project-[project]/authentication/_oktaOAuth.svelte index 2fabc91d1..01ec179b7 100644 --- a/src/routes/console/project-[project]/authentication/_oktaOAuth.svelte +++ b/src/routes/console/project-[project]/authentication/_oktaOAuth.svelte @@ -12,24 +12,39 @@ import { sdkForConsole } from '$lib/stores/sdk'; import type { Provider } from '$lib/stores/oauth-providers'; import { addNotification } from '$lib/stores/notifications'; + import { onMount } from 'svelte'; export let showModal = false; export let provider: Provider; - let { clientSecret, oktaDomain, authorizationServerId } = JSON.parse(provider.secret); + let id: string = null; + let active = false; + let clientSecret: string = null; + let oktaDomain: string = null; + let authorizationServerId: string = null; + + onMount(() => { + id ??= provider.id; + active ??= provider.active; + if (provider.secret) + ({ clientSecret, oktaDomain, authorizationServerId } = JSON.parse(provider.secret)); + }); + let error: string; const projectId = $page.params.project; const update = async () => { try { - const secret = JSON.stringify({ clientSecret, oktaDomain, authorizationServerId }); await sdkForConsole.projects.updateOAuth2( projectId, provider.name.toLowerCase(), - provider.id, + id, secret ); + provider.active = active; + provider.id = id; + provider.secret = secret; showModal = false; addNotification({ type: 'success', @@ -41,9 +56,14 @@ error = message; } }; + + $: secret = + clientSecret && oktaDomain && authorizationServerId + ? JSON.stringify({ clientSecret, oktaDomain, authorizationServerId }) + : provider.secret; -
+ {provider.name} OAuth2 Settings @@ -53,20 +73,18 @@ visit the docs.

- + + bind:value={id} /> - +
diff --git a/src/routes/console/project-[project]/authentication/settings/+page.svelte b/src/routes/console/project-[project]/authentication/settings/+page.svelte index 1ea1a9bad..be9a2b270 100644 --- a/src/routes/console/project-[project]/authentication/settings/+page.svelte +++ b/src/routes/console/project-[project]/authentication/settings/+page.svelte @@ -70,6 +70,7 @@
    {#each $OAuthProviders.providers as provider} +
{/if}

Total results: {response.total}

- +
{/await}
diff --git a/src/routes/console/project-[project]/authentication/teams/[team]/members/+page.svelte b/src/routes/console/project-[project]/authentication/teams/[team]/members/+page.svelte index 01e68c7cb..41e5991c5 100644 --- a/src/routes/console/project-[project]/authentication/teams/[team]/members/+page.svelte +++ b/src/routes/console/project-[project]/authentication/teams/[team]/members/+page.svelte @@ -20,36 +20,42 @@ import CreateMember from '../_createMembership.svelte'; import DeleteMembership from '../_deleteMembership.svelte'; import { pageLimit } from '$lib/stores/layout'; - - const getAvatar = (name: string) => sdkForProject.avatars.getInitials(name, 32, 32).toString(); - const deleted = () => - memberships.load( - $page.params.team, - [Query.limit($pageLimit), Query.offset(offset)], - search - ); - - const project = $page.params.project; + import { createPersistentPagination } from '$lib/stores/pagination'; let showCreate = false; let showDelete = false; let search = ''; - let offset = 0; let selectedMembership: Models.Membership; - $: if (search) offset = 0; - $: memberships.load($page.params.team, [Query.limit($pageLimit), Query.offset(offset)], search); + const project = $page.params.project; + const offset = createPersistentPagination($pageLimit); + const getAvatar = (name: string) => sdkForProject.avatars.getInitials(name, 32, 32).toString(); - const memberCreated = async (event: CustomEvent) => { + $: if (search) $offset = 0; + $: memberships.load( + $page.params.team, + [Query.limit($pageLimit), Query.offset($offset)], + search + ); + + async function memberCreated(event: CustomEvent) { memberships.load( $page.params.team, - [Query.limit($pageLimit), Query.offset(offset)], + [Query.limit($pageLimit), Query.offset($offset)], search ); await goto( `${base}/console/project-${project}/authentication/teams/${event.detail.teamId}/members` ); - }; + } + + function deleted() { + memberships.load( + $page.params.team, + [Query.limit($pageLimit), Query.offset($offset)], + search + ); + } @@ -77,7 +83,6 @@ size={32} src={getAvatar(membership.userName)} name={membership.userName} /> - {membership.userName ? membership.userName : 'n/a'} @@ -99,11 +104,9 @@ {/each} -
+

Total results: {$memberships.total}

- +
{:else if search} diff --git a/src/routes/console/project-[project]/authentication/user/[user]/activity/+page.svelte b/src/routes/console/project-[project]/authentication/user/[user]/activity/+page.svelte index 94056cca1..9244eb8ac 100644 --- a/src/routes/console/project-[project]/authentication/user/[user]/activity/+page.svelte +++ b/src/routes/console/project-[project]/authentication/user/[user]/activity/+page.svelte @@ -16,17 +16,16 @@ import { sdkForProject } from '$lib/stores/sdk'; import { pageLimit } from '$lib/stores/layout'; import { Query } from '@aw-labs/appwrite-console'; + import { createPersistentPagination } from '$lib/stores/pagination'; - let offset = 0; + const offset = createPersistentPagination($pageLimit); $: request = sdkForProject.users.listLogs($page.params.user, [ Query.limit($pageLimit), - Query.offset(offset) + Query.offset($offset) ]); - const getBrowser = (clientCode: string) => { - return sdkForProject.avatars.getBrowser(clientCode, 80, 80); - }; + const getBrowser = (clientCode: string) => sdkForProject.avatars.getBrowser(clientCode, 80, 80); @@ -99,7 +98,7 @@ {/if}

Total results: {response.total}

- +
{/await}
diff --git a/src/routes/console/project-[project]/authentication/user/[user]/memberships/+page.svelte b/src/routes/console/project-[project]/authentication/user/[user]/memberships/+page.svelte index 8335b106c..35c9bd2b1 100644 --- a/src/routes/console/project-[project]/authentication/user/[user]/memberships/+page.svelte +++ b/src/routes/console/project-[project]/authentication/user/[user]/memberships/+page.svelte @@ -1,5 +1,6 @@ @@ -86,11 +90,9 @@ >Documentation {/if} -
+

Total results: {response.total}

- +
{/await} diff --git a/src/routes/console/project-[project]/authentication/user/[user]/sessions/+page.svelte b/src/routes/console/project-[project]/authentication/user/[user]/sessions/+page.svelte index ce9d0dd02..a960f8fc0 100644 --- a/src/routes/console/project-[project]/authentication/user/[user]/sessions/+page.svelte +++ b/src/routes/console/project-[project]/authentication/user/[user]/sessions/+page.svelte @@ -19,19 +19,20 @@ import { pageLimit } from '$lib/stores/layout'; import { onMount } from 'svelte'; import type { Models } from '@aw-labs/appwrite-console'; + import { createPersistentPagination } from '$lib/stores/pagination'; - let offset = 0; let showDelete = false; let showDeleteAll = false; let selectedSessionId: string = null; let sessionList: Models.SessionList = null; + + const offset = createPersistentPagination($pageLimit); + onMount(async () => { sessionList = await sdkForProject.users.listSessions($page.params.user); }); - const getBrowser = (clientCode: string) => { - return sdkForProject.avatars.getBrowser(clientCode, 40, 40); - }; + const getBrowser = (clientCode: string) => sdkForProject.avatars.getBrowser(clientCode, 40, 40); @@ -102,7 +103,7 @@ {/if}

Total results: {sessionList?.total}

- +
diff --git a/src/routes/console/project-[project]/databases/+page.svelte b/src/routes/console/project-[project]/databases/+page.svelte index ef5447ec8..dda659047 100644 --- a/src/routes/console/project-[project]/databases/+page.svelte +++ b/src/routes/console/project-[project]/databases/+page.svelte @@ -10,19 +10,21 @@ import { base } from '$app/paths'; import { databaseList } from './store'; import { cardLimit } from '$lib/stores/layout'; + import { createPersistentPagination } from '$lib/stores/pagination'; let showCreate = false; let search = ''; - let offset = 0; const project = $page.params.project; - const handleCreate = async (event: CustomEvent) => { + const offset = createPersistentPagination($cardLimit); + + async function handleCreate(event: CustomEvent) { showCreate = false; await goto(`${base}/console/project-${project}/databases/database/${event.detail.$id}`); - }; + } $: databaseList.load( - [Query.limit($cardLimit), Query.offset(offset), Query.orderDesc('$createdAt')], + [Query.limit($cardLimit), Query.offset($offset), Query.orderDesc('$createdAt')], search ); @@ -37,7 +39,10 @@
{#if $databaseList?.total} - (showCreate = true)}> + (showCreate = true)}> {#each $databaseList.databases as database} @@ -56,11 +61,18 @@

Total results: {$databaseList.total}

- +
{:else} (showCreate = true)}> -

Create your first Database to get started

+
+

Create your first Database to get started

+

Need a hand? Check out our documentation.

+
+
+ + +
{/if}
diff --git a/src/routes/console/project-[project]/databases/database/[database]/+page.svelte b/src/routes/console/project-[project]/databases/database/[database]/+page.svelte index dc86ae5a8..a493d8fee 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/+page.svelte +++ b/src/routes/console/project-[project]/databases/database/[database]/+page.svelte @@ -10,22 +10,24 @@ import { base } from '$app/paths'; import { collections } from './store'; import { cardLimit } from '$lib/stores/layout'; + import { createPersistentPagination } from '$lib/stores/pagination'; let showCreate = false; - let offset = 0; const project = $page.params.project; const databaseId = $page.params.database; - const handleCreate = async (event: CustomEvent) => { + const offset = createPersistentPagination($cardLimit); + + async function handleCreate(event: CustomEvent) { showCreate = false; await goto( `${base}/console/project-${project}/databases/database/${databaseId}/collection/${event.detail.$id}` ); - }; + } $: collections.load(databaseId, [ Query.limit($cardLimit), - Query.offset(offset), + Query.offset($offset), Query.orderDesc('$createdAt') ]); @@ -41,7 +43,10 @@
{#if $collections?.total} - (showCreate = true)}> + (showCreate = true)}> {#each $collections.collections as collection} @@ -69,11 +74,18 @@

Total results: {$collections.total}

- +
{:else} (showCreate = true)}> -

Create your first collection to get started

+
+

Create your first collection to get started

+

Need a hand? Check out our documentation.

+
+
+ + +
{/if}
diff --git a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/+page.svelte b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/+page.svelte index 53bcdb9ab..cc053fa2c 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/+page.svelte +++ b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/+page.svelte @@ -18,27 +18,28 @@ import Create from './createDocument.svelte'; import { Query } from '@aw-labs/appwrite-console'; import { pageLimit } from '$lib/stores/layout'; - - let offset = 0; + import { createPersistentPagination } from '$lib/stores/pagination'; const projectId = $page.params.project; const databaseId = $page.params.database; + const offset = createPersistentPagination($pageLimit); + + function openWizard() { + wizard.start(Create); + } $: documentList.load(databaseId, $collection.$id, [ Query.limit($pageLimit), - Query.offset(offset), + Query.offset($offset), Query.orderDesc('$createdAt') ]); + $: columns = [ ...$collection.attributes.map((attribute) => ({ key: attribute.key, title: attribute.key })) ]; - - function openWizard() { - wizard.start(Create); - } @@ -84,7 +85,7 @@

Total results: {$documentList.total}

- +
{:else} diff --git a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/+page.svelte b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/+page.svelte index 24210e796..014da3a29 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/+page.svelte +++ b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/+page.svelte @@ -19,14 +19,16 @@ import Delete from './deleteAttribute.svelte'; import Overview from './overview.svelte'; import { pageLimit } from '$lib/stores/layout'; + import { createPersistentPagination } from '$lib/stores/pagination'; - let offset = 0; let showDropdown = []; let selectedAttribute: Attributes = null; let showCreate = false; let showDelete = false; let showOverview = false; let showCreateIndex = false; + + const offset = createPersistentPagination($pageLimit); @@ -112,7 +114,10 @@

Total results: {$collection?.attributes?.length}

- +
{:else} (showCreate = true)}> diff --git a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/boolean.svelte b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/boolean.svelte index 5451ca12c..edc4e9473 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/boolean.svelte +++ b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/boolean.svelte @@ -49,6 +49,10 @@ xdefault = selectedAttribute.default; } + $: if (required) { + xdefault = null; + } + //TODO: refactor to use context module instead of submitted diff --git a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/createAttribute.svelte b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/createAttribute.svelte index 778b9d300..47fe506d1 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/createAttribute.svelte +++ b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/createAttribute.svelte @@ -19,6 +19,12 @@ $: if (selectedOption) { $option = options.find((option) => option.name === selectedOption); } + + $: if (!showCreate) { + key = null; + selectedOption = null; + submitted = false; + }
(submitted = true)}> diff --git a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/email.svelte b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/email.svelte index 29a46d15f..1db971cfc 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/email.svelte +++ b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/email.svelte @@ -51,6 +51,10 @@ ({ required, array } = selectedAttribute); xdefault = selectedAttribute.default; } + + $: if (required) { + xdefault = null; + } diff --git a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/integer.svelte b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/integer.svelte index 8981e8f7e..41429ac93 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/integer.svelte +++ b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/integer.svelte @@ -55,6 +55,9 @@ ({ required, array, min, max } = selectedAttribute); xdefault = selectedAttribute.default; } + $: if (required) { + xdefault = null; + } diff --git a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/ip.svelte b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/ip.svelte index 7d169ef5d..f40f1d8fa 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/ip.svelte +++ b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/ip.svelte @@ -51,6 +51,9 @@ ({ required, array } = selectedAttribute); xdefault = selectedAttribute.default; } + $: if (required) { + xdefault = null; + } diff --git a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/url.svelte b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/url.svelte index 449799f0f..23e57028b 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/url.svelte +++ b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/url.svelte @@ -51,6 +51,9 @@ ({ required, array } = selectedAttribute); xdefault = selectedAttribute.default; } + $: if (required) { + xdefault = null; + } sdkForProject.avatars.getInitials(name, 48, 48).toString(); @@ -54,8 +55,8 @@
-

Created: TO IMPLEMENT

-

Last Updated: TO IMPLEMENT

+

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

+

Last Updated: {toLocaleDateTime($database.$updatedAt)}

diff --git a/src/routes/console/project-[project]/storage/+page.svelte b/src/routes/console/project-[project]/storage/+page.svelte index 515002ec9..9df27dda3 100644 --- a/src/routes/console/project-[project]/storage/+page.svelte +++ b/src/routes/console/project-[project]/storage/+page.svelte @@ -11,19 +11,21 @@ import { bucketList } from './store'; import { tooltip } from '$lib/actions/tooltip'; import { cardLimit } from '$lib/stores/layout'; + import { createPersistentPagination } from '$lib/stores/pagination'; let showCreate = false; - let offset = 0; const project = $page.params.project; - const bucketCreated = async (event: CustomEvent) => { + const offset = createPersistentPagination($cardLimit); + + async function bucketCreated(event: CustomEvent) { showCreate = false; await goto(`${base}/console/project-${project}/storage/bucket/${event.detail.$id}`); - }; + } $: bucketList.load([ Query.limit($cardLimit), - Query.offset(offset), + Query.offset($offset), Query.orderDesc('$createdAt') ]); @@ -38,7 +40,10 @@ {#if $bucketList?.total} - (showCreate = true)}> + (showCreate = true)}> {#each $bucketList.buckets as bucket} XX Files @@ -86,11 +91,18 @@

Total results: {$bucketList.total}

- +
{:else} (showCreate = true)}> -

Add your first bucket to get started

+
+

Create your first bucket to get started

+

Need a hand? Check out our documentation.

+
+
+ + +
{/if} diff --git a/src/routes/console/project-[project]/storage/bucket/[bucket]/+page.svelte b/src/routes/console/project-[project]/storage/bucket/[bucket]/+page.svelte index c7db7e610..13cdc5284 100644 --- a/src/routes/console/project-[project]/storage/bucket/[bucket]/+page.svelte +++ b/src/routes/console/project-[project]/storage/bucket/[bucket]/+page.svelte @@ -34,50 +34,54 @@ import { uploader } from '$lib/stores/uploader'; import { addNotification } from '$lib/stores/notifications'; import { pageLimit } from '$lib/stores/layout'; + import { createPersistentPagination } from '$lib/stores/pagination'; let search = ''; let showCreate = false; - let showDropdown = []; let showDelete = false; + let showDropdown = []; let selectedFile: Models.File = null; - let offset = 0; const project = $page.params.project; const bucket = $page.params.bucket; - + const offset = createPersistentPagination($pageLimit); const getPreview = (fileId: string) => sdkForProject.storage.getFilePreview(bucket, fileId, 32, 32).toString() + '&mode=admin'; - const fileCreated = () => { - showCreate = false; - files.load(bucket, [Query.limit($pageLimit), Query.offset(offset)], search); - }; + async function loadFiles() { + files.load(bucket, [Query.limit($pageLimit), Query.offset($offset)], search); + } - const fileDeleted = (event: CustomEvent) => { + function fileCreated() { + showCreate = false; + loadFiles(); + } + + function fileDeleted(event: CustomEvent) { showDelete = false; uploader.removeFile(event.detail); - files.load(bucket, [Query.limit($pageLimit), Query.offset(offset)], search); - }; + loadFiles(); + } - const deleteFile = async (file: Models.File) => { + async function deleteFile(file: Models.File) { try { await sdkForProject.storage.deleteFile(file.bucketId, file.$id); uploader.removeFile(file); - files.load(bucket, [Query.limit($pageLimit), Query.offset(offset)], search); + loadFiles(); } catch (error) { addNotification({ type: 'error', message: error.message }); } - }; + } $: files.load( bucket, - [Query.limit($pageLimit), Query.offset(offset), Query.orderDesc('$createdAt')], + [Query.limit($pageLimit), Query.offset($offset), Query.orderDesc('$createdAt')], search ); - $: if (search) offset = 0; + $: if (search) $offset = 0; @@ -181,7 +185,7 @@

Total results: {$files.total}

- +
{:else if search} @@ -193,7 +197,14 @@ {:else} (showCreate = true)}> -

Upload some files to get started

+
+

Upload some files to get started

+

Need a hand? Check out our documentation.

+
+
+ + +
{/if}
diff --git a/src/routes/console/project-[project]/storage/bucket/[bucket]/_create.svelte b/src/routes/console/project-[project]/storage/bucket/[bucket]/_create.svelte index dc0be399b..2a5b9b0aa 100644 --- a/src/routes/console/project-[project]/storage/bucket/[bucket]/_create.svelte +++ b/src/routes/console/project-[project]/storage/bucket/[bucket]/_create.svelte @@ -85,7 +85,7 @@

Drag and drop files here to upload

- diff --git a/src/routes/console/project-[project]/storage/bucket/[bucket]/settings/+page.svelte b/src/routes/console/project-[project]/storage/bucket/[bucket]/settings/+page.svelte index 1b5488f96..14767ef91 100644 --- a/src/routes/console/project-[project]/storage/bucket/[bucket]/settings/+page.svelte +++ b/src/routes/console/project-[project]/storage/bucket/[bucket]/settings/+page.svelte @@ -257,8 +257,8 @@ will be ignored.

-
    -
  • +
      +
    • -
    • +