diff --git a/packages/desktop/app/AppState.ts b/packages/desktop/app/AppState.ts index ff9923c81..aec5acbe6 100644 --- a/packages/desktop/app/AppState.ts +++ b/packages/desktop/app/AppState.ts @@ -1,10 +1,7 @@ -import { MessageType } from '../test/TestIpcMessage' import { Store } from './javascripts/Main/Store/Store' import { StoreKeys } from './javascripts/Main/Store/StoreKeys' import { Paths, Urls } from './javascripts/Main/Types/Paths' import { UpdateState } from './javascripts/Main/UpdateManager' -import { handleTestMessage } from './javascripts/Main/Utils/Testing' -import { isTesting } from './javascripts/Main/Utils/Utils' import { WindowState } from './javascripts/Main/Window' export class AppState { @@ -27,12 +24,6 @@ export class AppState { this.store.set(StoreKeys.LastRunVersion, this.version) this.updates = new UpdateState(this) - - if (isTesting()) { - handleTestMessage(MessageType.AppStateCall, (method, ...args) => { - ;(this as any)[method](...args) - }) - } } public isRunningVersionForFirstTime(): boolean { diff --git a/packages/desktop/app/index.ts b/packages/desktop/app/index.ts index b2a4e0a1b..8fce6dfd9 100644 --- a/packages/desktop/app/index.ts +++ b/packages/desktop/app/index.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-console */ import { app, ipcMain, shell } from 'electron' import log from 'electron-log' import fs from 'fs-extra' @@ -9,8 +10,6 @@ import { Store } from './javascripts/Main/Store/Store' import { StoreKeys } from './javascripts/Main/Store/StoreKeys' import { isSnap } from './javascripts/Main/Types/Constants' import { Paths } from './javascripts/Main/Types/Paths' -import { setupTesting } from './javascripts/Main/Utils/Testing' -import { isTesting } from './javascripts/Main/Utils/Utils' import { CommandLineArgs } from './javascripts/Shared/CommandLineArgs' enableExperimentalFeaturesForFileAccessFix() @@ -39,10 +38,6 @@ if (userDataPathIndex > 0) { migrateSnapStorage() } -if (isTesting()) { - setupTesting() -} - log.transports.file.level = 'info' process.on('uncaughtException', (err) => { @@ -96,8 +91,12 @@ function migrateSnapStorage() { fs.moveSync(fullFilePath, path.join(dest, fileName), { overwrite: false, }) - } catch (error: any) { - console.error(`Migration: error occured while moving ${fullFilePath} to ${dest}:`, error?.message ?? error) + } catch (error) { + console.error( + `Migration: error occured while moving ${fullFilePath} to ${dest}:`, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (error as any)?.message ?? error, + ) } } @@ -110,18 +109,22 @@ function migrateSnapStorage() { * Backups location has not been altered by the user. Move it to the * user documents directory */ - console.log(`Migration: moving ${store.data.backupsLocation} to ${Paths.documentsDir}`) - const newLocation = path.join(Paths.documentsDir, path.basename(store.data.backupsLocation)) - try { - fs.copySync(store.data.backupsLocation, newLocation) - } catch (error: any) { - console.error( - `Migration: error occured while moving ${store.data.backupsLocation} to ${Paths.documentsDir}:`, - error?.message ?? error, - ) + const documentsDir = Paths.documentsDir + console.log(`Migration: moving ${store.data.backupsLocation} to ${documentsDir}`) + if (documentsDir) { + const newLocation = path.join(documentsDir, path.basename(store.data.backupsLocation)) + try { + fs.copySync(store.data.backupsLocation, newLocation) + } catch (error) { + console.error( + `Migration: error occured while moving ${store.data.backupsLocation} to ${documentsDir}:`, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (error as any)?.message ?? error, + ) + } + store.set(StoreKeys.LegacyTextBackupsLocation, newLocation) + console.log('Migration: finished moving backups directory.') } - store.set(StoreKeys.LegacyTextBackupsLocation, newLocation) - console.log('Migration: finished moving backups directory.') } } } diff --git a/packages/desktop/app/javascripts/Main/FileBackups/FileBackupsManager.ts b/packages/desktop/app/javascripts/Main/FileBackups/FileBackupsManager.ts index 8652621fb..b78cbd6fd 100644 --- a/packages/desktop/app/javascripts/Main/FileBackups/FileBackupsManager.ts +++ b/packages/desktop/app/javascripts/Main/FileBackups/FileBackupsManager.ts @@ -88,7 +88,7 @@ export class FilesBackupManager implements FileBackupsDevice { return value === true } - async getUserDocumentsDirectory(): Promise { + async getUserDocumentsDirectory(): Promise { return Paths.documentsDir } @@ -103,7 +103,12 @@ export class FilesBackupManager implements FileBackupsDevice { } const LegacyTextBackupsDirectory = 'Standard Notes Backups' - return path.join(Paths.homeDir, LegacyTextBackupsDirectory) + const homeDir = Paths.homeDir + if (homeDir) { + return path.join(homeDir, LegacyTextBackupsDirectory) + } + + return undefined } private getFileBackupsMappingFilePath(backupsLocation: string): string { diff --git a/packages/desktop/app/javascripts/Main/Packages/PackageManager.ts b/packages/desktop/app/javascripts/Main/Packages/PackageManager.ts index 639ea3c47..04c4ec4c3 100644 --- a/packages/desktop/app/javascripts/Main/Packages/PackageManager.ts +++ b/packages/desktop/app/javascripts/Main/Packages/PackageManager.ts @@ -1,3 +1,5 @@ +/* eslint-disable @typescript-eslint/no-non-null-assertion */ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { compareVersions } from 'compare-versions' import log from 'electron-log' import fs from 'fs' diff --git a/packages/desktop/app/javascripts/Main/Remote/RemoteBridge.ts b/packages/desktop/app/javascripts/Main/Remote/RemoteBridge.ts index 7114ebf27..6f81d00c5 100644 --- a/packages/desktop/app/javascripts/Main/Remote/RemoteBridge.ts +++ b/packages/desktop/app/javascripts/Main/Remote/RemoteBridge.ts @@ -247,7 +247,7 @@ export class RemoteBridge implements CrossProcessBridge { return this.fileBackups.migrateLegacyFileBackupsToNewStructure(newPath) } - getUserDocumentsDirectory(): Promise { + getUserDocumentsDirectory(): Promise { return this.fileBackups.getUserDocumentsDirectory() } diff --git a/packages/desktop/app/javascripts/Main/Types/Paths.ts b/packages/desktop/app/javascripts/Main/Types/Paths.ts index c0a22e4de..d1572a869 100644 --- a/packages/desktop/app/javascripts/Main/Types/Paths.ts +++ b/packages/desktop/app/javascripts/Main/Types/Paths.ts @@ -36,11 +36,19 @@ export const Paths = { get userDataDir(): string { return app.getPath('userData') }, - get homeDir(): string { - return app.getPath('home') + get homeDir(): string | undefined { + try { + return app.getPath('home') + } catch (error) { + return undefined + } }, - get documentsDir(): string { - return app.getPath('documents') + get documentsDir(): string | undefined { + try { + return app.getPath('documents') + } catch (error) { + return undefined + } }, get tempDir(): string { return app.getPath('temp') diff --git a/packages/desktop/app/javascripts/Renderer/DesktopDevice.ts b/packages/desktop/app/javascripts/Renderer/DesktopDevice.ts index efb0279da..d5587daef 100644 --- a/packages/desktop/app/javascripts/Renderer/DesktopDevice.ts +++ b/packages/desktop/app/javascripts/Renderer/DesktopDevice.ts @@ -152,7 +152,7 @@ export class DesktopDevice extends WebOrDesktopDevice implements DesktopDeviceIn return this.remoteBridge.wasLegacyTextBackupsExplicitlyDisabled() } - getUserDocumentsDirectory(): Promise { + getUserDocumentsDirectory(): Promise { return this.remoteBridge.getUserDocumentsDirectory() } diff --git a/packages/files/src/Domain/Device/FileBackupsDevice.ts b/packages/files/src/Domain/Device/FileBackupsDevice.ts index a66e73962..34cbfd426 100644 --- a/packages/files/src/Domain/Device/FileBackupsDevice.ts +++ b/packages/files/src/Domain/Device/FileBackupsDevice.ts @@ -49,7 +49,7 @@ interface PlaintextBackupsMethods { interface TextBackupsMethods { getTextBackupsCount(location: string): Promise saveTextBackupData(location: string, data: string): Promise - getUserDocumentsDirectory(): Promise + getUserDocumentsDirectory(): Promise } interface LegacyBackupsMethods { diff --git a/packages/services/src/Domain/Backups/FilesBackupService.ts b/packages/services/src/Domain/Backups/FilesBackupService.ts index 1cccda2cc..3d994222b 100644 --- a/packages/services/src/Domain/Backups/FilesBackupService.ts +++ b/packages/services/src/Domain/Backups/FilesBackupService.ts @@ -160,14 +160,21 @@ export class FilesBackupService } private async automaticallyEnableTextBackupsIfPreferenceNotSet(): Promise { - if (this.storage.getValue(StorageKey.TextBackupsEnabled) == undefined) { - this.storage.setValue(StorageKey.TextBackupsEnabled, true) - const location = await this.device.joinPaths( - await this.device.getUserDocumentsDirectory(), - await this.prependWorkspacePathForPath(TextBackupsDirectoryName), - ) - this.storage.setValue(StorageKey.TextBackupsLocation, location) + if (this.storage.getValue(StorageKey.TextBackupsEnabled) != undefined) { + return } + + this.storage.setValue(StorageKey.TextBackupsEnabled, true) + const documentsDir = await this.device.getUserDocumentsDirectory() + if (!documentsDir) { + return + } + + const location = await this.device.joinPaths( + documentsDir, + await this.prependWorkspacePathForPath(TextBackupsDirectoryName), + ) + this.storage.setValue(StorageKey.TextBackupsLocation, location) } openAllDirectoriesContainingBackupFiles(): void { diff --git a/packages/services/src/Domain/HomeServer/HomeServerService.ts b/packages/services/src/Domain/HomeServer/HomeServerService.ts index 599698a4d..55cab3dfa 100644 --- a/packages/services/src/Domain/HomeServer/HomeServerService.ts +++ b/packages/services/src/Domain/HomeServer/HomeServerService.ts @@ -170,6 +170,9 @@ export class HomeServerService let location = await this.getHomeServerDataLocation() if (!location) { const documentsDirectory = await this.desktopDevice.getUserDocumentsDirectory() + if (!documentsDirectory) { + return + } location = `${documentsDirectory}/${this.HOME_SERVER_DATA_DIRECTORY_NAME}` }