From d63fc524bf914e97fafd9091a64954871c25b37d Mon Sep 17 00:00:00 2001 From: Henry Heino <46334387+personalizedrefrigerator@users.noreply.github.com> Date: Wed, 6 Dec 2023 11:24:00 -0800 Subject: [PATCH] Chore: Change the return type of `shim.fsDriver()` from `any` to `FsDriverBase` (#9460) --- packages/app-desktop/InteropServiceHelper.ts | 4 +-- .../utils/fs-driver/fs-driver-rn.ts | 8 ++---- packages/lib/fs-driver-base.ts | 28 +++++++++++++++++-- .../defaultPlugins/defaultPluginsUtils.ts | 4 +-- .../lib/services/rest/routes/notes.test.ts | 2 +- packages/lib/shim.ts | 3 +- 6 files changed, 35 insertions(+), 14 deletions(-) diff --git a/packages/app-desktop/InteropServiceHelper.ts b/packages/app-desktop/InteropServiceHelper.ts index 31293fbe04..5717b9ec20 100644 --- a/packages/app-desktop/InteropServiceHelper.ts +++ b/packages/app-desktop/InteropServiceHelper.ts @@ -50,7 +50,7 @@ export default class InteropServiceHelper { const cleanup = () => { if (win) win.destroy(); - if (htmlFile) shim.fsDriver().remove(htmlFile); + if (htmlFile) void shim.fsDriver().remove(htmlFile); }; try { @@ -67,7 +67,7 @@ export default class InteropServiceHelper { win = bridge().newBrowserWindow(windowOptions); - return new Promise((resolve, reject) => { + return new Promise((resolve, reject) => { win.webContents.on('did-finish-load', () => { // did-finish-load will trigger when most assets are done loading, probably diff --git a/packages/app-mobile/utils/fs-driver/fs-driver-rn.ts b/packages/app-mobile/utils/fs-driver/fs-driver-rn.ts index b8fdc6494f..f0dc3e6445 100644 --- a/packages/app-mobile/utils/fs-driver/fs-driver-rn.ts +++ b/packages/app-mobile/utils/fs-driver/fs-driver-rn.ts @@ -301,12 +301,8 @@ export default class FsDriverRN extends FsDriverBase { return output ? output : null; } - public resolve(path: string) { - throw new Error(`Not implemented: resolve(): ${path}`); - } - - public resolveRelativePathWithinDir(_baseDir: string, relativePath: string) { - throw new Error(`Not implemented: resolveRelativePathWithinDir(): ${relativePath}`); + public resolve(...paths: string[]): string { + throw new Error(`Not implemented: resolve(): ${JSON.stringify(paths)}`); } public async md5File(path: string): Promise { diff --git a/packages/lib/fs-driver-base.ts b/packages/lib/fs-driver-base.ts index 5c03eb77ab..76061bb26a 100644 --- a/packages/lib/fs-driver-base.ts +++ b/packages/lib/fs-driver-base.ts @@ -4,8 +4,8 @@ import { filename, fileExtension } from './path-utils'; const md5 = require('md5'); export interface Stat { - birthtime: number; - mtime: number; + birthtime: Date; + mtime: Date; isDirectory(): boolean; path: string; size: number; @@ -49,6 +49,10 @@ export default class FsDriverBase { throw new Error('Not implemented'); } + public async rename(source: string, dest: string) { + return this.move(source, dest); + } + public async readFileChunk(_handle: any, _length: number, _encoding = 'base64'): Promise { throw new Error('Not implemented'); } @@ -82,6 +86,26 @@ export default class FsDriverBase { throw new Error('Not implemented'); } + public async md5File(_path: string): Promise { + throw new Error('Not implemented: md5File'); + } + + public resolve(..._paths: string[]): string { + throw new Error('Not implemented: resolve'); + } + + public resolveRelativePathWithinDir(_baseDir: string, relativePath: string): string { + throw new Error(`Not implemented: resolveRelativePathWithinDir(): ${relativePath}`); + } + + public getExternalDirectoryPath(): Promise { + throw new Error('Not implemented: getExternalDirectoryPath'); + } + + public isUsingAndroidSAF() { + return false; + } + protected async readDirStatsHandleRecursion_(basePath: string, stat: Stat, output: Stat[], options: ReadDirStatsOptions): Promise { if (options.recursive && stat.isDirectory()) { const subPath = `${basePath}/${stat.path}`; diff --git a/packages/lib/services/plugins/defaultPlugins/defaultPluginsUtils.ts b/packages/lib/services/plugins/defaultPlugins/defaultPluginsUtils.ts index 9376dc4b51..37d86d1599 100644 --- a/packages/lib/services/plugins/defaultPlugins/defaultPluginsUtils.ts +++ b/packages/lib/services/plugins/defaultPlugins/defaultPluginsUtils.ts @@ -31,8 +31,8 @@ export async function installDefaultPlugins(service: PluginService, defaultPlugi const installedPlugins = Setting.value('installedDefaultPlugins'); - for (let pluginId of defaultPluginsPaths) { - pluginId = pluginId.path; + for (const pluginStat of defaultPluginsPaths) { + const pluginId = pluginStat.path; // if pluginId is present in 'installedDefaultPlugins' array or it doesn't have default plugin ID, then we won't install it again as default plugin if (installedPlugins.includes(pluginId) || !defaultPluginsId.includes(pluginId)) continue; diff --git a/packages/lib/services/rest/routes/notes.test.ts b/packages/lib/services/rest/routes/notes.test.ts index fc786a792c..6e49eb11a7 100644 --- a/packages/lib/services/rest/routes/notes.test.ts +++ b/packages/lib/services/rest/routes/notes.test.ts @@ -38,7 +38,7 @@ describe('routes/notes', () => { jest.spyOn(shim, 'fsDriver').mockImplementation(() => { return { copy: fsDriverCopySpy, - }; + } as any; }); jest.spyOn(uuid, 'create').mockReturnValue('mocked_uuid_value'); diff --git a/packages/lib/shim.ts b/packages/lib/shim.ts index c09bbfc705..f16e94f545 100644 --- a/packages/lib/shim.ts +++ b/packages/lib/shim.ts @@ -1,5 +1,6 @@ import * as React from 'react'; import { NoteEntity, ResourceEntity } from './services/database/types'; +import type FsDriverBase from './fs-driver-base'; let isTestingEnv_ = false; @@ -203,7 +204,7 @@ const shim = { FormData: typeof FormData !== 'undefined' ? FormData : null, - fsDriver: (): any => { + fsDriver: (): FsDriverBase => { throw new Error('Not implemented'); },