mirror of
https://github.com/appwrite/console.git
synced 2026-06-06 19:27:48 +00:00
address comments.
This commit is contained in:
@@ -68,7 +68,7 @@
|
||||
|
||||
export let organizations: Organization[] = [];
|
||||
export let currentProject: Models.Project | null = null;
|
||||
export let projectsPromise: Promise<Models.ProjectList> = Promise.resolve(loadedProjects);
|
||||
export let projects: Promise<Models.ProjectList> = Promise.resolve(loadedProjects);
|
||||
|
||||
let projectsBottomSheetOpen = false;
|
||||
let organisationBottomSheetOpen = false;
|
||||
@@ -99,15 +99,15 @@
|
||||
}
|
||||
};
|
||||
|
||||
async function createProjectsBottomSheet(): Promise<SheetMenu> {
|
||||
async function createProjectsBottomSheet(organization: Organization): Promise<SheetMenu> {
|
||||
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);
|
||||
</script>
|
||||
|
||||
<svelte:window on:resize={onResize} />
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
export let sideBarIsOpen: $$Props['sideBarIsOpen'] = false;
|
||||
export let showAccountMenu = false;
|
||||
export let currentProject: Models.Project = undefined;
|
||||
export let projectsPromise: Promise<Models.ProjectList> = undefined;
|
||||
export let projects: Promise<Models.ProjectList> = undefined;
|
||||
|
||||
let activeTheme = $app.theme;
|
||||
let shouldAnimateThemeToggle = false;
|
||||
@@ -139,7 +139,7 @@
|
||||
class="only-desktop">
|
||||
<img src={logo.src} alt={logo.alt} />
|
||||
</a>
|
||||
<Breadcrumbs {organizations} {projectsPromise} {currentProject} />
|
||||
<Breadcrumbs {organizations} {projects} {currentProject} />
|
||||
{#if page.route?.id?.includes('project-') && currentProject && currentProject.pingCount === 0}
|
||||
<div class="only-desktop" style:margin-inline-start="-16px">
|
||||
<Button.Anchor
|
||||
|
||||
@@ -21,11 +21,8 @@
|
||||
export let showHeader = true;
|
||||
export let showFooter = true;
|
||||
export let showSideNavigation = false;
|
||||
export let selectedProject: Models.Project | null = null;
|
||||
export let projectsPromise: Promise<Models.ProjectList> = Promise.resolve({
|
||||
total: 0,
|
||||
projects: []
|
||||
});
|
||||
export let selectedProject: Models.Project = null;
|
||||
export let projects: Promise<Models.ProjectList> = undefined;
|
||||
|
||||
let yOnMenuOpen: number;
|
||||
let showContentTransition = false;
|
||||
@@ -107,7 +104,7 @@
|
||||
};
|
||||
}),
|
||||
|
||||
projectsPromise: projectsPromise,
|
||||
projects: projects,
|
||||
|
||||
currentProject: selectedProject
|
||||
};
|
||||
|
||||
@@ -314,18 +314,14 @@
|
||||
|
||||
$: checkForUsageLimits($organization);
|
||||
|
||||
function getProjectsPromise(): Promise<Models.ProjectList> {
|
||||
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}>
|
||||
<!-- <Header slot="header" />-->
|
||||
<slot />
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
$: projects = (data.organizationUsage as OrganizationUsage).projects;
|
||||
|
||||
let usageProjects: { [key: string]: UsageProjectInfo } = {};
|
||||
let usageProjects: Record<string, UsageProjectInfo> = {};
|
||||
|
||||
$: legendData = [
|
||||
{
|
||||
@@ -53,7 +53,7 @@
|
||||
}
|
||||
];
|
||||
|
||||
onMount(async () => (usageProjects = await data.projectsPromise));
|
||||
onMount(async () => (usageProjects = await data.projects));
|
||||
</script>
|
||||
|
||||
<Container>
|
||||
|
||||
@@ -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 } = {};
|
||||
|
||||
|
||||
+1
-1
@@ -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<string, UsageProjectInfo> = {};
|
||||
export let databaseOperationMetric: DatabaseOperationMetric[] | undefined = undefined;
|
||||
|
||||
function getMetricTitle(metric: Metric): string {
|
||||
|
||||
@@ -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}`);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user