From 70fd55e59a1576efb5d2c542fbf92de8d2586cc1 Mon Sep 17 00:00:00 2001 From: filip mertens Date: Tue, 12 Mar 2024 16:30:34 +0100 Subject: [PATCH] add gist support --- .../src/app/plugins/remix-templates.ts | 6 ++++- apps/remixdesktop/src/plugins/templates.ts | 24 ++++++++++------- .../remix-core-plugin/src/lib/gist-handler.ts | 26 +++++++++++-------- .../workspace/src/lib/actions/index.ts | 1 + .../workspace/src/lib/actions/workspace.ts | 1 + 5 files changed, 37 insertions(+), 21 deletions(-) diff --git a/apps/remix-ide/src/app/plugins/remix-templates.ts b/apps/remix-ide/src/app/plugins/remix-templates.ts index e7846fbf47..d0aab28ecf 100644 --- a/apps/remix-ide/src/app/plugins/remix-templates.ts +++ b/apps/remix-ide/src/app/plugins/remix-templates.ts @@ -5,7 +5,7 @@ const profile = { name: 'remix-templates', displayName: 'remix-templates', description: 'Remix Templates plugin', - methods: ['getTemplate', 'loadTemplateInNewWindow'], + methods: ['getTemplate', 'loadTemplateInNewWindow', 'loadFilesInNewWindow'], } export class TemplatesPlugin extends Plugin { @@ -26,5 +26,9 @@ export class TemplatesPlugin extends Plugin { const files = await this.getTemplate(template, opts) this.call('electronTemplates', 'loadTemplateInNewWindow', files) } + + async loadFilesInNewWindow (files: any) { + this.call('electronTemplates', 'loadTemplateInNewWindow', files) + } } diff --git a/apps/remixdesktop/src/plugins/templates.ts b/apps/remixdesktop/src/plugins/templates.ts index aefadcae1b..e9406333e2 100644 --- a/apps/remixdesktop/src/plugins/templates.ts +++ b/apps/remixdesktop/src/plugins/templates.ts @@ -42,20 +42,26 @@ class TemplatesPluginClient extends ElectronBasePluginClient { super(webContentsId, profile) } - async loadTemplateInNewWindow (files: any) { + async loadTemplateInNewWindow(files: any) { - let folder = await this.call('fs' as any, 'selectFolder', null ,'Select or create a folder to load the template in', 'Set as destination folder for the template') + let folder = await this.call('fs' as any, 'selectFolder', null, 'Select or create a folder to load the template in', 'Set as destination folder for the template') if (!folder || folder === '') return // @ts-ignore for (const file in files) { try { - if(!folder.endsWith('/')) folder += '/' - - await fs.mkdir(path.dirname(folder + file), { recursive: true}) - await fs.writeFile(folder + file, files[file], { - encoding: 'utf8' - }) + if (!folder.endsWith('/')) folder += '/' + + await fs.mkdir(path.dirname(folder + file), { recursive: true }) + if (typeof files[file] !== 'string' && files[file].content) { + await fs.writeFile(folder + files[file].filename, files[file].content, { + encoding: 'utf8', + }) + } else { + await fs.writeFile(folder + file, files[file], { + encoding: 'utf8' + }) + } } catch (error) { console.error(error) } @@ -63,7 +69,7 @@ class TemplatesPluginClient extends ElectronBasePluginClient { createWindow(folder) } - async openTemplate(){ + async openTemplate() { this.call('filePanel' as any, 'loadTemplate') } diff --git a/libs/remix-core-plugin/src/lib/gist-handler.ts b/libs/remix-core-plugin/src/lib/gist-handler.ts index 83c932d4c6..80a4cb74a7 100644 --- a/libs/remix-core-plugin/src/lib/gist-handler.ts +++ b/libs/remix-core-plugin/src/lib/gist-handler.ts @@ -115,23 +115,26 @@ 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 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 = { @@ -143,6 +146,7 @@ export class GistHandler extends Plugin { this.call('notification', 'alert', modalContent) } }) + */ }) } } diff --git a/libs/remix-ui/workspace/src/lib/actions/index.ts b/libs/remix-ui/workspace/src/lib/actions/index.ts index 249db2fe47..6ed7e1244c 100644 --- a/libs/remix-ui/workspace/src/lib/actions/index.ts +++ b/libs/remix-ui/workspace/src/lib/actions/index.ts @@ -185,6 +185,7 @@ export const initWorkspace = (filePanelPlugin) => async (reducerDispatch: React. if (params.opendir) { params.opendir = decodeURIComponent(params.opendir) plugin.call('notification', 'toast', `opening ${params.opendir}...`) + console.log('opening', params.opendir) await plugin.call('fs', 'setWorkingDir', params.opendir) } const currentPath = await plugin.call('fs', 'getWorkingDir') diff --git a/libs/remix-ui/workspace/src/lib/actions/workspace.ts b/libs/remix-ui/workspace/src/lib/actions/workspace.ts index 047975301d..3476851c98 100644 --- a/libs/remix-ui/workspace/src/lib/actions/workspace.ts +++ b/libs/remix-ui/workspace/src/lib/actions/workspace.ts @@ -134,6 +134,7 @@ export const createWorkspace = async ( isGitRepo: boolean = false, createCommit: boolean = true ) => { + console.log('createWorkspace', workspaceName, workspaceTemplateName, opts, isEmpty, isGitRepo, createCommit) if (plugin.registry.get('platform').api.isDesktop()) { if (workspaceTemplateName) { await plugin.call('remix-templates', 'loadTemplateInNewWindow', workspaceTemplateName, opts)