From 4d7f3d33d516fe54d2fc89174f0759dd3f76eb19 Mon Sep 17 00:00:00 2001 From: harsh mahajan Date: Wed, 13 May 2026 12:07:04 +0530 Subject: [PATCH] pagination --- .../organization-[organization]/+page.svelte | 17 +++++++--- .../organization-[organization]/+page.ts | 23 +++++++++---- .../project-[region]-[project]/+layout.ts | 6 ++-- .../auth/security/updateMockNumbers.svelte | 33 +++++++++++++++---- .../overview/(components)/table.svelte | 15 +++++++-- .../overview/api-keys/+page.svelte | 2 +- .../overview/api-keys/+page.ts | 17 ++++++++-- .../overview/platforms/+page.svelte | 8 ++++- .../overview/platforms/+page.ts | 18 ++++++++-- 9 files changed, 107 insertions(+), 32 deletions(-) diff --git a/src/routes/(console)/organization-[organization]/+page.svelte b/src/routes/(console)/organization-[organization]/+page.svelte index 8f0889d7e..0a7b4308c 100644 --- a/src/routes/(console)/organization-[organization]/+page.svelte +++ b/src/routes/(console)/organization-[organization]/+page.svelte @@ -251,15 +251,22 @@ on:click={handleCreateProject}> {#each data.projects.projects as project} {@const projectPlatforms = - (project as Models.Project & { platforms: Array<{ type: string }> }) - .platforms ?? []} + ( + project as Models.Project & { + platforms: Array<{ type: string }>; + platformsTotal?: number; + } + ).platforms ?? []} + {@const platformsTotal = + (project as Models.Project & { platformsTotal?: number }).platformsTotal ?? + projectPlatforms.length} {@const platforms = filterPlatforms( projectPlatforms.map((platform) => getPlatformInfo(platform.type)) )} - {projectPlatforms.length ? projectPlatforms.length : 'No'} apps + {platformsTotal ? platformsTotal : 'No'} apps {project.name} @@ -284,10 +291,10 @@ {/each} - {#if platforms.length > 3} + {#if platformsTotal > 2} {/if} diff --git a/src/routes/(console)/organization-[organization]/+page.ts b/src/routes/(console)/organization-[organization]/+page.ts index 7f078b2b0..eb6f9990b 100644 --- a/src/routes/(console)/organization-[organization]/+page.ts +++ b/src/routes/(console)/organization-[organization]/+page.ts @@ -43,13 +43,22 @@ export const load: PageLoad = async ({ params, url, route, depends, parent }) => ] }); - // set `default` if no region! - for (const project of activeProjects.projects) { - project.region ??= 'default'; - (project as Models.Project & { platforms: Array<{ type: string }> }).platforms = ( - await sdk.forProject(project.region, project.$id).project.listPlatforms() - ).platforms; - } + await Promise.all( + activeProjects.projects.map(async (project) => { + project.region ??= 'default'; + const platformList = await sdk + .forProject(project.region, project.$id) + .project.listPlatforms({ queries: [Query.limit(3)] }); + ( + project as Models.Project & { + platforms: Array<{ type: string }>; + platformsTotal: number; + } + ).platforms = platformList.platforms; + (project as Models.Project & { platformsTotal: number }).platformsTotal = + platformList.total; + }) + ); return { limit, diff --git a/src/routes/(console)/project-[region]-[project]/+layout.ts b/src/routes/(console)/project-[region]-[project]/+layout.ts index 169300d29..fedac9d43 100644 --- a/src/routes/(console)/project-[region]-[project]/+layout.ts +++ b/src/routes/(console)/project-[region]-[project]/+layout.ts @@ -8,7 +8,7 @@ import { get } from 'svelte/store'; import { headerAlert } from '$lib/stores/headerAlert'; import PaymentFailed from '$lib/components/billing/alerts/paymentFailed.svelte'; import { loadAvailableRegions } from '$routes/(console)/regions'; -import { type Models, Platform } from '@appwrite.io/console'; +import { Query, type Models, Platform } from '@appwrite.io/console'; import { redirect } from '@sveltejs/kit'; import { resolve } from '$app/paths'; import { generateFingerprintToken } from '$lib/helpers/fingerprint'; @@ -57,8 +57,8 @@ export const load: LayoutLoad = async ({ params, depends, parent }) => { : null, loadAvailableRegions(project.teamId), - projectSdk.listPlatforms(), - projectSdk.listKeys() + projectSdk.listPlatforms({ queries: [Query.limit(1)] }), + projectSdk.listKeys({ queries: [Query.limit(1)] }) ]); const regionalConsoleVariables = normalizeConsoleVariables(rawRegionalConsoleVariables); diff --git a/src/routes/(console)/project-[region]-[project]/auth/security/updateMockNumbers.svelte b/src/routes/(console)/project-[region]-[project]/auth/security/updateMockNumbers.svelte index 3a7242cf4..daebe7a8c 100644 --- a/src/routes/(console)/project-[region]-[project]/auth/security/updateMockNumbers.svelte +++ b/src/routes/(console)/project-[region]-[project]/auth/security/updateMockNumbers.svelte @@ -1,6 +1,6 @@ - +
diff --git a/src/routes/(console)/project-[region]-[project]/overview/api-keys/+page.ts b/src/routes/(console)/project-[region]-[project]/overview/api-keys/+page.ts index 7628733e6..025777c18 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/api-keys/+page.ts +++ b/src/routes/(console)/project-[region]-[project]/overview/api-keys/+page.ts @@ -1,10 +1,21 @@ -import { Dependencies } from '$lib/constants'; +import { CARD_LIMIT, Dependencies } from '$lib/constants'; +import { getLimit, getPage, pageToOffset } from '$lib/helpers/load'; import { sdk } from '$lib/stores/sdk'; +import { Query } from '@appwrite.io/console'; import type { PageLoad } from './$types'; -export const load: PageLoad = async ({ params, depends }) => { +export const load: PageLoad = async ({ params, depends, route, url }) => { depends(Dependencies.KEYS); + const projectSdk = sdk.forProject(params.region, params.project).project; + const page = getPage(url); + const limit = getLimit(url, route, CARD_LIMIT); + const offset = pageToOffset(page, limit); + return { - keys: await sdk.forProject(params.region, params.project).project.listKeys() + limit, + offset, + keys: await projectSdk.listKeys({ + queries: [Query.limit(limit), Query.offset(offset)] + }) }; }; diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte index 4abffc8ae..d0798f371 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte @@ -93,7 +93,8 @@ import { type DeleteOperationState, type DeleteOperation, - MultiSelectionTable + MultiSelectionTable, + PaginationWithLimit } from '$lib/components'; import { sdk } from '$lib/stores/sdk'; import { Submit, trackError } from '$lib/actions/analytics'; @@ -200,6 +201,11 @@ {/each} {/snippet} + {:else} { - const { platforms } = await parent(); +export const load: PageLoad = async ({ depends, params, route, url }) => { + depends(Dependencies.PROJECT); + const page = getPage(url); + const limit = getLimit(url, route, CARD_LIMIT); + const offset = pageToOffset(page, limit); + return { - platforms + limit, + offset, + platforms: await sdk.forProject(params.region, params.project).project.listPlatforms({ + queries: [Query.limit(limit), Query.offset(offset)] + }) }; };