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/teams/+page.svelte b/src/routes/console/project-[project]/authentication/teams/+page.svelte index 49cf872a4..be55c393e 100644 --- a/src/routes/console/project-[project]/authentication/teams/+page.svelte +++ b/src/routes/console/project-[project]/authentication/teams/+page.svelte @@ -21,10 +21,11 @@ import { teamsList } from '../store'; import { Query, type Models } from '@aw-labs/appwrite-console'; import { pageLimit } from '$lib/stores/layout'; + import { createPersistentPagination } from '$lib/stores/pagination'; let search = ''; let showCreate = false; - let offset = 0; + const offset = createPersistentPagination($pageLimit); const project = $page.params.project; const getAvatar = (name: string) => sdkForProject.avatars.getInitials(name, 32, 32).toString(); @@ -32,9 +33,9 @@ await goto(`${base}/console/project-${project}/authentication/teams/${event.detail.$id}`); }; - $: if (search) offset = 0; + $: if (search) $offset = 0; $: teamsList.load( - [Query.limit($pageLimit), Query.offset(offset), Query.orderDesc('$createdAt')], + [Query.limit($pageLimit), Query.offset($offset), Query.orderDesc('$createdAt')], search ); @@ -81,7 +82,7 @@

Total results: {$teamsList.total}

- +
{:else if search} diff --git a/src/routes/console/project-[project]/authentication/teams/[team]/activity/+page.svelte b/src/routes/console/project-[project]/authentication/teams/[team]/activity/+page.svelte index 9b1e3abe6..0eb463d93 100644 --- a/src/routes/console/project-[project]/authentication/teams/[team]/activity/+page.svelte +++ b/src/routes/console/project-[project]/authentication/teams/[team]/activity/+page.svelte @@ -16,12 +16,13 @@ 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.teams.listLogs($page.params.team, [ Query.limit($pageLimit), - Query.offset(offset) + Query.offset($offset) ]); const getBrowser = (clientCode: string) => { @@ -66,14 +67,12 @@

- Unknown

{/if} {log.event} - {#if log.countryCode !== '--'} {log.countryName} @@ -94,15 +93,16 @@

No logs available

- +
{/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..3673ee03d 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,7 +61,7 @@

Total results: {$databaseList.total}

- +
{:else} (showCreate = true)}> 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..a02da7912 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,7 +74,7 @@

Total results: {$collections.total}

- +
{:else} (showCreate = true)}> 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]/storage/+page.svelte b/src/routes/console/project-[project]/storage/+page.svelte index 515002ec9..fec56c60b 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,7 +91,7 @@

Total results: {$bucketList.total}

- +
{:else} (showCreate = true)}> 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..f381bafa7 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}