mirror of
https://github.com/Portabase/portabase.git
synced 2026-07-14 11:16:13 +02:00
fix(onboarding): do not skip db settings if agent is connected but no databases found
This commit is contained in:
@@ -2,8 +2,18 @@ import {getOrganization} from "@/lib/auth/auth";
|
||||
import {db} from "@/db";
|
||||
import {and, eq} from "drizzle-orm";
|
||||
import * as drizzleDb from "@/db";
|
||||
import {project} from "@/db/schema/06_project";
|
||||
|
||||
|
||||
export async function getOrganizationProject(organizationId: string) {
|
||||
return db.query.project.findFirst({
|
||||
where: eq(project.organizationId, organizationId),
|
||||
with: {
|
||||
databases: true
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
export const getOrganizationProjectDatabases = async ({organizationSlug, projectId}: {
|
||||
organizationSlug: string, projectId: string
|
||||
}) => {
|
||||
|
||||
@@ -60,9 +60,9 @@ export const OnboardingShell = () => {
|
||||
prevId = "storage";
|
||||
}
|
||||
} else if (currentStepId === "finish") {
|
||||
const databases =
|
||||
(state.context.flowData.databases as unknown[]) || [];
|
||||
if (databases.length === 0) {
|
||||
const agents = (state.context.flowData.agents as any[]) || [];
|
||||
const isAgentConnected = agents.some((a) => a.connected);
|
||||
if (!isAgentConnected) {
|
||||
prevId = "project-create";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,6 +93,9 @@ export async function resolveOnboardingState(): Promise<ResolvedOnboardingState>
|
||||
id: a.id,
|
||||
name: a.name,
|
||||
edgeKey: await generateEdgeKey(getServerUrl(), a.id),
|
||||
connected: a.lastContact
|
||||
? Date.now() - new Date(a.lastContact).getTime() < 60_000
|
||||
: false,
|
||||
}))
|
||||
);
|
||||
|
||||
@@ -120,7 +123,7 @@ export async function resolveOnboardingState(): Promise<ResolvedOnboardingState>
|
||||
id: project.id,
|
||||
name: project.name,
|
||||
description: "",
|
||||
databaseIds: [],
|
||||
databaseIds: (project as any).databases?.map((db: any) => db.id) ?? [],
|
||||
},
|
||||
}
|
||||
: {}),
|
||||
@@ -131,10 +134,22 @@ export async function resolveOnboardingState(): Promise<ResolvedOnboardingState>
|
||||
meta.resumeStepId = "agent-create";
|
||||
return { stepId: "agent-create", flowData: fullData };
|
||||
}
|
||||
if (databases.length === 0) {
|
||||
meta.resumeStepId = "db-settings";
|
||||
return { stepId: "db-settings", flowData: fullData };
|
||||
|
||||
const firstAgent = agents[0];
|
||||
const agentConnected = firstAgent?.lastContact
|
||||
? Date.now() - new Date(firstAgent.lastContact).getTime() < 60_000
|
||||
: false;
|
||||
|
||||
if (agentConnected && (project as any).databases?.length === 0) {
|
||||
meta.resumeStepId = "project-create";
|
||||
return { stepId: "project-create", flowData: fullData };
|
||||
}
|
||||
|
||||
if (!agentConnected) {
|
||||
meta.resumeStepId = "finish";
|
||||
return { stepId: "finish", flowData: fullData };
|
||||
}
|
||||
|
||||
meta.resumeStepId = "finish";
|
||||
return { stepId: "finish", flowData: fullData };
|
||||
}
|
||||
|
||||
@@ -119,12 +119,14 @@ export const onboardingSteps: OnboardingStep[] = [
|
||||
component: StepProjectCreate,
|
||||
isSkippable: true,
|
||||
skipToStep: (ctx: any) => {
|
||||
const databases = (ctx.flowData?.databases as unknown[]) || [];
|
||||
return databases.length === 0 ? "finish" : "db-settings";
|
||||
const agents = (ctx.flowData?.agents as any[]) || [];
|
||||
const isAgentConnected = agents.some((a) => a.connected);
|
||||
return !isAgentConnected ? "finish" : "db-settings";
|
||||
},
|
||||
nextStep: (ctx: any) => {
|
||||
const databases = (ctx.flowData?.databases as unknown[]) || [];
|
||||
return databases.length === 0 ? "finish" : "db-settings";
|
||||
const agents = (ctx.flowData?.agents as any[]) || [];
|
||||
const isAgentConnected = agents.some((a) => a.connected);
|
||||
return !isAgentConnected ? "finish" : "db-settings";
|
||||
},
|
||||
},
|
||||
{
|
||||
|
||||
@@ -51,6 +51,7 @@ export type OnboardingAgent = {
|
||||
id: string;
|
||||
name: string;
|
||||
edgeKey?: string;
|
||||
connected?: boolean;
|
||||
notifierId?: string;
|
||||
storageId?: string;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user