From cfe278d362bd84c650d2eaf86e4d08eacaea2cdc Mon Sep 17 00:00:00 2001 From: yann300 Date: Wed, 21 Feb 2024 13:08:29 +0100 Subject: [PATCH] fix creating workspace from gist load --- apps/remix-ide-e2e/src/tests/gist.test.ts | 5 +++-- libs/remix-core-plugin/src/lib/gist-handler.ts | 10 ++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/apps/remix-ide-e2e/src/tests/gist.test.ts b/apps/remix-ide-e2e/src/tests/gist.test.ts index e0a2e15996..ff0c60f23a 100644 --- a/apps/remix-ide-e2e/src/tests/gist.test.ts +++ b/apps/remix-ide-e2e/src/tests/gist.test.ts @@ -143,8 +143,8 @@ module.exports = { .modalFooterOKClick('gisthandler') .pause(10000) .openFile(`README.txt`) - .waitForElementVisible(`div[data-path='default_workspace/README.txt']`) - .assert.containsText(`div[data-path='default_workspace/README.txt'] > span`, 'README.txt') + .waitForElementVisible(`div[data-path='gist ${testData.validGistId}/README.txt']`) + .assert.containsText(`div[data-path='gist ${testData.validGistId}/README.txt'] > span`, 'README.txt') }, 'Load Gist from URL and verify truncated files are loaded #group3': function (browser: NightwatchBrowser) { @@ -152,6 +152,7 @@ module.exports = { browser .url('http://127.0.0.1:8080/#gist=' + gistId) // loading the gist .refreshPage() + .currentWorkspaceIs('gist ' + gistId) .waitForElementVisible('*[data-id="remixIdeIconPanel"]', 15000) .waitForElementVisible(`#fileExplorerView li[data-path='contracts']`, 30000) .openFile(`contracts/2_Owner.sol`) diff --git a/libs/remix-core-plugin/src/lib/gist-handler.ts b/libs/remix-core-plugin/src/lib/gist-handler.ts index e204b21a1b..c3a53a75f1 100644 --- a/libs/remix-core-plugin/src/lib/gist-handler.ts +++ b/libs/remix-core-plugin/src/lib/gist-handler.ts @@ -114,6 +114,16 @@ export class GistHandler extends Plugin { return } + 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', `workspace "${gistIdWorkspace}" already exist`) + 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, '/')