diff --git a/packages/old-import/src/import/collections/integration-collection.ts b/packages/old-import/src/import/collections/integration-collection.ts index dd21cd59f..1f67481dd 100644 --- a/packages/old-import/src/import/collections/integration-collection.ts +++ b/packages/old-import/src/import/collections/integration-collection.ts @@ -7,12 +7,17 @@ import { createDbInsertCollection } from "./common"; export const createIntegrationInsertCollection = ( preparedIntegrations: PreparedIntegration[], - encryptionToken: string | null, + encryptionToken: string | null | undefined, ) => { const insertCollection = createDbInsertCollection(["integrations", "integrationSecrets"]); + + if (preparedIntegrations.length === 0) { + return insertCollection; + } + logger.info(`Preparing integrations for insert collection count=${preparedIntegrations.length}`); - if (encryptionToken === null) { + if (encryptionToken === null || encryptionToken === undefined) { logger.debug("Skipping integration decryption due to missing token"); return insertCollection; } diff --git a/packages/old-import/src/import/collections/user-collection.ts b/packages/old-import/src/import/collections/user-collection.ts index 096a06591..e98307590 100644 --- a/packages/old-import/src/import/collections/user-collection.ts +++ b/packages/old-import/src/import/collections/user-collection.ts @@ -6,12 +6,19 @@ import { mapAndDecryptUsers } from "../../mappers/map-user"; import type { OldmarrImportUser } from "../../user-schema"; import { createDbInsertCollection } from "./common"; -export const createUserInsertCollection = (importUsers: OldmarrImportUser[], encryptionToken: string | null) => { +export const createUserInsertCollection = ( + importUsers: OldmarrImportUser[], + encryptionToken: string | null | undefined, +) => { const insertCollection = createDbInsertCollection(["users", "groups", "groupMembers", "groupPermissions"]); + if (importUsers.length === 0) { + return insertCollection; + } + logger.info(`Preparing users for insert collection count=${importUsers.length}`); - if (encryptionToken === null) { + if (encryptionToken === null || encryptionToken === undefined) { logger.debug("Skipping user decryption due to missing token"); return insertCollection; } diff --git a/packages/old-import/src/import/input.ts b/packages/old-import/src/import/input.ts index 13f28c774..3ea7119aa 100644 --- a/packages/old-import/src/import/input.ts +++ b/packages/old-import/src/import/input.ts @@ -20,5 +20,5 @@ export const importInitialOldmarrInputSchema = zfd.formData({ const map = boardSelectionMapSchema.parse(SuperJSON.parse(value)); return map; }), - token: zfd.text().nullable(), + token: zfd.text().nullable().optional(), }); diff --git a/packages/old-import/src/import/validate-token.ts b/packages/old-import/src/import/validate-token.ts index ac01cf20a..74e43e52e 100644 --- a/packages/old-import/src/import/validate-token.ts +++ b/packages/old-import/src/import/validate-token.ts @@ -1,6 +1,6 @@ import { decryptSecretWithKey } from "@homarr/common/server"; -export const ensureValidTokenOrThrow = (checksum: string | undefined, encryptionToken: string | null) => { +export const ensureValidTokenOrThrow = (checksum: string | undefined, encryptionToken: string | null | undefined) => { if (!encryptionToken || !checksum) return; const [first, second] = checksum.split("\n"); diff --git a/packages/old-import/src/move-widgets-and-apps-merge.ts b/packages/old-import/src/move-widgets-and-apps-merge.ts index 2111e5d9e..68abcb351 100644 --- a/packages/old-import/src/move-widgets-and-apps-merge.ts +++ b/packages/old-import/src/move-widgets-and-apps-merge.ts @@ -81,13 +81,26 @@ export const moveWidgetsAndAppsIfMerge = ( } if (configuration.sidebarBehaviour === "last-section") { - if (old.settings.customization.layout.enabledLeftSidebar) { + const areas = [...old.apps.map((app) => app.area), ...old.widgets.map((widget) => widget.area)]; + if ( + old.settings.customization.layout.enabledLeftSidebar || + areas.some((area) => area.type === "sidebar" && area.properties.location === "left") + ) { offset = moveWidgetsAndAppsInLeftSidebar(old, firstId, offset, configuration.screenSize); } - if (old.settings.customization.layout.enabledRightSidebar) { + if ( + old.settings.customization.layout.enabledRightSidebar || + areas.some((area) => area.type === "sidebar" && area.properties.location === "right") + ) { moveWidgetsAndAppsInRightSidebar(old, firstId, offset, configuration.screenSize); } + } else { + // Remove all widgets and apps in the sidebar + return { + apps: old.apps.filter((app) => app.area.type !== "sidebar"), + widgets: old.widgets.filter((app) => app.area.type !== "sidebar"), + }; } return { apps: old.apps, widgets: old.widgets }; diff --git a/packages/old-schema/src/app.ts b/packages/old-schema/src/app.ts index 79732af92..87bedef25 100644 --- a/packages/old-schema/src/app.ts +++ b/packages/old-schema/src/app.ts @@ -69,7 +69,7 @@ export const oldmarrAppSchema = z behaviour: appBehaviourSchema, network: appNetworkSchema, appearance: appAppearanceSchema, - integration: appIntegrationSchema.optional(), + integration: appIntegrationSchema.optional().nullable(), }) .and(tileBaseSchema);