From 405a5a80d224b06befae7a89ff8e5de7ead6dfc0 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sun, 8 Jun 2025 12:26:36 +0530 Subject: [PATCH] address comments. --- src/lib/components/breadcrumbs.svelte | 20 ++++++++--------- src/lib/components/navbar.svelte | 4 ++-- src/lib/layout/shell.svelte | 9 +++----- src/routes/(console)/+layout.svelte | 22 ++++++++----------- src/routes/(console)/+layout.ts | 2 +- .../usage/[[invoice]]/+page.svelte | 4 ++-- .../usage/[[invoice]]/+page.ts | 4 ++-- .../usage/[[invoice]]/ProjectBreakdown.svelte | 2 +- .../overview/+page.ts | 15 +++++++------ 9 files changed, 38 insertions(+), 44 deletions(-) diff --git a/src/lib/components/breadcrumbs.svelte b/src/lib/components/breadcrumbs.svelte index 86384f56e..f17f30335 100644 --- a/src/lib/components/breadcrumbs.svelte +++ b/src/lib/components/breadcrumbs.svelte @@ -68,7 +68,7 @@ export let organizations: Organization[] = []; export let currentProject: Models.Project | null = null; - export let projectsPromise: Promise = Promise.resolve(loadedProjects); + export let projects: Promise = Promise.resolve(loadedProjects); let projectsBottomSheetOpen = false; let organisationBottomSheetOpen = false; @@ -99,15 +99,15 @@ } }; - async function createProjectsBottomSheet(): Promise { + async function createProjectsBottomSheet(organization: Organization): Promise { isLoadingProjects = true; - loadedProjects = await projectsPromise; + loadedProjects = await projects; isLoadingProjects = false; const createProjectItem = { name: 'Create project', trailingIcon: IconPlus, - href: `${base}/organization-${selectedOrg?.$id}?create-project` + href: `${base}/organization-${organization?.$id}?create-project` }; if (loadedProjects.total > 1 && selectedOrg) { @@ -135,15 +135,15 @@ }; } - function createOrganizationBottomSheet() { - return !selectedOrg + function createOrganizationBottomSheet(organization: Organization) { + return !organization ? switchOrganization : ({ top: { items: [ { name: 'Organization overview', - href: `${base}/organization-${selectedOrg?.$id}` + href: `${base}/organization-${organization?.$id}` } ] }, @@ -177,11 +177,11 @@ } } - $: projectsBottomSheet = createProjectsBottomSheet(); + $: selectedOrg = organizations.find((org) => org.isSelected); - $: organizationsBottomSheet = createOrganizationBottomSheet(); + $: projectsBottomSheet = createProjectsBottomSheet(selectedOrg); - $: selectedOrg = organizations.find((organization) => organization.isSelected); + $: organizationsBottomSheet = createOrganizationBottomSheet(selectedOrg); diff --git a/src/lib/components/navbar.svelte b/src/lib/components/navbar.svelte index 9518334dd..c973e680f 100644 --- a/src/lib/components/navbar.svelte +++ b/src/lib/components/navbar.svelte @@ -107,7 +107,7 @@ export let sideBarIsOpen: $$Props['sideBarIsOpen'] = false; export let showAccountMenu = false; export let currentProject: Models.Project = undefined; - export let projectsPromise: Promise = undefined; + export let projects: Promise = undefined; let activeTheme = $app.theme; let shouldAnimateThemeToggle = false; @@ -139,7 +139,7 @@ class="only-desktop"> {logo.alt} - + {#if page.route?.id?.includes('project-') && currentProject && currentProject.pingCount === 0}
= Promise.resolve({ - total: 0, - projects: [] - }); + export let selectedProject: Models.Project = null; + export let projects: Promise = undefined; let yOnMenuOpen: number; let showContentTransition = false; @@ -107,7 +104,7 @@ }; }), - projectsPromise: projectsPromise, + projects: projects, currentProject: selectedProject }; diff --git a/src/routes/(console)/+layout.svelte b/src/routes/(console)/+layout.svelte index 1228c026d..4b3d12c6f 100644 --- a/src/routes/(console)/+layout.svelte +++ b/src/routes/(console)/+layout.svelte @@ -314,18 +314,14 @@ $: checkForUsageLimits($organization); - function getProjectsPromise(): Promise { - return sdk.forConsole.projects.list([ - Query.equal( - 'teamId', - data.currentOrgId ?? currentOrganizationId ?? page.params.organization - ), - Query.limit(5), - Query.orderDesc('$updatedAt') - ]); - } - - $: projectsPromise = getProjectsPromise(); + $: projects = sdk.forConsole.projects.list([ + Query.equal( + 'teamId', + data.currentOrgId ?? currentOrganizationId ?? page.params.organization + ), + Query.limit(5), + Query.orderDesc('$updatedAt') + ]); $: if ($requestedMigration) { openMigrationWizard(); @@ -347,7 +343,7 @@ !page.url.pathname.includes('/console/onboarding')} showHeader={!page.url.pathname.includes('/console/onboarding/create-project')} showFooter={!page.url.pathname.includes('/console/onboarding/create-project')} - {projectsPromise} + {projects} selectedProject={page.data?.project}> diff --git a/src/routes/(console)/+layout.ts b/src/routes/(console)/+layout.ts index 183aece47..7d785cf01 100644 --- a/src/routes/(console)/+layout.ts +++ b/src/routes/(console)/+layout.ts @@ -15,7 +15,7 @@ export const load: LayoutLoad = async ({ depends, parent }) => { const [preferences, plansArray, organizations, versionData, consoleVariables] = await Promise.all([ sdk.forConsole.account.getPrefs(), - isCloud ? sdk.forConsole.billing.getPlansInfo() : Promise.resolve(null), + isCloud ? sdk.forConsole.billing.getPlansInfo() : null, isCloud ? sdk.forConsole.billing.listOrganization() : sdk.forConsole.teams.list(), fetch(`${endpoint}/health/version`, { headers: { 'X-Appwrite-Project': project } diff --git a/src/routes/(console)/organization-[organization]/usage/[[invoice]]/+page.svelte b/src/routes/(console)/organization-[organization]/usage/[[invoice]]/+page.svelte index a0a401f1d..9945e5cbb 100644 --- a/src/routes/(console)/organization-[organization]/usage/[[invoice]]/+page.svelte +++ b/src/routes/(console)/organization-[organization]/usage/[[invoice]]/+page.svelte @@ -34,7 +34,7 @@ $: projects = (data.organizationUsage as OrganizationUsage).projects; - let usageProjects: { [key: string]: UsageProjectInfo } = {}; + let usageProjects: Record = {}; $: legendData = [ { @@ -53,7 +53,7 @@ } ]; - onMount(async () => (usageProjects = await data.projectsPromise)); + onMount(async () => (usageProjects = await data.projects)); diff --git a/src/routes/(console)/organization-[organization]/usage/[[invoice]]/+page.ts b/src/routes/(console)/organization-[organization]/usage/[[invoice]]/+page.ts index 7983719a7..7bbd694b7 100644 --- a/src/routes/(console)/organization-[organization]/usage/[[invoice]]/+page.ts +++ b/src/routes/(console)/organization-[organization]/usage/[[invoice]]/+page.ts @@ -64,12 +64,12 @@ export const load: PageLoad = async ({ params, parent }) => { currentInvoice, organizationMembers, organizationUsage: usage, - projectsPromise: getUsageProjectsPromise(usage) + projects: getUsageProjects(usage) }; }; // all this to get the project's name and region! -function getUsageProjectsPromise(usage: OrganizationUsage) { +function getUsageProjects(usage: OrganizationUsage) { return (async () => { const projects: { [key: string]: UsageProjectInfo } = {}; diff --git a/src/routes/(console)/organization-[organization]/usage/[[invoice]]/ProjectBreakdown.svelte b/src/routes/(console)/organization-[organization]/usage/[[invoice]]/ProjectBreakdown.svelte index 3f4e299ae..f1141f2c8 100644 --- a/src/routes/(console)/organization-[organization]/usage/[[invoice]]/ProjectBreakdown.svelte +++ b/src/routes/(console)/organization-[organization]/usage/[[invoice]]/ProjectBreakdown.svelte @@ -25,7 +25,7 @@ export let projects: OrganizationUsage['projects']; export let metric: Metric | undefined = undefined; export let estimate: Estimate | undefined = undefined; - export let usageProjects: { [key: string]: UsageProjectInfo } = {}; + export let usageProjects: Record = {}; export let databaseOperationMetric: DatabaseOperationMetric[] | undefined = undefined; function getMetricTitle(metric: Metric): string { diff --git a/src/routes/(console)/project-[region]-[project]/overview/+page.ts b/src/routes/(console)/project-[region]-[project]/overview/+page.ts index 7b7ad18c7..560e26412 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/+page.ts +++ b/src/routes/(console)/project-[region]-[project]/overview/+page.ts @@ -5,18 +5,19 @@ import type { PageLoad } from './$types'; import { selectedTab } from './store'; export const load: PageLoad = async ({ params }) => { - let subroute: string; const tab = get(selectedTab); switch (tab) { case 'keys': case 'dev-keys': - subroute = tab; - break; + return redirect( + 302, + `${base}/project-${params.region}-${params.project}/overview/${tab}` + ); default: - subroute = 'platforms'; - break; + return redirect( + 302, + `${base}/project-${params.region}-${params.project}/overview/platforms` + ); } - - redirect(302, `${base}/project-${params.region}-${params.project}/overview/${subroute}`); };