From bbd9f607cdf137b400d9e4b48a1c5037171d2051 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Wed, 12 Mar 2025 08:31:45 +0000 Subject: [PATCH] Wrap sample data creation with custom error catching and move link generation out of main controller --- .../server/src/api/controllers/application.ts | 39 ++++++++++++------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/packages/server/src/api/controllers/application.ts b/packages/server/src/api/controllers/application.ts index a103ad597e..5c11d71613 100644 --- a/packages/server/src/api/controllers/application.ts +++ b/packages/server/src/api/controllers/application.ts @@ -198,6 +198,19 @@ async function addSampleDataScreen() { await db.put(screen) } +function addSampleDataNavLinks(app: App) { + if (app.navigation) { + app.navigation.links = [ + { + text: "Inventory", + url: "/inventory", + type: "link", + roleId: roles.BUILTIN_ROLE_IDS.BASIC, + }, + ] + } +} + export const addSampleData = async ( ctx: UserCtx ) => { @@ -311,18 +324,6 @@ async function performAppCreate( await updateUserColumns(appId, db, ctx.user._id!) } - // Add link to sample data page if required - const newLinks = addSampleData - ? [ - { - text: "Inventory", - url: "/inventory", - type: "link", - roleId: roles.BUILTIN_ROLE_IDS.BASIC, - }, - ] - : [] - const newApplication: App = { _id: DocumentType.APP_METADATA, _rev: undefined, @@ -344,7 +345,7 @@ async function performAppCreate( navWidth: "Large", navBackground: "var(--spectrum-global-color-static-blue-800)", navTextColor: "var(--spectrum-global-color-static-white)", - links: newLinks, + links: [], }, theme: DefaultAppTheme, customTheme: { @@ -358,6 +359,10 @@ async function performAppCreate( creationVersion: undefined, } + if (addSampleData) { + addSampleDataNavLinks(newApplication) + } + if (!isImport) { newApplication.creationVersion = envCore.VERSION } @@ -406,8 +411,12 @@ async function performAppCreate( // Add sample datasource and example screen for non-templates/non-imports if (addSampleData) { - await addSampleDataDocs() - await addSampleDataScreen() + try { + await addSampleDataDocs() + await addSampleDataScreen() + } catch (err) { + ctx.throw(400, "App created, but failed to add sample data") + } } const latestMigrationId = appMigrations.getLatestEnabledMigrationId()