diff --git a/libs/remix-core-plugin/src/lib/gist-handler.ts b/libs/remix-core-plugin/src/lib/gist-handler.ts index 80a4cb74a7..afe415fc6b 100644 --- a/libs/remix-core-plugin/src/lib/gist-handler.ts +++ b/libs/remix-core-plugin/src/lib/gist-handler.ts @@ -2,6 +2,7 @@ 'use strict' import { Plugin } from '@remixproject/engine' import isElectron from 'is-electron' +import { Registry } from '@remix-project/remix-lib' interface StringByString { [key: string]: string; @@ -17,12 +18,16 @@ const profile = { type GistCallBackFn = (gistId: string) => void export class GistHandler extends Plugin { - constructor () { + isDesktop: boolean = false + constructor() { super(profile) + if (Registry.getInstance().get('platform').api.isDesktop()) { + this.isDesktop = true + } } - async handleLoad (gistId: string | null, cb: GistCallBackFn) { - if (!cb) cb = () => {} + async handleLoad(gistId: string | null, cb: GistCallBackFn) { + if (!cb) cb = () => { } let loadingFromGist = false if (!gistId) { @@ -36,7 +41,7 @@ export class GistHandler extends Plugin { title: 'Load a Gist', message: 'Enter the ID of the Gist or URL you would like to load.', modalType: 'prompt', - okLabel: 'OK', + okLabel: (this.isDesktop ? 'Load and select destination' : 'OK'), cancelLabel: 'Cancel', okFn: (value) => { setTimeout(() => resolve(value), 0) @@ -86,7 +91,7 @@ export class GistHandler extends Plugin { return loadingFromGist } - load (gistId: string | null) { + load(gistId: string | null) { const self = this return self.handleLoad(gistId, async (gistId: string | null) => { let data: any @@ -115,38 +120,39 @@ export class GistHandler extends Plugin { } const gistIdWorkspace = 'gist ' + gistId - //const workspaces = await this.call('filePanel', 'getWorkspaces') - //const found = workspaces.find((workspace) => workspace.name === gistIdWorkspace) - //if (found) { - // await this.call('notification', 'alert', { - // id: 'gistAlert', - // message: `workspace "${gistIdWorkspace}" already exists`, - // }) - // return - // } - //await this.call('filePanel', 'createWorkspace', 'gist ' + gistId, '', true) - //await this.call('filePanel', 'switchToWorkspace', { name: 'gist ' + gistId, isLocalHost: false }) - const obj: StringByString = {} Object.keys(data.files).forEach((element) => { const path = element.replace(/\.\.\./g, '/') obj['/' + path] = data.files[element] }) - console.log(obj) - await this.call('remix-templates', 'loadFilesInNewWindow', obj) - /* - this.call('fileManager', 'setBatchFiles', obj, isElectron()? 'electron':'workspace', true, async (errorSavingFiles: any) => { - if (errorSavingFiles) { - const modalContent = { - id: 'gisthandler', - title: 'Gist load error', - message: errorSavingFiles.message || errorSavingFiles - } - this.call('notification', 'alert', modalContent) + + if (this.isDesktop) { + await this.call('remix-templates', 'loadFilesInNewWindow', obj) + } else { + const workspaces = await this.call('filePanel', 'getWorkspaces') + const found = workspaces.find((workspace) => workspace.name === gistIdWorkspace) + if (found) { + await this.call('notification', 'alert', { + id: 'gistAlert', + message: `workspace "${gistIdWorkspace}" already exists`, + }) + return } - }) - */ + await this.call('filePanel', 'createWorkspace', 'gist ' + gistId, '', true) + await this.call('filePanel', 'switchToWorkspace', { name: 'gist ' + gistId, isLocalHost: false }) + this.call('fileManager', 'setBatchFiles', obj, isElectron() ? 'electron' : 'workspace', true, async (errorSavingFiles: any) => { + if (errorSavingFiles) { + const modalContent = { + id: 'gisthandler', + title: 'Gist load error', + message: errorSavingFiles.message || errorSavingFiles + + } + this.call('notification', 'alert', modalContent) + } + }) + } }) } }