From df1fa6b2680c99ddb30e93b1845999d0cd6feb82 Mon Sep 17 00:00:00 2001 From: ThinLiquid Date: Wed, 6 Dec 2023 02:10:07 +0000 Subject: [PATCH] =?UTF-8?q?[=F0=9F=9A=91]=20Fixed=20FlowOS=20apps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/instances/Flow.ts | 56 ++++++++++++++++++++++++++++++------------- 1 file changed, 40 insertions(+), 16 deletions(-) diff --git a/src/instances/Flow.ts b/src/instances/Flow.ts index 322e003..612970b 100644 --- a/src/instances/Flow.ts +++ b/src/instances/Flow.ts @@ -3,17 +3,19 @@ import nullIcon from '../assets/icons/application-default-icon.svg' class Flow { apps: LoadedApp[] = [] - appList: string[] = [ - '../builtin/apps/settings.ts', - '../builtin/apps/music.ts', - '../builtin/apps/files.ts', - '../builtin/apps/editor.ts', - '../builtin/apps/info.ts', - '../builtin/apps/manager.ts', - '../builtin/apps/browser.ts', - '../builtin/apps/store.ts' + defaultAppList: string[] = [ + 'settings', + 'music', + 'files', + 'editor', + 'info', + 'manager', + 'browser', + 'store' ] + appList: string[] = [] + plugins: LoadedPlugin[] = [] pluginList: string[] = [] @@ -22,17 +24,22 @@ class Flow { */ private async initApps (): Promise { window.preloader.setPending('apps') - window.preloader.setStatus('importing default apps...') + window.preloader.setStatus('importing apps...') - await (await window.fs.promises.readdir('/Applications')).forEach((file) => { - window.fs.promises.readFile('/Applications/' + file).then(content => { - this.appList.push(`data:text/javascript;base64,${btoa(content.toString())}`) - }).catch(console.error) + window.fs.exists('/Applications', (exists) => { + if (!exists) window.fs.promises.mkdir('/Applications').catch(e => console.error(e)) + window.fs.promises.readdir('/Applications').then((list) => { + list.forEach((file) => { + window.fs.promises.readFile('/Applications/' + file).then(content => { + this.appList.push(`data:text/javascript;base64,${btoa(content.toString())}`) + }).catch((e) => console.error(e)) + }) + }).catch(e => console.error(e)) }) - for (const appPath of this.appList) { + for (const appPath of this.defaultAppList) { window.preloader.setStatus(`importing default apps\n${appPath}`) - const { default: ImportedApp } = await import(`${appPath}`).catch(async (e: Error) => { + const { default: ImportedApp } = await import(`../builtin/apps/${appPath}.ts`).catch(async (e: Error) => { console.error(e) await window.preloader.setError('apps') window.preloader.setStatus(`unable to import ${appPath}\n${e.name}: ${e.message}`) @@ -44,6 +51,23 @@ class Flow { this.addApp(app) } + if (this.appList.length > 0) { + for (const appPath of this.appList) { + window.preloader.setStatus(`importing appstore apps\n${appPath}`) + + const { default: ImportedApp } = await import(/* @vite-ignore */ appPath).catch(async (e: Error) => { + console.error(e) + await window.preloader.setError('apps') + window.preloader.setStatus(`unable to import ${appPath}\n${e.name}: ${e.message}`) + }) + const app = new ImportedApp() + app.builtin = false + app.meta.icon = app.meta.icon ?? nullIcon + + this.addApp(app) + } + } + window.wm.launcher.style.opacity = '0' window.wm.launcher.style.filter = 'blur(0px)' window.wm.launcher.style.pointerEvents = 'none'