From e89954e3e32d6c0a6753675b1ecf07dfc1ca6713 Mon Sep 17 00:00:00 2001 From: yann300 Date: Wed, 19 Jun 2024 15:00:22 +0200 Subject: [PATCH 01/53] increase timeout --- apps/remix-ide/src/remixEngine.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/remix-ide/src/remixEngine.js b/apps/remix-ide/src/remixEngine.js index baaf75deda..479beac7ad 100644 --- a/apps/remix-ide/src/remixEngine.js +++ b/apps/remix-ide/src/remixEngine.js @@ -10,7 +10,7 @@ export class RemixEngine extends Engine { setPluginOption ({ name, kind }) { if (kind === 'provider') return { queueTimeout: 60000 * 2 } if (name === 'LearnEth') return { queueTimeout: 60000 } - if (name === 'dGitProvider') return { queueTimeout: 60000 * 4 } + if (name === 'dGitProvider') return { queueTimeout: 60000 * 30 } if (name === 'slither') return { queueTimeout: 60000 * 4 } // Requires when a solc version is installed if (name === 'hardhat') return { queueTimeout: 60000 * 4 } if (name === 'truffle') return { queueTimeout: 60000 * 4 } From fa810dab66b0cd61406dcdfa581ff954213e4f11 Mon Sep 17 00:00:00 2001 From: yann300 Date: Wed, 19 Jun 2024 15:00:40 +0200 Subject: [PATCH 02/53] fix typo --- apps/remix-ide/src/app/files/fileManager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/remix-ide/src/app/files/fileManager.ts b/apps/remix-ide/src/app/files/fileManager.ts index b2d0117246..bf0564d814 100644 --- a/apps/remix-ide/src/app/files/fileManager.ts +++ b/apps/remix-ide/src/app/files/fileManager.ts @@ -24,7 +24,7 @@ const profile = { methods: ['closeAllFiles', 'closeFile', 'file', 'exists', 'open', 'writeFile', 'writeMultipleFiles', 'writeFileNoRewrite', 'readFile', 'copyFile', 'copyDir', 'rename', 'mkdir', 'readdir', 'dirList', 'fileList', 'remove', 'getCurrentFile', 'getFile', 'getFolder', 'setFile', 'switchFile', 'refresh', 'getProviderOf', 'getProviderByName', 'getPathFromUrl', 'getUrlFromPath', - 'saveCurrentFile', 'setBatchFiles', 'isGitRepo', 'isFile', 'isDirectory', 'hasGitSubmodule', 'copyFolderToJson' + 'saveCurrentFile', 'setBatchFiles', 'isGitRepo', 'isFile', 'isDirectory', 'hasGitSubmodules', 'copyFolderToJson' ], kind: 'file-system' } From 9dee56776f1f42df4a3b00aa198d8b5a1f6eafe1 Mon Sep 17 00:00:00 2001 From: yann300 Date: Wed, 19 Jun 2024 15:00:59 +0200 Subject: [PATCH 03/53] fix params & label & warn submodule --- apps/remix-ide/src/app/files/dgitProvider.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/remix-ide/src/app/files/dgitProvider.ts b/apps/remix-ide/src/app/files/dgitProvider.ts index 10d2c76c7a..10154c1e5b 100644 --- a/apps/remix-ide/src/app/files/dgitProvider.ts +++ b/apps/remix-ide/src/app/files/dgitProvider.ts @@ -436,7 +436,7 @@ class DGitProvider extends Plugin { const permission = await this.askUserPermission('clone', 'Import multiple files into your workspaces.') if (!permission) return false if (parseFloat(this.calculateLocalStorage()) > 10000) throw new Error('The local storage of the browser is full.') - if (!workspaceExists) await this.call('filePanel', 'createWorkspace', workspaceName || `workspace_${Date.now()}`, true) + if (!workspaceExists) await this.call('filePanel', 'createWorkspace', workspaceName || `workspace_${Date.now()}`, '', true) const cmd = { url: input.url, singleBranch: input.singleBranch, @@ -445,7 +445,7 @@ class DGitProvider extends Plugin { ...await this.parseInput(input), ...await this.getGitConfig() } - this.call('terminal', 'logHtml', `Cloning ${input.url}...`) + this.call('terminal', 'logHtml', `Cloning ${input.url}... please wait...`) const result = await git.clone(cmd) if (!workspaceExists) { setTimeout(async () => { @@ -453,6 +453,9 @@ class DGitProvider extends Plugin { }, 1000) } this.emit('clone') + this.call('fileManager', 'hasGitSubmodules').then((submodules) => { + if (submodules) this.call('terminal', 'log', { type: 'warn', value: 'This repository has submodules. Please update submodules to pull all the dependencies.'}) + }) return result } } From 21b79c931aafbba7ac02877bd8ca911d80501ca8 Mon Sep 17 00:00:00 2001 From: yann300 Date: Wed, 19 Jun 2024 23:31:43 +0200 Subject: [PATCH 04/53] update text color --- apps/remix-ide/src/app/files/dgitProvider.ts | 5 ++++- libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx | 8 +++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/apps/remix-ide/src/app/files/dgitProvider.ts b/apps/remix-ide/src/app/files/dgitProvider.ts index 10154c1e5b..3245820f21 100644 --- a/apps/remix-ide/src/app/files/dgitProvider.ts +++ b/apps/remix-ide/src/app/files/dgitProvider.ts @@ -454,7 +454,10 @@ class DGitProvider extends Plugin { } this.emit('clone') this.call('fileManager', 'hasGitSubmodules').then((submodules) => { - if (submodules) this.call('terminal', 'log', { type: 'warn', value: 'This repository has submodules. Please update submodules to pull all the dependencies.'}) + if (submodules) { + this.call('terminal', 'log', { type: 'warn', value: 'This repository has submodules. Please update submodules to pull all the dependencies.'}) + this.emit('repositoryWithSubmodulesCloned') + } }) return result } diff --git a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx index 2368fc6a83..baa44e9f0b 100644 --- a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx +++ b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx @@ -30,6 +30,7 @@ export function Workspace() { const [showDropdown, setShowDropdown] = useState(false) const [showIconsMenu, hideIconsMenu] = useState(false) const [showBranches, setShowBranches] = useState(false) + const [highlightUpdateSubmodules, setHighlightUpdateSubmodules] = useState(false) const [branchFilter, setBranchFilter] = useState('') const displayOzCustomRef = useRef() const mintableCheckboxRef = useRef() @@ -123,6 +124,10 @@ export function Workspace() { cloneGitRepository() } } + + global.plugin.on('dGitProvider', 'repositoryWithSubmodulesCloned', () => { + setHighlightUpdateSubmodules(true) + }) }, []) useEffect(() => { @@ -677,6 +682,7 @@ export function Workspace() { const updateSubModules = async () => { try { + setHighlightUpdateSubmodules(false) await global.dispatchUpdateGitSubmodules() } catch (e) { console.error(e) @@ -1208,7 +1214,7 @@ export function Workspace() { {selectedWorkspace.hasGitSubmodules?
{global.fs.browser.isRequestingCloning ?
updating submodules
: -
update submodules
} +
update submodules
}
: null}
From 9485494596997398181baa388a736e9cdf1d8b2b Mon Sep 17 00:00:00 2001 From: yann300 Date: Thu, 20 Jun 2024 10:38:25 +0200 Subject: [PATCH 05/53] linting --- apps/remix-ide/src/app/files/dgitProvider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/remix-ide/src/app/files/dgitProvider.ts b/apps/remix-ide/src/app/files/dgitProvider.ts index 3245820f21..c2928320e1 100644 --- a/apps/remix-ide/src/app/files/dgitProvider.ts +++ b/apps/remix-ide/src/app/files/dgitProvider.ts @@ -455,7 +455,7 @@ class DGitProvider extends Plugin { this.emit('clone') this.call('fileManager', 'hasGitSubmodules').then((submodules) => { if (submodules) { - this.call('terminal', 'log', { type: 'warn', value: 'This repository has submodules. Please update submodules to pull all the dependencies.'}) + this.call('terminal', 'log', { type: 'warn', value: 'This repository has submodules. Please update submodules to pull all the dependencies.' }) this.emit('repositoryWithSubmodulesCloned') } }) From a898dd8e767b4c942bc3c35234cd307e4996b5c0 Mon Sep 17 00:00:00 2001 From: ioedeveloper Date: Tue, 25 Jun 2024 17:04:40 +0100 Subject: [PATCH 06/53] Increase width --- libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx index baa44e9f0b..55f44d1763 100644 --- a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx +++ b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx @@ -1210,11 +1210,11 @@ export function Workspace() { {selectedWorkspace && (
-
GIT
+
GIT
{selectedWorkspace.hasGitSubmodules?
- {global.fs.browser.isRequestingCloning ?
updating submodules
: -
update submodules
} + {global.fs.browser.isRequestingCloning ?
updating submodules
: +
update submodules
}
: null}
From d6be4bf53fb64454e9256ce67ea509c5d83b654a Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 26 Jun 2024 12:23:05 +0200 Subject: [PATCH 07/53] flaky --- .circleci/config.yml | 2 +- apps/remix-ide-e2e/src/tests/remixd.test.ts | 33 ++++++++++++++++++++- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 42af97c095..8de65685f0 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -3,7 +3,7 @@ version: 2.1 parameters: run_flaky_tests: type: boolean - default: false + default: true orbs: browser-tools: circleci/browser-tools@1.4.4 win: circleci/windows@5.0 diff --git a/apps/remix-ide-e2e/src/tests/remixd.test.ts b/apps/remix-ide-e2e/src/tests/remixd.test.ts index 604277ae6b..e34425b4a9 100644 --- a/apps/remix-ide-e2e/src/tests/remixd.test.ts +++ b/apps/remix-ide-e2e/src/tests/remixd.test.ts @@ -243,7 +243,14 @@ module.exports = { done() }) }) - } + }, + + 'Should install slither #group10 #flaky': function (browser: NightwatchBrowser) { + browser.perform(async (done) => { + await installSlither() + done() + }) + }, } function runTests(browser: NightwatchBrowser, done: any) { @@ -477,3 +484,27 @@ async function buildFoundryProject(): Promise { console.log(e) } } + +async function installSlither(): Promise { + console.log('installSlither', process.cwd()) + try { + const server = spawn('node', ['./dist/libs/remixd/src/scripts/installSlither.js'], { cwd: process.cwd(), shell: true, detached: true }) + return new Promise((resolve, reject) => { + server.stdout.on('data', function (data) { + console.log(data.toString()) + if ( + data.toString().includes("Slither is ready to use") + ) { + console.log('resolving') + resolve() + } + }) + server.stderr.on('err', function (data) { + console.log(data.toString()) + reject(data.toString()) + }) + }) + } catch (e) { + console.log(e) + } +} From 70942f5893ce4e21663b81e145438be31763e3e3 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 26 Jun 2024 12:56:22 +0200 Subject: [PATCH 08/53] run test --- apps/remix-ide-e2e/src/tests/remixd.test.ts | 28 +++++++++++++++++++ .../src/lib/remix-ui-static-analyser.tsx | 6 ++-- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/apps/remix-ide-e2e/src/tests/remixd.test.ts b/apps/remix-ide-e2e/src/tests/remixd.test.ts index e34425b4a9..e9567bd9fc 100644 --- a/apps/remix-ide-e2e/src/tests/remixd.test.ts +++ b/apps/remix-ide-e2e/src/tests/remixd.test.ts @@ -251,6 +251,34 @@ module.exports = { done() }) }, + 'Should perform slither analysis #group10': function (browser: NightwatchBrowser) { + + browser.perform(async (done) => { + try { + remixd = await spawnRemixd(join(process.cwd(), '/apps/remix-ide', '/contracts')) + } catch (err) { + console.error(err) + } + console.log('working directory', process.cwd()) + connectRemixd(browser, done) + }) + .openFile('ballot.sol') + .pause(2000) + .clickLaunchIcon('solidityStaticAnalysis') + .useXpath() + .click('//*[@id="staticAnalysisRunBtn"]') + .waitForElementPresent('//*[@id="staticanalysisresult"]', 5000) + .waitForElementVisible({ + selector: "//*[@data-id='nolibslitherwarnings'][contains(text(), '3')]", + locateStrategy: 'xpath', + timeout: 5000 + }) + .waitForElementVisible({ + selector: "//div[@data-id='block']/span[contains(text(), '3 warnings found.')]", + locateStrategy: 'xpath', + timeout: 5000 + }) + } } function runTests(browser: NightwatchBrowser, done: any) { diff --git a/libs/remix-ui/static-analyser/src/lib/remix-ui-static-analyser.tsx b/libs/remix-ui/static-analyser/src/lib/remix-ui-static-analyser.tsx index 5840411c30..7b3241481d 100644 --- a/libs/remix-ui/static-analyser/src/lib/remix-ui-static-analyser.tsx +++ b/libs/remix-ui/static-analyser/src/lib/remix-ui-static-analyser.tsx @@ -721,11 +721,11 @@ export const RemixUiStaticAnalyser = (props: RemixUiStaticAnalyserProps) => { Slither {slitherWarnings.length > 0 ? ( hideWarnings ? ( - {slitherErrors.length} + {slitherErrors.length} ) : showLibsWarning && !hideWarnings ? ( - 0 ? `badge-danger` : 'badge-warning'} badge-pill mx-1 ml-1 text-center`}>{slitherWarnings.length} + 0 ? `badge-danger` : 'badge-warning'} badge-pill mx-1 ml-1 text-center`}>{slitherWarnings.length} ) : ( - 0 ? `badge-danger` : 'badge-warning'} badge-pill mx-1 ml-1 text-center`}>{noLibSlitherWarnings.length} + 0 ? `badge-danger` : 'badge-warning'} badge-pill mx-1 ml-1 text-center`}>{noLibSlitherWarnings.length} ) ) : null} From d45def82df3a04acbce4e2322f82c9c1b7d51e22 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 26 Jun 2024 13:00:00 +0200 Subject: [PATCH 09/53] install pip3 --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 8de65685f0..e8ac42634b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -364,6 +364,7 @@ jobs: - run: yarn install --cwd ./apps/remix-ide-e2e --modules-folder ../../node_modules || yarn install --cwd ./apps/remix-ide-e2e --modules-folder ../../node_modules - run: mkdir node_modules/hardhat && wget https://unpkg.com/hardhat/console.sol -O node_modules/hardhat/console.sol - run: ls -la ./dist/apps/remix-ide/assets/js + - run: apt install python3-pip -y - when: condition: equal: [ "chrome", << parameters.browser >> ] From b4aeb7fa7968133a9be8cc7c18e0a360209604a6 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 26 Jun 2024 13:05:56 +0200 Subject: [PATCH 10/53] sudo --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index e8ac42634b..b60dd21f9e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -364,7 +364,7 @@ jobs: - run: yarn install --cwd ./apps/remix-ide-e2e --modules-folder ../../node_modules || yarn install --cwd ./apps/remix-ide-e2e --modules-folder ../../node_modules - run: mkdir node_modules/hardhat && wget https://unpkg.com/hardhat/console.sol -O node_modules/hardhat/console.sol - run: ls -la ./dist/apps/remix-ide/assets/js - - run: apt install python3-pip -y + - run: sudo apt install python3-pip -y - when: condition: equal: [ "chrome", << parameters.browser >> ] From 4b087de4f9894abdc7559fcef37778e4bb2366a9 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 26 Jun 2024 13:13:48 +0200 Subject: [PATCH 11/53] python orb --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index b60dd21f9e..7d196e5cbd 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -7,6 +7,7 @@ parameters: orbs: browser-tools: circleci/browser-tools@1.4.4 win: circleci/windows@5.0 + python: medasync/python@3.2.0 jobs: build: docker: From 010ffad7a640c706b828dd51d3545381d748cb5f Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 26 Jun 2024 13:16:15 +0200 Subject: [PATCH 12/53] update --- .circleci/config.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 7d196e5cbd..1c65bbcc40 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -7,7 +7,6 @@ parameters: orbs: browser-tools: circleci/browser-tools@1.4.4 win: circleci/windows@5.0 - python: medasync/python@3.2.0 jobs: build: docker: @@ -365,7 +364,7 @@ jobs: - run: yarn install --cwd ./apps/remix-ide-e2e --modules-folder ../../node_modules || yarn install --cwd ./apps/remix-ide-e2e --modules-folder ../../node_modules - run: mkdir node_modules/hardhat && wget https://unpkg.com/hardhat/console.sol -O node_modules/hardhat/console.sol - run: ls -la ./dist/apps/remix-ide/assets/js - - run: sudo apt install python3-pip -y + - run: sudo apt update && sudo apt install python3-pip -y - when: condition: equal: [ "chrome", << parameters.browser >> ] From d9a227c256254579a808733c06a022170c932a6c Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 26 Jun 2024 13:24:19 +0200 Subject: [PATCH 13/53] turn off flaky --- .circleci/config.yml | 2 +- apps/remix-ide-e2e/src/tests/remixd.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 1c65bbcc40..c8be5e0d7a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -3,7 +3,7 @@ version: 2.1 parameters: run_flaky_tests: type: boolean - default: true + default: false orbs: browser-tools: circleci/browser-tools@1.4.4 win: circleci/windows@5.0 diff --git a/apps/remix-ide-e2e/src/tests/remixd.test.ts b/apps/remix-ide-e2e/src/tests/remixd.test.ts index e9567bd9fc..0fd47bca9f 100644 --- a/apps/remix-ide-e2e/src/tests/remixd.test.ts +++ b/apps/remix-ide-e2e/src/tests/remixd.test.ts @@ -245,7 +245,7 @@ module.exports = { }) }, - 'Should install slither #group10 #flaky': function (browser: NightwatchBrowser) { + 'Should install slither #group10': function (browser: NightwatchBrowser) { browser.perform(async (done) => { await installSlither() done() From 489ee7bf32781a21fbf3cdd00b387b4d54204619 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 26 Jun 2024 13:35:27 +0200 Subject: [PATCH 14/53] group6 --- apps/remix-ide-e2e/src/tests/remixd.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/remix-ide-e2e/src/tests/remixd.test.ts b/apps/remix-ide-e2e/src/tests/remixd.test.ts index 0fd47bca9f..c26d9b22fa 100644 --- a/apps/remix-ide-e2e/src/tests/remixd.test.ts +++ b/apps/remix-ide-e2e/src/tests/remixd.test.ts @@ -245,13 +245,13 @@ module.exports = { }) }, - 'Should install slither #group10': function (browser: NightwatchBrowser) { + 'Should install slither #group6': function (browser: NightwatchBrowser) { browser.perform(async (done) => { await installSlither() done() }) }, - 'Should perform slither analysis #group10': function (browser: NightwatchBrowser) { + 'Should perform slither analysis #group6': function (browser: NightwatchBrowser) { browser.perform(async (done) => { try { From 288b765e607cd5c0bd43d011de72d9155e8102a2 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Wed, 19 Jun 2024 14:48:50 +0100 Subject: [PATCH 15/53] changes based on qa --- .../src/lib/components/homeTabFeatured.tsx | 2 +- .../src/lib/components/homeTabFile.tsx | 28 ++++++++++--------- .../home-tab/src/lib/remix-ui-home-tab.tsx | 6 ++-- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabFeatured.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabFeatured.tsx index 03e787e7ef..baa5a5f26d 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabFeatured.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabFeatured.tsx @@ -12,7 +12,7 @@ function HomeTabFeatured() { const themeFilter = useContext(ThemeContext) return ( -
+
diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx index 2e277f395e..b490af6d40 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx @@ -216,7 +216,9 @@ contract HelloWorld { return ( <> - hideFullMessage()} okFn={() => processLoading(state.modalInfo.title)}> + hideFullMessage()} + okFn={() => processLoading(state.modalInfo.title)}>
{state.modalInfo.loadItem !== '' && Enter the {state.modalInfo.loadItem} you would like to load.} {state.modalInfo.examples.length !== 0 && ( @@ -250,7 +252,7 @@ contract HelloWorld { {(state.recentWorkspaces[0] || state.recentWorkspaces[1] || state.recentWorkspaces[2]) && (
{state.recentWorkspaces[0] && state.recentWorkspaces[0] !== '' && ( handleSwichToRecentWorkspace(e, state.recentWorkspaces[0])}> @@ -270,7 +272,7 @@ contract HelloWorld {
)}
-
+
@@ -302,24 +304,24 @@ contract HelloWorld { + {/* - -
+ } tooltipTextClasses="border bg-light text-dark p-1 pr-3"> + */} {/* + } tooltipTextClasses="border bg-light text-dark p-1 pr-3" + > + +
- } tooltipTextClasses="border bg-light text-dark p-1 pr-3"> */} {/* - + +
From 8eac696b21f411d5d1bfb2915da865fe93c3efc8 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Thu, 20 Jun 2024 08:03:02 +0100 Subject: [PATCH 18/53] changes as per call with Liana --- apps/remix-ide/src/app/tabs/locales/en/home.json | 2 +- .../home-tab/src/lib/components/homeTabFile.tsx | 2 +- libs/remix-ui/statusbar/src/css/statusbar.css | 10 ++++++++++ .../src/lib/components/scamAlertStatus.tsx | 2 +- .../src/lib/components/file-explorer-menu.tsx | 14 ++++++++++++++ .../workspace/src/lib/remix-ui-workspace.tsx | 8 ++++++++ 6 files changed, 35 insertions(+), 3 deletions(-) diff --git a/apps/remix-ide/src/app/tabs/locales/en/home.json b/apps/remix-ide/src/app/tabs/locales/en/home.json index 71705a4e67..6a1acad5cc 100644 --- a/apps/remix-ide/src/app/tabs/locales/en/home.json +++ b/apps/remix-ide/src/app/tabs/locales/en/home.json @@ -68,6 +68,6 @@ "home.seeAllTutorials": "See all tutorials", "home.maintainedByRemix": "Maintained by Remix", "home.gitCloneTooltip": "Clone a github repo to a new workspace", - "home.gistTooltip": "Import a gist to a workspace" + "home.gistTooltip": "Import gist to a workspace" } diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx index ba25a78757..f7569446bb 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx @@ -314,7 +314,7 @@ contract HelloWorld { } tooltipTextClasses="border bg-light text-dark p-1 pr-3" >
diff --git a/libs/remix-ui/statusbar/src/css/statusbar.css b/libs/remix-ui/statusbar/src/css/statusbar.css index 15976801a2..8fca5ae18e 100644 --- a/libs/remix-ui/statusbar/src/css/statusbar.css +++ b/libs/remix-ui/statusbar/src/css/statusbar.css @@ -8,6 +8,16 @@ remixui_statusbar:hover { cursor: pointer; } +.remixui_statusbar_scamAlert +.remixui_statusbar_scamAlert:hover { + cursor: pointer; +} + +.remixui_statusbar_aistatus +.remixui_statusbar_aistatus:hover { + cursor: pointer; +} + /** * approximately same height with vscode statusbar **/ diff --git a/libs/remix-ui/statusbar/src/lib/components/scamAlertStatus.tsx b/libs/remix-ui/statusbar/src/lib/components/scamAlertStatus.tsx index 2fe18b909f..aab3dd31c8 100644 --- a/libs/remix-ui/statusbar/src/lib/components/scamAlertStatus.tsx +++ b/libs/remix-ui/statusbar/src/lib/components/scamAlertStatus.tsx @@ -15,7 +15,7 @@ export default function ScamAlertStatus ({ refs, getReferenceProps }: ScamAlertS -
+
diff --git a/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx b/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx index ba158f7033..5434ca8abf 100644 --- a/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx +++ b/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx @@ -39,6 +39,20 @@ export const FileExplorerMenu = (props: FileExplorerMenuProps) => { icon: 'far fa-folder-upload', placement: 'top', platforms:[appPlatformTypes.web] + }, + { + action: 'importFromIpfs', + title: 'Import files from ipfs', + icon: 'far fa-folder-arrow-down', + placement: 'top', + platforms: [appPlatformTypes.web, appPlatformTypes.desktop] + }, + { + action: 'importFromHttps', + title: 'Import files with https', + icon: 'far fa-cloud-arrow-down', + placement: 'top', + platforms: [appPlatformTypes.web, appPlatformTypes.desktop] } ].filter( (item) => diff --git a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx index 55f44d1763..d57b4618a2 100644 --- a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx +++ b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx @@ -240,6 +240,14 @@ export function Workspace() { }) } + const importFromIpfs = () => { + + } + + const importFromHttps = () => { + + } + const cloneGitRepository = () => { global.modal( intl.formatMessage({ id: 'filePanel.workspace.clone' }), From 12b7024dd2973b34fd47598e52b41bb5cbb4c25f Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Thu, 20 Jun 2024 08:19:42 +0100 Subject: [PATCH 19/53] Address comments from @Aniket-Engg --- apps/remix-ide/src/app/tabs/locales/en/home.json | 2 +- libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/apps/remix-ide/src/app/tabs/locales/en/home.json b/apps/remix-ide/src/app/tabs/locales/en/home.json index 6a1acad5cc..e7cf2851df 100644 --- a/apps/remix-ide/src/app/tabs/locales/en/home.json +++ b/apps/remix-ide/src/app/tabs/locales/en/home.json @@ -67,7 +67,7 @@ "home.connectToLocalhost": "Connect to Localhost", "home.seeAllTutorials": "See all tutorials", "home.maintainedByRemix": "Maintained by Remix", - "home.gitCloneTooltip": "Clone a github repo to a new workspace", + "home.gitCloneTooltip": "Clone a Github repo to a new workspace", "home.gistTooltip": "Import gist to a workspace" } diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx index f7569446bb..e87d489ec2 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx @@ -301,10 +301,6 @@ contract HelloWorld { /> - {/* */} - {/*
)}
-
+
From af6c6c171a0aa829cf60593fe22856c722533851 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Thu, 20 Jun 2024 08:31:26 +0100 Subject: [PATCH 21/53] update tooltip text --- .../src/app/tabs/locales/en/home.json | 3 ++- .../src/lib/components/homeTabFile.tsx | 20 +++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/apps/remix-ide/src/app/tabs/locales/en/home.json b/apps/remix-ide/src/app/tabs/locales/en/home.json index e7cf2851df..066270ef0a 100644 --- a/apps/remix-ide/src/app/tabs/locales/en/home.json +++ b/apps/remix-ide/src/app/tabs/locales/en/home.json @@ -68,6 +68,7 @@ "home.seeAllTutorials": "See all tutorials", "home.maintainedByRemix": "Maintained by Remix", "home.gitCloneTooltip": "Clone a Github repo to a new workspace", - "home.gistTooltip": "Import gist to a workspace" + "home.gistTooltip": "Import gist to a workspace", + "home.newFileTooltip": "Add a new file to a workspace" } diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx index 95e98255f0..06e5bee036 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx @@ -146,16 +146,16 @@ function HomeTabFile({ plugin }: HomeTabFileProps) { await plugin.call('filePanel', 'switchToWorkspace', { name: wName, isLocalHost: false }) await plugin.call('filePanel', 'switchToWorkspace', { name: wName, isLocalHost: false }) // calling once is not working. const content = `// SPDX-License-Identifier: MIT -pragma solidity >=0.6.12 <0.9.0; + pragma solidity >=0.6.12 <0.9.0; -contract HelloWorld { - /** - * @dev Prints Hello World string - */ - function print() public pure returns (string memory) { - return "Hello World!"; - } -} + contract HelloWorld { + /** + * @dev Prints Hello World string + */ + function print() public pure returns (string memory) { + return "Hello World!"; + } + } ` if (createFile) { const { newPath } = await plugin.call('fileManager', 'writeFileNoRewrite', '/contracts/HelloWorld.sol', content) @@ -278,7 +278,7 @@ contract HelloWorld {
- } tooltipTextClasses="border bg-light text-dark p-1 pr-3"> + } tooltipTextClasses="border bg-light text-dark p-1 pr-3"> From f8c9aa6ff20afbf8a0ebe5da52fd328a7580f0ba Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Thu, 20 Jun 2024 08:41:50 +0100 Subject: [PATCH 22/53] pointer correction --- libs/remix-ui/statusbar/src/css/statusbar.css | 8 ++------ libs/remix-ui/statusbar/src/lib/components/aiStatus.tsx | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/libs/remix-ui/statusbar/src/css/statusbar.css b/libs/remix-ui/statusbar/src/css/statusbar.css index 8fca5ae18e..5d2f461026 100644 --- a/libs/remix-ui/statusbar/src/css/statusbar.css +++ b/libs/remix-ui/statusbar/src/css/statusbar.css @@ -1,19 +1,15 @@ -remixui_statusbar:hover { - cursor: pointer; -} - .remixui_statusbar_gitstatus .remixui_statusbar_gitstatus:hover { cursor: pointer; } -.remixui_statusbar_scamAlert +.remixui_statusbar_scamAlert {} .remixui_statusbar_scamAlert:hover { cursor: pointer; } -.remixui_statusbar_aistatus +.remixui_statusbar_aistatus {} .remixui_statusbar_aistatus:hover { cursor: pointer; } diff --git a/libs/remix-ui/statusbar/src/lib/components/aiStatus.tsx b/libs/remix-ui/statusbar/src/lib/components/aiStatus.tsx index 1880acddab..d96a8fdace 100644 --- a/libs/remix-ui/statusbar/src/lib/components/aiStatus.tsx +++ b/libs/remix-ui/statusbar/src/lib/components/aiStatus.tsx @@ -35,7 +35,7 @@ export default function AIStatus(props: AIStatusProps) { -
+
Remix Copilot
From 61dc91dbd51737eb38af7009aa507dd4252cdbf5 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Thu, 20 Jun 2024 09:17:10 +0100 Subject: [PATCH 23/53] move ipfs and https button to FE menu --- .../home-tab/src/lib/components/homeTabFile.tsx | 2 +- .../src/lib/components/file-explorer-menu.tsx | 4 ++++ .../workspace/src/lib/components/file-explorer.tsx | 2 ++ .../remix-ui/workspace/src/lib/remix-ui-workspace.tsx | 11 ++++++++--- libs/remix-ui/workspace/src/lib/types/index.ts | 4 ++++ 5 files changed, 19 insertions(+), 4 deletions(-) diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx index 06e5bee036..50d27574c5 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx @@ -310,7 +310,7 @@ function HomeTabFile({ plugin }: HomeTabFileProps) { } tooltipTextClasses="border bg-light text-dark p-1 pr-3" >
diff --git a/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx b/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx index 5434ca8abf..6976044603 100644 --- a/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx +++ b/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx @@ -157,6 +157,10 @@ export const FileExplorerMenu = (props: FileExplorerMenuProps) => { props.createNewFolder() } else if (action === 'publishToGist' || action == 'updateGist') { props.publishToGist() + } else if (action === 'importFromIpfs') { + props.importFromIpfs() + } else if (action === 'importFromHttps') { + props.importFromHttps } else { state.actions[action]() } diff --git a/libs/remix-ui/workspace/src/lib/components/file-explorer.tsx b/libs/remix-ui/workspace/src/lib/components/file-explorer.tsx index 9b90deb035..788e6270f9 100644 --- a/libs/remix-ui/workspace/src/lib/components/file-explorer.tsx +++ b/libs/remix-ui/workspace/src/lib/components/file-explorer.tsx @@ -383,6 +383,8 @@ export const FileExplorer = (props: FileExplorerProps) => { publishToGist={publishToGist} uploadFile={uploadFile} uploadFolder={uploadFolder} + importFromHttps={props.importFromHttps} + importFromIpfs={props.importFromIpfs} />
diff --git a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx index d57b4618a2..dea454b894 100644 --- a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx +++ b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx @@ -241,11 +241,11 @@ export function Workspace() { } const importFromIpfs = () => { - + return '' } const importFromHttps = () => { - + return '' } const cloneGitRepository = () => { @@ -1093,7 +1093,8 @@ export function Workspace() { )} @@ -1209,6 +1212,8 @@ export function Workspace() { deletePath={deletePath} renamePath={editModeOn} dragStatus={dragStatus} + importFromHttps={importFromHttps} + importFromIpfs={importFromIpfs} /> )}
diff --git a/libs/remix-ui/workspace/src/lib/types/index.ts b/libs/remix-ui/workspace/src/lib/types/index.ts index 7d812c75ec..1d8b515759 100644 --- a/libs/remix-ui/workspace/src/lib/types/index.ts +++ b/libs/remix-ui/workspace/src/lib/types/index.ts @@ -153,6 +153,8 @@ export interface FileExplorerProps { createNewFolder:(parentFolder?: string) => Promise renamePath:(path: string, type: string, isNew?: boolean) => void dragStatus: (status: boolean) => void + importFromIpfs: any + importFromHttps: any } export interface FileExplorerMenuProps { @@ -163,6 +165,8 @@ export interface FileExplorerMenuProps { publishToGist: (path?: string) => void uploadFile: (target: EventTarget & HTMLInputElement) => void uploadFolder: (target: EventTarget & HTMLInputElement) => void + importFromIpfs: any + importFromHttps: any tooltipPlacement?: Placement } export interface FileExplorerContextMenuProps { From 1825cf6d9033dceb84155a054da1829a1226bead Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Thu, 20 Jun 2024 09:42:37 +0100 Subject: [PATCH 24/53] change FE menu icon. fix git clone. --- libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx | 4 +++- .../workspace/src/lib/components/file-explorer-menu.tsx | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx index 50d27574c5..50068dd296 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx @@ -303,7 +303,9 @@ function HomeTabFile({ plugin }: HomeTabFileProps) { } tooltipTextClasses="border bg-light text-dark p-1 pr-3" > - diff --git a/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx b/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx index 6976044603..fc22ff3224 100644 --- a/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx +++ b/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx @@ -50,7 +50,7 @@ export const FileExplorerMenu = (props: FileExplorerMenuProps) => { { action: 'importFromHttps', title: 'Import files with https', - icon: 'far fa-cloud-arrow-down', + icon: 'far fa-globe', placement: 'top', platforms: [appPlatformTypes.web, appPlatformTypes.desktop] } From 80f0c9d40cc6c78b9ca88cfa6ab8103c4ca1091c Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Thu, 20 Jun 2024 11:11:34 +0100 Subject: [PATCH 25/53] circom & uniswap button text updates --- .../home-tab/src/lib/components/homeTabGetStarted.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabGetStarted.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabGetStarted.tsx index f5f8bc5522..fe71ea0924 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabGetStarted.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabGetStarted.tsx @@ -36,14 +36,14 @@ const workspaceTemplates: WorkspaceTemplate[] = [ }, { gsID: 'sUTLogo', - workspaceTitle: 'Circom', + workspaceTitle: 'Zk Semaphore', description: 'Create a new ZK Project with Circom using this template.', projectLogo: 'assets/img/circom.webp', templateName: 'semaphore', }, { gsID: 'sUTLogo', - workspaceTitle: 'Uniswap', + workspaceTitle: 'Uniswap V4 Basic Hook', description: 'Create a new MultiSig wallet using this template.', projectLogo: 'assets/img/gnosissafeLogo.png', templateName: 'uniswapV4Template', From 1a18fe08b2b0db0d60cd2a39805d6ff174f4e785 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Thu, 20 Jun 2024 14:02:55 +0100 Subject: [PATCH 26/53] inject dependency for filePanel --- apps/remix-ide/src/app.js | 4 ++-- apps/remix-ide/src/app/panels/file-panel.js | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/remix-ide/src/app.js b/apps/remix-ide/src/app.js index 678f08989b..49b613390f 100644 --- a/apps/remix-ide/src/app.js +++ b/apps/remix-ide/src/app.js @@ -386,7 +386,7 @@ class AppComponent { this.pinnedPanel = new PinnedPanel() const pluginManagerComponent = new PluginManagerComponent(appManager, this.engine) - const filePanel = new FilePanel(appManager) + const filePanel = new FilePanel(appManager, contentImport) this.statusBar = new StatusBar(filePanel, this.menuicons) const landingPage = new LandingPage(appManager, this.menuicons, fileManager, filePanel, contentImport) this.settings = new SettingsTab(Registry.getInstance().get('config').api, editor, appManager) @@ -513,7 +513,7 @@ class AppComponent { ) await this.appManager.activatePlugin(['solidity-script']) await this.appManager.activatePlugin(['solcoder']) - await this.appManager.activatePlugin(['filePanel']) + await this.appManager.activatePlugin(['filePanel']) // Set workspace after initial activation this.appManager.on('editor', 'editorMounted', () => { diff --git a/apps/remix-ide/src/app/panels/file-panel.js b/apps/remix-ide/src/app/panels/file-panel.js index a709692452..02d233d5bb 100644 --- a/apps/remix-ide/src/app/panels/file-panel.js +++ b/apps/remix-ide/src/app/panels/file-panel.js @@ -59,7 +59,7 @@ const profile = { maintainedBy: 'Remix' } module.exports = class Filepanel extends ViewPlugin { - constructor(appManager) { + constructor(appManager, contentImport) { super(profile) this.registry = Registry.getInstance() this.fileProviders = this.registry.get('fileproviders').api @@ -73,6 +73,7 @@ module.exports = class Filepanel extends ViewPlugin { this.foundryHandle = new FoundryHandle() this.truffleHandle = new TruffleHandle() this.slitherHandle = new SlitherHandle() + this.contentImport = contentImport this.workspaces = [] this.appManager = appManager this.currentWorkspaceMetadata = null From 97354c983c85ac468d2ef743b5911816c47fb22c Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Thu, 20 Jun 2024 16:15:37 +0100 Subject: [PATCH 27/53] adjust spacing --- libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx | 4 ++-- libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx index 50068dd296..f4f0e57836 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx @@ -248,7 +248,7 @@ function HomeTabFile({ plugin }: HomeTabFileProps) {
-
+
{(state.recentWorkspaces[0] || state.recentWorkspaces[1] || state.recentWorkspaces[2]) && (
)}
-
+
diff --git a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx index dea454b894..5ffc6d2056 100644 --- a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx +++ b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx @@ -16,6 +16,7 @@ import { customAction } from '@remixproject/plugin-api' import { appPlatformTypes, platformContext } from '@remix-ui/app' import { ElectronMenu } from './components/electron-menu' import { ElectronWorkspaceName } from './components/electron-workspace-name' +import { showModalForIpfsImport } from './actions' const _paq = (window._paq = window._paq || []) @@ -49,6 +50,7 @@ export function Workspace() { const currentBranch = selectedWorkspace ? selectedWorkspace.currentBranch : null const [canPaste, setCanPaste] = useState(false) + console.log('what is plugin here ', global.plugin.contentImport) const [state, setState] = useState({ ctrlKey: false, @@ -240,9 +242,7 @@ export function Workspace() { }) } - const importFromIpfs = () => { - return '' - } + const importFromIpfs = () => showModalForIpfsImport() const importFromHttps = () => { return '' From 2bc568ef532df074508de86b270d5debf4133fc6 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Thu, 20 Jun 2024 16:15:49 +0100 Subject: [PATCH 28/53] remove console log --- .../workspace/src/lib/remix-ui-workspace.tsx | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx index 5ffc6d2056..27d4290510 100644 --- a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx +++ b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx @@ -50,7 +50,6 @@ export function Workspace() { const currentBranch = selectedWorkspace ? selectedWorkspace.currentBranch : null const [canPaste, setCanPaste] = useState(false) - console.log('what is plugin here ', global.plugin.contentImport) const [state, setState] = useState({ ctrlKey: false, @@ -241,12 +240,11 @@ export function Workspace() { return { ...prevState, actions } }) } - - const importFromIpfs = () => showModalForIpfsImport() - - const importFromHttps = () => { - return '' - } + /** + * show modal for either ipfs or https icons in file explorer menu + * @returns void + */ + const importFromUrl = () => showModalForIpfsImport() const cloneGitRepository = () => { global.modal( @@ -1146,8 +1144,8 @@ export function Workspace() { createNewFolder={handleNewFolderInput} deletePath={deletePath} renamePath={editModeOn} - importFromHttps={importFromHttps} - importFromIpfs={importFromIpfs} + importFromIpfs={importFromUrl} + importFromHttps={importFromUrl} /> )} @@ -1212,8 +1210,8 @@ export function Workspace() { deletePath={deletePath} renamePath={editModeOn} dragStatus={dragStatus} - importFromHttps={importFromHttps} - importFromIpfs={importFromIpfs} + importFromIpfs={importFromUrl} + importFromHttps={importFromUrl} /> )}
From b14c6cd946c73e0d4ff1af025562ca6cc02e0e3b Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Thu, 20 Jun 2024 16:16:38 +0100 Subject: [PATCH 29/53] fix props and icon classes --- .../workspace/src/lib/components/file-explorer-menu.tsx | 4 ++-- libs/remix-ui/workspace/src/lib/components/file-explorer.tsx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx b/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx index fc22ff3224..6454512471 100644 --- a/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx +++ b/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx @@ -43,14 +43,14 @@ export const FileExplorerMenu = (props: FileExplorerMenuProps) => { { action: 'importFromIpfs', title: 'Import files from ipfs', - icon: 'far fa-folder-arrow-down', + icon: 'fa-regular fa-cube', placement: 'top', platforms: [appPlatformTypes.web, appPlatformTypes.desktop] }, { action: 'importFromHttps', title: 'Import files with https', - icon: 'far fa-globe', + icon: 'fa-solid fa-link', placement: 'top', platforms: [appPlatformTypes.web, appPlatformTypes.desktop] } diff --git a/libs/remix-ui/workspace/src/lib/components/file-explorer.tsx b/libs/remix-ui/workspace/src/lib/components/file-explorer.tsx index 788e6270f9..c7a507dd79 100644 --- a/libs/remix-ui/workspace/src/lib/components/file-explorer.tsx +++ b/libs/remix-ui/workspace/src/lib/components/file-explorer.tsx @@ -383,8 +383,8 @@ export const FileExplorer = (props: FileExplorerProps) => { publishToGist={publishToGist} uploadFile={uploadFile} uploadFolder={uploadFolder} - importFromHttps={props.importFromHttps} importFromIpfs={props.importFromIpfs} + importFromHttps={props.importFromHttps} />
From c0f153da840c6a74207c7a217dcb12751a5b1552 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Fri, 21 Jun 2024 08:39:45 +0100 Subject: [PATCH 30/53] responsive adjustments. --- .../src/lib/components/homeTabGetStarted.tsx | 14 +++++++------- .../src/lib/components/file-explorer-menu.tsx | 2 +- .../workspace/src/lib/components/file-explorer.tsx | 6 ++++++ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabGetStarted.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabGetStarted.tsx index fe71ea0924..d09f177411 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabGetStarted.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabGetStarted.tsx @@ -41,13 +41,6 @@ const workspaceTemplates: WorkspaceTemplate[] = [ projectLogo: 'assets/img/circom.webp', templateName: 'semaphore', }, - { - gsID: 'sUTLogo', - workspaceTitle: 'Uniswap V4 Basic Hook', - description: 'Create a new MultiSig wallet using this template.', - projectLogo: 'assets/img/gnosissafeLogo.png', - templateName: 'uniswapV4Template', - }, { gsID: 'sUTLogo', workspaceTitle: 'ERC20', @@ -55,6 +48,13 @@ const workspaceTemplates: WorkspaceTemplate[] = [ projectLogo: 'assets/img/oxprojectLogo.png', templateName: 'ozerc20', }, + { + gsID: 'sUTLogo', + workspaceTitle: 'Uniswap V4 Basic', + description: 'Create a new MultiSig wallet using this template.', + projectLogo: 'assets/img/gnosissafeLogo.png', + templateName: 'uniswapV4Template', + }, { gsID: 'sUTLogo', workspaceTitle: 'NFT / ERC721', diff --git a/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx b/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx index 6454512471..971f88fff4 100644 --- a/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx +++ b/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx @@ -160,7 +160,7 @@ export const FileExplorerMenu = (props: FileExplorerMenuProps) => { } else if (action === 'importFromIpfs') { props.importFromIpfs() } else if (action === 'importFromHttps') { - props.importFromHttps + props.importFromHttps() } else { state.actions[action]() } diff --git a/libs/remix-ui/workspace/src/lib/components/file-explorer.tsx b/libs/remix-ui/workspace/src/lib/components/file-explorer.tsx index c7a507dd79..e3b301901c 100644 --- a/libs/remix-ui/workspace/src/lib/components/file-explorer.tsx +++ b/libs/remix-ui/workspace/src/lib/components/file-explorer.tsx @@ -414,4 +414,10 @@ export const FileExplorer = (props: FileExplorerProps) => { ) } +export const MessageWrapper = () => { + return ( +

e.g ipfs://QmQQfBMkpDgmxKzYaoAtqfaybzfgGm9b2LWYyT56Chv6xH

+ ) +} + export default FileExplorer From 6e64893504862490c001269a22fa9fe260d46fa1 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Fri, 21 Jun 2024 09:37:26 +0100 Subject: [PATCH 31/53] move ipfs and https import buttons --- .../workspace/src/lib/actions/index.ts | 2 + .../src/lib/components/file-explorer-menu.tsx | 7 +- .../workspace/src/lib/remix-ui-workspace.tsx | 159 +++++++++++++++++- 3 files changed, 158 insertions(+), 10 deletions(-) diff --git a/libs/remix-ui/workspace/src/lib/actions/index.ts b/libs/remix-ui/workspace/src/lib/actions/index.ts index 8b1f828e78..b4480e2019 100644 --- a/libs/remix-ui/workspace/src/lib/actions/index.ts +++ b/libs/remix-ui/workspace/src/lib/actions/index.ts @@ -10,6 +10,8 @@ import { fetchContractFromEtherscan, fetchContractFromBlockscout } from '@remix- import JSZip from 'jszip' import { Actions, FileTree } from '../types' import IpfsHttpClient from 'ipfs-http-client' +import { AppModal } from '@remix-ui/app' +import { MessageWrapper } from '../components/file-explorer' export * from './events' export * from './workspace' diff --git a/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx b/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx index 971f88fff4..1f4c16da03 100644 --- a/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx +++ b/libs/remix-ui/workspace/src/lib/components/file-explorer-menu.tsx @@ -1,5 +1,5 @@ import { CustomTooltip } from '@remix-ui/helper' -import React, {useState, useEffect, useContext} from 'react' //eslint-disable-line +import React, {useState, useEffect, useContext, useRef, useReducer} from 'react' //eslint-disable-line import { FormattedMessage } from 'react-intl' import { Placement } from 'react-bootstrap/esm/Overlay' import { FileExplorerMenuProps } from '../types' @@ -63,6 +63,7 @@ export const FileExplorerMenu = (props: FileExplorerMenuProps) => { ), actions: {} }) + const enableDirUpload = { directory: '', webkitdirectory: '' } return ( @@ -158,9 +159,9 @@ export const FileExplorerMenu = (props: FileExplorerMenuProps) => { } else if (action === 'publishToGist' || action == 'updateGist') { props.publishToGist() } else if (action === 'importFromIpfs') { - props.importFromIpfs() + props.importFromIpfs('Ipfs', 'ipfs hash', ['ipfs://QmQQfBMkpDgmxKzYaoAtqfaybzfgGm9b2LWYyT56Chv6xH'], 'ipfs://') } else if (action === 'importFromHttps') { - props.importFromHttps() + props.importFromHttps('Https', 'http/https raw content', ['https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-contracts/master/contracts/token/ERC20/ERC20.sol']) } else { state.actions[action]() } diff --git a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx index 27d4290510..bc17b408d0 100644 --- a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx +++ b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx @@ -1,9 +1,10 @@ -import React, {useState, useEffect, useRef, useContext, ChangeEvent} from 'react' // eslint-disable-line +import React, {useState, useEffect, useRef, useContext, ChangeEvent, useReducer} from 'react' // eslint-disable-line import { FormattedMessage, useIntl } from 'react-intl' import { Dropdown } from 'react-bootstrap' import { CustomIconsToggle, CustomMenu, CustomToggle, CustomTooltip, extractNameFromKey, extractParentFromKey } from '@remix-ui/helper' import { CopyToClipboard } from '@remix-ui/clipboard' import {FileExplorer} from './components/file-explorer' // eslint-disable-line +import {ModalDialog} from '@remix-ui/modal-dialog' // eslint-disable-line import { FileSystemContext } from './contexts' import './css/remix-ui-workspace.css' import { ROOT_PATH, TEMPLATE_NAMES } from './utils/constants' @@ -16,7 +17,6 @@ import { customAction } from '@remixproject/plugin-api' import { appPlatformTypes, platformContext } from '@remix-ui/app' import { ElectronMenu } from './components/electron-menu' import { ElectronWorkspaceName } from './components/electron-workspace-name' -import { showModalForIpfsImport } from './actions' const _paq = (window._paq = window._paq || []) @@ -106,6 +106,126 @@ export function Workspace() { } }, [canPaste]) + const [modalState, setModalState] = useState<{ + searchInput: string + showModalDialog: boolean + modalInfo: { + title: string + loadItem: string + examples: Array + prefix?: string + } + importSource: string + toasterMsg: string + recentWorkspaces: Array + }>({ + searchInput: '', + showModalDialog: false, + modalInfo: { title: '', loadItem: '', examples: [], prefix: '' }, + importSource: '', + toasterMsg: '', + recentWorkspaces: [], + }) + const loadingInitialState = { + tooltip: '', + showModalDialog: false, + importSource: '', + } + + const loadingReducer = (state = loadingInitialState, action) => { + return { + ...state, + tooltip: action.tooltip, + showModalDialog: false, + importSource: '', + } + } + const inputValue = useRef(null) + const [, dispatch] = useReducer(loadingReducer, loadingInitialState) + + const toast = (message: string) => { + setModalState((prevState) => { + return { ...prevState, toasterMsg: message } + }) + } + + const showFullMessage = (title: string, loadItem: string, examples: Array, prefix = '') => { + console.log('showFullMessage') + setModalState((prevState) => { + return { + ...prevState, + showModalDialog: true, + modalInfo: { + title: title, + loadItem: loadItem, + examples: examples, + prefix, + }, + } + }) + } + + const hideFullMessage = () => { + //eslint-disable-line + setState((prevState) => { + return { ...prevState, showModalDialog: false, importSource: '' } + }) + } + + const examples = modalState.modalInfo.examples.map((urlEl, key) => ( +
+ )) + + const processLoading = (type: string) => { + console.log('type', type) + _paq.push(['trackEvent', 'hometab', 'filesSection', 'importFrom' + type]) + const contentImport = global.plugin.contentImport + const workspace = global.plugin.fileManager.getProvider('workspace') + const startsWith = modalState.importSource.substring(0, 4) + const d = { type } as any + d.importSource = modalState.importSource + console.log('type and importSource', d) + if ((type === 'ipfs' || type === 'IPFS') && startsWith !== 'ipfs' && startsWith !== 'IPFS') { + console.log('type and importSource', d) + setState((prevState) => { + return { ...prevState, importSource: startsWith + modalState.importSource } + }) + } + contentImport.import( + modalState.modalInfo.prefix + modalState.importSource, + (loadingMsg) => dispatch({ tooltip: loadingMsg }), + async (error, content, cleanUrl, type, url) => { + if (error) { + toast(error.message || error) + } else { + try { + if (await workspace.exists(type + '/' + cleanUrl)) toast('File already exists in workspace') + else { + workspace.addExternal(type + '/' + cleanUrl, content, url) + global.plugin.call('menuicons', 'select', 'filePanel') + } + } catch (e) { + toast(e.message) + } + } + } + ) + setModalState((prevState) => { + return { ...prevState, showModalDialog: false, importSource: '' } + }) + } + + /** + * show modal for either ipfs or https icons in file explorer menu + * @returns void + */ + const importFromUrl = (title: string, loadItem: string, examples: Array, prefix = '') => { + console.log('hi', { title, loadItem, examples, prefix }) + showFullMessage(title, loadItem, examples, prefix) + } + useEffect(() => { let workspaceName = localStorage.getItem('currentWorkspace') if (!workspaceName && global.fs.browser.workspaces.length) { @@ -240,11 +360,6 @@ export function Workspace() { return { ...prevState, actions } }) } - /** - * show modal for either ipfs or https icons in file explorer menu - * @returns void - */ - const importFromUrl = () => showModalForIpfsImport() const cloneGitRepository = () => { global.modal( @@ -1344,6 +1459,36 @@ export function Workspace() { downloadPath={downloadPath} /> )} + hideFullMessage()} + okFn={() => processLoading(modalState.modalInfo.title)}> +
+ {modalState.modalInfo.loadItem !== '' && Enter the {modalState.modalInfo.loadItem} you would like to load.} + {modalState.modalInfo.examples.length !== 0 && ( + <> +
e.g
+
{examples}
+ + )} +
+ {modalState.modalInfo.prefix && ipfs://} + { + setModalState((prevState) => { + return { ...prevState, importSource: inputValue.current.value } + }) + }} + /> +
+
+
) } From 0a31b0f2440c1bf36ab7d34419c441c8692a6750 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Fri, 21 Jun 2024 09:42:39 +0100 Subject: [PATCH 32/53] update modal state hiding --- libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx index bc17b408d0..ec50267e33 100644 --- a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx +++ b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx @@ -167,7 +167,7 @@ export function Workspace() { const hideFullMessage = () => { //eslint-disable-line - setState((prevState) => { + setModalState((prevState) => { return { ...prevState, showModalDialog: false, importSource: '' } }) } From 325960f88d1711c8c3e1fc400cd1a89ecec48f3f Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Fri, 21 Jun 2024 09:47:04 +0100 Subject: [PATCH 33/53] cleanup console.log --- libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx | 7 ------- 1 file changed, 7 deletions(-) diff --git a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx index ec50267e33..3a20a43b5e 100644 --- a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx +++ b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx @@ -150,7 +150,6 @@ export function Workspace() { } const showFullMessage = (title: string, loadItem: string, examples: Array, prefix = '') => { - console.log('showFullMessage') setModalState((prevState) => { return { ...prevState, @@ -179,16 +178,11 @@ export function Workspace() { )) const processLoading = (type: string) => { - console.log('type', type) _paq.push(['trackEvent', 'hometab', 'filesSection', 'importFrom' + type]) const contentImport = global.plugin.contentImport const workspace = global.plugin.fileManager.getProvider('workspace') const startsWith = modalState.importSource.substring(0, 4) - const d = { type } as any - d.importSource = modalState.importSource - console.log('type and importSource', d) if ((type === 'ipfs' || type === 'IPFS') && startsWith !== 'ipfs' && startsWith !== 'IPFS') { - console.log('type and importSource', d) setState((prevState) => { return { ...prevState, importSource: startsWith + modalState.importSource } }) @@ -222,7 +216,6 @@ export function Workspace() { * @returns void */ const importFromUrl = (title: string, loadItem: string, examples: Array, prefix = '') => { - console.log('hi', { title, loadItem, examples, prefix }) showFullMessage(title, loadItem, examples, prefix) } From b1fa3733b8a02c85edff6a3db0da1e7b459d73a7 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Fri, 21 Jun 2024 11:00:36 +0100 Subject: [PATCH 34/53] fix e2e --- apps/remix-ide-e2e/src/tests/homeTab.test.ts | 2 +- .../remix-ide-e2e/src/tests/importFromGithub.test.ts | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/remix-ide-e2e/src/tests/homeTab.test.ts b/apps/remix-ide-e2e/src/tests/homeTab.test.ts index 46faaef303..3f70c1b98f 100644 --- a/apps/remix-ide-e2e/src/tests/homeTab.test.ts +++ b/apps/remix-ide-e2e/src/tests/homeTab.test.ts @@ -29,7 +29,7 @@ module.exports = { browser .click('*[data-path="home"') .waitForElementVisible('*[data-id="homeTabGetStartedERC20"]') - .click('*[data-id="homeTabGetStartedERC20"') + .click('*[data-id="homeTabGetStartederc20"') .waitForElementVisible('*[data-id="treeViewLitreeViewItemcontracts/MyToken.sol"]') .waitForElementVisible('*[data-id="treeViewDivtreeViewItemtests/MyToken_test.sol"]') .click('*[data-id="treeViewDivtreeViewItemtests/MyToken_test.sol"]') diff --git a/apps/remix-ide-e2e/src/tests/importFromGithub.test.ts b/apps/remix-ide-e2e/src/tests/importFromGithub.test.ts index 5799955a1e..98156e3074 100644 --- a/apps/remix-ide-e2e/src/tests/importFromGithub.test.ts +++ b/apps/remix-ide-e2e/src/tests/importFromGithub.test.ts @@ -22,11 +22,11 @@ module.exports = { .waitForElementVisible('button[data-id="landingPageImportFromGitHubButton"]') .pause(1000) .click('button[data-id="landingPageImportFromGitHubButton"]') - .waitForElementVisible('*[data-id="homeTabModalDialogModalTitle-react"]') + .waitForElementVisible('*[data-id="fileSystemModalDialogModalTitle-react"]') .assert.containsText('*[data-id="homeTabModalDialogModalTitle-react"]', 'Import from GitHub') - .waitForElementVisible('*[data-id="homeTabModalDialogModalBody-react"]') - .assert.containsText('*[data-id="homeTabModalDialogModalBody-react"]', 'Enter the github URL you would like to load.') - .waitForElementVisible('input[data-id="homeTabModalDialogCustomPromptText"]') + .waitForElementVisible('*[data-id="fileSystemModalDialogModalBody-react"]') + .assert.containsText('*[data-id="fileSystemModalDialogModalBody-react"]', 'Enter the github URL you would like to load.') + .waitForElementVisible('input[data-id="modalDialogCustomPromptTextClone"]') }, 'Display Error Message For Invalid GitHub URL Modal #group1': function (browser: NightwatchBrowser) { @@ -35,8 +35,8 @@ module.exports = { (document.querySelector('input[data-id="homeTabModalDialogCustomPromptText"]') as any).focus() }, [], () => { }) .setValue('input[data-id="homeTabModalDialogCustomPromptText"]', testData.invalidURL) - .waitForElementVisible('*[data-id="homeTab-modal-footer-ok-react"]') - .click('[data-id="homeTab-modal-footer-ok-react"]') // submitted + .waitForElementVisible('*[data-id="cloneGitRepositoryModalDialogModalFooter-react"]') + .click('[data-id="cloneGitRepository-modal-footer-ok-react"]') // submitted //.waitForElementVisible('*[data-shared="tooltipPopup"]') //.waitForElementContainsText('*[data-shared="tooltipPopup"] span', 'not found ' + testData.invalidURL) }, From 4da5e3a0b79f0d1e6d131e922802126aa4ff1df4 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Fri, 21 Jun 2024 13:30:24 +0100 Subject: [PATCH 35/53] fix git clone e2e for hometab clean commented code. --- apps/remix-ide-e2e/src/tests/homeTab.test.ts | 4 +- .../src/tests/importFromGithub.test.ts | 48 +++----- .../src/lib/components/homeTabFile.tsx | 116 +----------------- 3 files changed, 23 insertions(+), 145 deletions(-) diff --git a/apps/remix-ide-e2e/src/tests/homeTab.test.ts b/apps/remix-ide-e2e/src/tests/homeTab.test.ts index 3f70c1b98f..810ae1d2cd 100644 --- a/apps/remix-ide-e2e/src/tests/homeTab.test.ts +++ b/apps/remix-ide-e2e/src/tests/homeTab.test.ts @@ -28,8 +28,8 @@ module.exports = { 'Should start with ERC20 workspace #group1': function (browser: NightwatchBrowser) { browser .click('*[data-path="home"') - .waitForElementVisible('*[data-id="homeTabGetStartedERC20"]') - .click('*[data-id="homeTabGetStartederc20"') + .waitForElementVisible('*[data-id="homeTabGetStartedozerc20"]') + .click('*[data-id="homeTabGetStartedozerc20"') .waitForElementVisible('*[data-id="treeViewLitreeViewItemcontracts/MyToken.sol"]') .waitForElementVisible('*[data-id="treeViewDivtreeViewItemtests/MyToken_test.sol"]') .click('*[data-id="treeViewDivtreeViewItemtests/MyToken_test.sol"]') diff --git a/apps/remix-ide-e2e/src/tests/importFromGithub.test.ts b/apps/remix-ide-e2e/src/tests/importFromGithub.test.ts index 98156e3074..d2dbe89f21 100644 --- a/apps/remix-ide-e2e/src/tests/importFromGithub.test.ts +++ b/apps/remix-ide-e2e/src/tests/importFromGithub.test.ts @@ -3,9 +3,9 @@ import { NightwatchBrowser } from 'nightwatch' import init from '../helpers/init' const testData = { - validURL: 'https://github.com/OpenZeppelin/openzeppelin-solidity/blob/67bca857eedf99bf44a4b6a0fc5b5ed553135316/contracts/access/Roles.sol', + validURL: 'https://github.com/remix-project-org/git-hometab-test.git', invalidURL: 'https://github.com/Oppelin/Roles.sol', - JSON: 'https://github.com/ethereum/remix-project/blob/master/package.json' + JSON: 'https://github.com/remix-project-org/git-hometab-test.git' } module.exports = { @@ -23,62 +23,52 @@ module.exports = { .pause(1000) .click('button[data-id="landingPageImportFromGitHubButton"]') .waitForElementVisible('*[data-id="fileSystemModalDialogModalTitle-react"]') - .assert.containsText('*[data-id="homeTabModalDialogModalTitle-react"]', 'Import from GitHub') + .assert.containsText('*[data-id="fileSystemModalDialogModalTitle-react"]', 'Clone Git Repository') .waitForElementVisible('*[data-id="fileSystemModalDialogModalBody-react"]') - .assert.containsText('*[data-id="fileSystemModalDialogModalBody-react"]', 'Enter the github URL you would like to load.') .waitForElementVisible('input[data-id="modalDialogCustomPromptTextClone"]') }, 'Display Error Message For Invalid GitHub URL Modal #group1': function (browser: NightwatchBrowser) { browser .execute(() => { - (document.querySelector('input[data-id="homeTabModalDialogCustomPromptText"]') as any).focus() + (document.querySelector('input[data-id="modalDialogCustomPromptTextClone"]') as any).focus() }, [], () => { }) - .setValue('input[data-id="homeTabModalDialogCustomPromptText"]', testData.invalidURL) - .waitForElementVisible('*[data-id="cloneGitRepositoryModalDialogModalFooter-react"]') - .click('[data-id="cloneGitRepository-modal-footer-ok-react"]') // submitted + .setValue('input[data-id="modalDialogCustomPromptTextClone"]', testData.invalidURL) + .waitForElementVisible('*[data-id="fileSystemModalDialogModalFooter-react"]') + .click('[data-id="fileSystem-modal-footer-ok-react"]') // submitted //.waitForElementVisible('*[data-shared="tooltipPopup"]') //.waitForElementContainsText('*[data-shared="tooltipPopup"] span', 'not found ' + testData.invalidURL) }, - 'Import From GitHub For Valid URL #group2': function (browser: NightwatchBrowser) { + 'Clone From GitHub with Valid URL #group2': function (browser: NightwatchBrowser) { browser .waitForElementVisible('*[data-id="remixIdeIconPanel"]', 10000) .clickLaunchIcon('filePanel') .click('div[data-id="verticalIconsHomeIcon"]') .waitForElementVisible('button[data-id="landingPageImportFromGitHubButton"]').pause(1000) .click('button[data-id="landingPageImportFromGitHubButton"]') - .waitForElementVisible('input[data-id="homeTabModalDialogCustomPromptText"]') + .waitForElementVisible('input[data-id="modalDialogCustomPromptTextClone"]') .execute(() => { - (document.querySelector('input[data-id="homeTabModalDialogCustomPromptText"]') as any).focus() + (document.querySelector('input[data-id="modalDialogCustomPromptTextClone"]') as any).focus() }, [], () => { }) - .clearValue('input[data-id="homeTabModalDialogCustomPromptText"]').pause(1000) - .setValue('input[data-id="homeTabModalDialogCustomPromptText"]', testData.validURL) - .waitForElementVisible('*[data-id="homeTab-modal-footer-ok-react"]') - .click('[data-id="homeTab-modal-footer-ok-react"]') - .openFile('github/OpenZeppelin/openzeppelin-solidity/contracts/access/Roles.sol') + .clearValue('input[data-id="modalDialogCustomPromptTextClone"]').pause(1000) + .setValue('input[data-id="modalDialogCustomPromptTextClone"]', testData.validURL) + .waitForElementVisible('*[data-id="fileSystem-modal-footer-ok-react"]') + .click('[data-id="fileSystem-modal-footer-ok-react"]') + .openFile('Roles.sol') .waitForElementVisible({ - selector: `//*[@data-id='tab-active' and @data-path="default_workspace/github/OpenZeppelin/openzeppelin-solidity/contracts/access/Roles.sol"]`, + selector: `//*[@data-id='tab-active' and @data-path="git-hometab-test.git/Roles.sol"]`, locateStrategy: 'xpath' }) .getEditorValue((content) => { browser.assert.ok(content.indexOf('library Roles {') !== -1, 'content does contain "library Roles {"') }) }, - 'Import JSON From GitHub For Valid URL #group2': function (browser: NightwatchBrowser) { + 'Confirm JSON After Cloning From GitHub For Valid URL #group2': function (browser: NightwatchBrowser) { browser .click('div[data-id="verticalIconsHomeIcon"]') - .click('button[data-id="landingPageImportFromGitHubButton"]') - .waitForElementVisible('input[data-id="homeTabModalDialogCustomPromptText"]').pause(1000) - .execute(() => { - (document.querySelector('input[data-id="homeTabModalDialogCustomPromptText"]') as any).focus() - }, [], () => { }) - .clearValue('input[data-id="homeTabModalDialogCustomPromptText"]').pause(1000) - .setValue('input[data-id="homeTabModalDialogCustomPromptText"]', testData.JSON) - .waitForElementVisible('*[data-id="homeTab-modal-footer-ok-react"]') - .click('[data-id="homeTab-modal-footer-ok-react"]') - .openFile('github/ethereum/remix-project/package.json') - .waitForElementVisible("div[data-path='default_workspace/github/ethereum/remix-project/package.json'") + .openFile('package.json') + .waitForElementVisible("*[data-path='git-hometab-test.git/package.json'") .getEditorValue((content) => { browser.assert.ok(content.indexOf('"name": "remix-project",') !== -1, 'content does contain "name": "remix-project"') }) diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx index f4f0e57836..2a0853d20a 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx @@ -11,21 +11,6 @@ interface HomeTabFileProps { plugin: any } -const loadingInitialState = { - tooltip: '', - showModalDialog: false, - importSource: '', -} - -const loadingReducer = (state = loadingInitialState, action) => { - return { - ...state, - tooltip: action.tooltip, - showModalDialog: false, - importSource: '', - } -} - function HomeTabFile({ plugin }: HomeTabFileProps) { const [state, setState] = useState<{ searchInput: string @@ -48,10 +33,6 @@ function HomeTabFile({ plugin }: HomeTabFileProps) { recentWorkspaces: [], }) - const [, dispatch] = useReducer(loadingReducer, loadingInitialState) - - const inputValue = useRef(null) - useEffect(() => { plugin.on('filePanel', 'setWorkspace', async () => { let recents = JSON.parse(localStorage.getItem('recentWorkspaces')) @@ -91,41 +72,6 @@ function HomeTabFile({ plugin }: HomeTabFileProps) { } }, [plugin]) - const processLoading = (type: string) => { - _paq.push(['trackEvent', 'hometab', 'filesSection', 'importFrom' + type]) - const contentImport = plugin.contentImport - const workspace = plugin.fileManager.getProvider('workspace') - const startsWith = state.importSource.substring(0, 4) - - if ((type === 'ipfs' || type === 'IPFS') && startsWith !== 'ipfs' && startsWith !== 'IPFS') { - setState((prevState) => { - return { ...prevState, importSource: startsWith + state.importSource } - }) - } - contentImport.import( - state.modalInfo.prefix + state.importSource, - (loadingMsg) => dispatch({ tooltip: loadingMsg }), - async (error, content, cleanUrl, type, url) => { - if (error) { - toast(error.message || error) - } else { - try { - if (await workspace.exists(type + '/' + cleanUrl)) toast('File already exists in workspace') - else { - workspace.addExternal(type + '/' + cleanUrl, content, url) - plugin.call('menuicons', 'select', 'filePanel') - } - } catch (e) { - toast(e.message) - } - } - } - ) - setState((prevState) => { - return { ...prevState, showModalDialog: false, importSource: '' } - }) - } - const toast = (message: string) => { setState((prevState) => { return { ...prevState, toasterMsg: message } @@ -180,74 +126,16 @@ function HomeTabFile({ plugin }: HomeTabFileProps) { plugin.verticalIcons.select('filePanel') } - const showFullMessage = (title: string, loadItem: string, examples: Array, prefix = '') => { - setState((prevState) => { - return { - ...prevState, - showModalDialog: true, - modalInfo: { - title: title, - loadItem: loadItem, - examples: examples, - prefix, - }, - } - }) - } - - const hideFullMessage = () => { - //eslint-disable-line - setState((prevState) => { - return { ...prevState, showModalDialog: false, importSource: '' } - }) - } - const handleSwichToRecentWorkspace = async (e, workspaceName) => { e.preventDefault() _paq.push(['trackEvent', 'hometab', 'filesSection', 'loadRecentWorkspace']) await plugin.call('filePanel', 'switchToWorkspace', { name: workspaceName, isLocalhost: false }) } - const examples = state.modalInfo.examples.map((urlEl, key) => ( -
- {urlEl} -
- )) - return ( <> - hideFullMessage()} - okFn={() => processLoading(state.modalInfo.title)}> -
- {state.modalInfo.loadItem !== '' && Enter the {state.modalInfo.loadItem} you would like to load.} - {state.modalInfo.examples.length !== 0 && ( - <> -
e.g
-
{examples}
- - )} -
- {state.modalInfo.prefix && ipfs://} - { - setState((prevState) => { - return { ...prevState, importSource: inputValue.current.value } - }) - }} - /> -
-
-
-
+
{(state.recentWorkspaces[0] || state.recentWorkspaces[1] || state.recentWorkspaces[2]) && (
@@ -272,7 +160,7 @@ function HomeTabFile({ plugin }: HomeTabFileProps) {
)}
-
+
From a9ad55f9a078caa0e3f339514e4e30e908bd1103 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Fri, 21 Jun 2024 13:31:05 +0100 Subject: [PATCH 36/53] clean unused code --- libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx index 2a0853d20a..197f7b875b 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx @@ -1,11 +1,9 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ import React, { useState, useRef, useReducer, useEffect } from 'react' import { FormattedMessage } from 'react-intl' -import {ModalDialog} from '@remix-ui/modal-dialog' // eslint-disable-line import {Toaster} from '@remix-ui/toaster' // eslint-disable-line const _paq = (window._paq = window._paq || []) // eslint-disable-line import { CustomTooltip } from '@remix-ui/helper' -import { TEMPLATE_NAMES } from '@remix-ui/workspace' interface HomeTabFileProps { plugin: any From 7ca332321183ea5ca2b42158a00d35f6d4f2c9dd Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Fri, 21 Jun 2024 14:34:33 +0100 Subject: [PATCH 37/53] fix e2e --- apps/remix-ide-e2e/src/tests/terminal.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/remix-ide-e2e/src/tests/terminal.test.ts b/apps/remix-ide-e2e/src/tests/terminal.test.ts index fdbc8fb8b1..69e4cdc946 100644 --- a/apps/remix-ide-e2e/src/tests/terminal.test.ts +++ b/apps/remix-ide-e2e/src/tests/terminal.test.ts @@ -100,7 +100,7 @@ module.exports = { .switchEnvironment('vm-london') .click('*[data-id="terminalClearConsole"]') // clear the terminal .clickLaunchIcon('filePanel') - .click('*[data-id="treeViewDivMenu"]') // make sure we create the file at the root folder + .click('*[data-id="treeViewUltreeViewMenu"]') // make sure we create the file at the root folder .addFile('deployWithEthersJs.js', { content: deployWithEthersJs }) // .openFile('deployWithEthersJs.js') .pause(1000) From 8ae4eddf51a60198d887c70f4602b464d7b1eec8 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Sun, 23 Jun 2024 13:40:07 +0100 Subject: [PATCH 38/53] address comments from @ryestew --- .../home-tab/src/lib/components/homeTabGetStarted.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabGetStarted.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabGetStarted.tsx index d09f177411..97cbfa7ee3 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabGetStarted.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabGetStarted.tsx @@ -36,7 +36,7 @@ const workspaceTemplates: WorkspaceTemplate[] = [ }, { gsID: 'sUTLogo', - workspaceTitle: 'Zk Semaphore', + workspaceTitle: 'ZK Semaphore', description: 'Create a new ZK Project with Circom using this template.', projectLogo: 'assets/img/circom.webp', templateName: 'semaphore', @@ -50,7 +50,7 @@ const workspaceTemplates: WorkspaceTemplate[] = [ }, { gsID: 'sUTLogo', - workspaceTitle: 'Uniswap V4 Basic', + workspaceTitle: 'Uniswap V4 Hooks', description: 'Create a new MultiSig wallet using this template.', projectLogo: 'assets/img/gnosissafeLogo.png', templateName: 'uniswapV4Template', From da1c3f534098279532637ce023d9f087dabfa24e Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Sun, 23 Jun 2024 13:44:05 +0100 Subject: [PATCH 39/53] fix uniswap v4 description --- libs/remix-ui/home-tab/src/lib/components/homeTabGetStarted.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabGetStarted.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabGetStarted.tsx index 97cbfa7ee3..297f727fd4 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabGetStarted.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabGetStarted.tsx @@ -51,7 +51,7 @@ const workspaceTemplates: WorkspaceTemplate[] = [ { gsID: 'sUTLogo', workspaceTitle: 'Uniswap V4 Hooks', - description: 'Create a new MultiSig wallet using this template.', + description: 'Create a new workspace based on this template.', projectLogo: 'assets/img/gnosissafeLogo.png', templateName: 'uniswapV4Template', }, From 9aebbff87b380d9cda6b5d1e4df06ccea1be26a1 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Mon, 24 Jun 2024 13:58:25 +0100 Subject: [PATCH 40/53] Fix recent workspaces bug. Add validation to external import --- .../src/lib/components/homeTabFile.tsx | 5 ++- .../workspace/src/lib/remix-ui-workspace.tsx | 36 ++++++++++++++++--- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx index 197f7b875b..ba7124ae00 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx @@ -38,8 +38,11 @@ function HomeTabFile({ plugin }: HomeTabFileProps) { if (!recents) { recents = [] } else { + const filtered = recents.filter((workspace) => { + return workspace !== null + }) setState((prevState) => { - return { ...prevState, recentWorkspaces: recents.slice(0, recents.length <= 3 ? recents.length : 3) } + return { ...prevState, recentWorkspaces: filtered.slice(0, filtered.length <= 3 ? filtered.length : 3) } }) } }) diff --git a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx index 3a20a43b5e..3faaf402a6 100644 --- a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx +++ b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx @@ -4,7 +4,7 @@ import { Dropdown } from 'react-bootstrap' import { CustomIconsToggle, CustomMenu, CustomToggle, CustomTooltip, extractNameFromKey, extractParentFromKey } from '@remix-ui/helper' import { CopyToClipboard } from '@remix-ui/clipboard' import {FileExplorer} from './components/file-explorer' // eslint-disable-line -import {ModalDialog} from '@remix-ui/modal-dialog' // eslint-disable-line +import {ModalDialog, ValidationResult} from '@remix-ui/modal-dialog' // eslint-disable-line import { FileSystemContext } from './contexts' import './css/remix-ui-workspace.css' import { ROOT_PATH, TEMPLATE_NAMES } from './utils/constants' @@ -109,6 +109,7 @@ export function Workspace() { const [modalState, setModalState] = useState<{ searchInput: string showModalDialog: boolean + // modalValidation?: ValidationResult modalInfo: { title: string loadItem: string @@ -117,15 +118,17 @@ export function Workspace() { } importSource: string toasterMsg: string - recentWorkspaces: Array }>({ searchInput: '', showModalDialog: false, + // modalValidation: {} as ValidationResult, modalInfo: { title: '', loadItem: '', examples: [], prefix: '' }, importSource: '', - toasterMsg: '', - recentWorkspaces: [], + toasterMsg: '' }) + + const [validationResult, setValidationResult] = useState({ valid: true, message: '' }) + const loadingInitialState = { tooltip: '', showModalDialog: false, @@ -186,6 +189,14 @@ export function Workspace() { setState((prevState) => { return { ...prevState, importSource: startsWith + modalState.importSource } }) + } else { + global.plugin.call('notification', 'alert', { id: 'homeTabAlert', message: 'The provided value is invalid!' }) + return + } + + if (!startsWith.startsWith('https://') || !startsWith.startsWith('http://')) { + global.plugin.call('notification', 'alert', { id: 'homeTabAlert', message: 'The provided value is invalid!' }) + return } contentImport.import( modalState.modalInfo.prefix + modalState.importSource, @@ -219,6 +230,20 @@ export function Workspace() { showFullMessage(title, loadItem, examples, prefix) } + /** + * Validate the url fed into the modal for ipfs and https imports + */ + const validateUrlForImport = (input: any) => { + if ((input.trim().startsWith('ipfs://') && input.length > 7) || input.trim().startsWith('https://') || input.trim() !== '') { + setValidationResult({ valid: true, message: '' }) + return validationResult + } else { + global.plugin.call('notification', 'alert', { id: 'homeTabAlert', message: 'The provided value is invalid!' }) + setValidationResult({ valid: false, message: 'The provided value is invalid!' }) + return validationResult + } + } + useEffect(() => { let workspaceName = localStorage.getItem('currentWorkspace') if (!workspaceName && global.fs.browser.workspaces.length) { @@ -1454,7 +1479,8 @@ export function Workspace() { )} hideFullMessage()} - okFn={() => processLoading(modalState.modalInfo.title)}> + okFn={() => processLoading(modalState.modalInfo.title)} validationFn={validateUrlForImport} + >
{modalState.modalInfo.loadItem !== '' && Enter the {modalState.modalInfo.loadItem} you would like to load.} {modalState.modalInfo.examples.length !== 0 && ( From cc0032fc85ce0f6b3115d25456d44956104f5550 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Mon, 24 Jun 2024 17:05:44 +0100 Subject: [PATCH 41/53] fix niggly issues --- .../src/app/tabs/locales/en/home.json | 2 +- .../src/lib/components/homeTabFile.tsx | 11 ++++++++--- .../src/lib/components/file-explorer-menu.tsx | 2 ++ .../workspace/src/lib/remix-ui-workspace.tsx | 19 ++++++------------- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/apps/remix-ide/src/app/tabs/locales/en/home.json b/apps/remix-ide/src/app/tabs/locales/en/home.json index 066270ef0a..99389282e1 100644 --- a/apps/remix-ide/src/app/tabs/locales/en/home.json +++ b/apps/remix-ide/src/app/tabs/locales/en/home.json @@ -68,7 +68,7 @@ "home.seeAllTutorials": "See all tutorials", "home.maintainedByRemix": "Maintained by Remix", "home.gitCloneTooltip": "Clone a Github repo to a new workspace", - "home.gistTooltip": "Import gist to a workspace", + "home.gistTooltip": "Open Gist repo", "home.newFileTooltip": "Add a new file to a workspace" } diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx index ba7124ae00..e8c01e1891 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx @@ -168,7 +168,11 @@ function HomeTabFile({ plugin }: HomeTabFileProps) {
} tooltipTextClasses="border bg-light text-dark p-1 pr-3"> - @@ -181,9 +185,9 @@ function HomeTabFile({ plugin }: HomeTabFileProps) { title="open file" type="file" id="openFileInput" - onChange={(event) => { + onChange={async (event) => { event.stopPropagation() - plugin.verticalIcons.select('filePanel') + await plugin.call('menuicons', 'select', 'filePanel') uploadFile(event.target) }} multiple @@ -193,6 +197,7 @@ function HomeTabFile({ plugin }: HomeTabFileProps) { } tooltipTextClasses="border bg-light text-dark p-1 pr-3" > } tooltipTextClasses="border bg-light text-dark p-1 pr-3" >
From d17b69380e20fc8f7ff050fe8a2e960fa1d2ce42 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Tue, 25 Jun 2024 11:01:58 +0100 Subject: [PATCH 43/53] add padding to icons --- libs/remix-ui/home-tab/src/lib/components/homeTabTitle.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabTitle.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabTitle.tsx index 721efa5512..c6273a8545 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabTitle.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabTitle.tsx @@ -126,7 +126,7 @@ function HomeTabTitle() { openLink(button.urlLink) _paq.push(button.matomoTrackingEntry) }} - className={`border-0 h-100 pl-1 pr-0 btn fab ${button.iconClass}`} + className={`border-0 h-100 px-1 btn fab ${button.iconClass}`} > ))} From 873073f7054abe3daecf94cb9d594b691cb46300 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Tue, 25 Jun 2024 12:22:09 +0100 Subject: [PATCH 44/53] update homeTabFile button. update image css and translation --- .../src/app/tabs/locales/en/filePanel.json | 2 +- .../src/lib/components/homeTabFeatured.tsx | 2 +- .../src/lib/components/homeTabFile.tsx | 21 ++++++++++--------- .../home-tab/src/lib/remix-ui-home-tab.css | 6 ++++++ 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/apps/remix-ide/src/app/tabs/locales/en/filePanel.json b/apps/remix-ide/src/app/tabs/locales/en/filePanel.json index 5f033c3aad..8159675a7e 100644 --- a/apps/remix-ide/src/app/tabs/locales/en/filePanel.json +++ b/apps/remix-ide/src/app/tabs/locales/en/filePanel.json @@ -68,7 +68,7 @@ "filePanel.createNewFolder": "Create new folder", "filePanel.publishToGist": "Publish to Gist", "filePanel.workspace.publishToGist": "Publish workspace to GitHub gist", - "filePanel.uploadFile": "Upload files", + "filePanel.uploadFile": "Open a File from your File System", "filePanel.uploadFolder": "Upload folder", "filePanel.updateGist": "Update Gist", "filePanel.workspace.updateGist": "Publish Gist update", diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabFeatured.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabFeatured.tsx index baa5a5f26d..bc5fb49f62 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabFeatured.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabFeatured.tsx @@ -109,7 +109,7 @@ function HomeTabFeatured() {
- +
diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx index 4966554ff2..39def73d90 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx @@ -173,12 +173,14 @@ function HomeTabFile({ plugin }: HomeTabFileProps) { await plugin.call('menuicons', 'select', 'filePanel') await plugin.call('filePanel', 'createNewFile') }}> + } tooltipTextClasses="border bg-light text-dark p-1 pr-3"> - } tooltipTextClasses="border bg-light text-dark p-1 pr-3" + {/* } tooltipTextClasses="border bg-light text-dark p-1 pr-3" > - + */} } tooltipTextClasses="border bg-light text-dark p-1 pr-3" > + } tooltipTextClasses="border bg-light text-dark p-1 pr-3"> + +
-
- } tooltipTextClasses="border bg-light text-dark p-1 pr-3"> - - -
diff --git a/libs/remix-ui/home-tab/src/lib/remix-ui-home-tab.css b/libs/remix-ui/home-tab/src/lib/remix-ui-home-tab.css index efdb012c7d..b62c511f34 100644 --- a/libs/remix-ui/home-tab/src/lib/remix-ui-home-tab.css +++ b/libs/remix-ui/home-tab/src/lib/remix-ui-home-tab.css @@ -125,6 +125,12 @@ width: 20rem; } +.remixui_carouselImage_remixbeta { + flex: 1; + height: 20rem; + width: 18rem; +} + .remixui_carouselbox { min-height: 25.12rem; } From 26af6f1d47940cfef278a50b4cfb8cbad52e7595 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Tue, 25 Jun 2024 13:52:01 +0100 Subject: [PATCH 45/53] fix css classes --- .../src/lib/components/homeTabFile.tsx | 17 ++++---------- .../src/lib/components/homeTabGetStarted.tsx | 22 +++---------------- 2 files changed, 7 insertions(+), 32 deletions(-) diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx index 39def73d90..c186227a9f 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx @@ -173,14 +173,14 @@ function HomeTabFile({ plugin }: HomeTabFileProps) { await plugin.call('menuicons', 'select', 'filePanel') await plugin.call('filePanel', 'createNewFile') }}> - + } tooltipTextClasses="border bg-light text-dark p-1 pr-3"> - {/* } tooltipTextClasses="border bg-light text-dark p-1 pr-3" - > - - */} } tooltipTextClasses="border bg-light text-dark p-1 pr-3" > } tooltipTextClasses="border bg-light text-dark p-1 pr-3"> - diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabGetStarted.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabGetStarted.tsx index 297f727fd4..645e2f3346 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabGetStarted.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabGetStarted.tsx @@ -149,12 +149,12 @@ function HomeTabGetStarted({ plugin }: HomeTabGetStartedProps) {
-
- {workspaceTemplates.slice(0, 3).map((template, index) => ( +
+ {workspaceTemplates.map((template, index) => (
-
- {workspaceTemplates.slice(3, workspaceTemplates.length).map((template, index) => ( - - - - ))} -
From a61dfe1b200fa833650951c1e57145f89cdb5588 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Tue, 25 Jun 2024 14:29:36 +0100 Subject: [PATCH 46/53] disable e2e for git clone button --- .../src/tests/importFromGithub.test.ts | 8 +- .../src/lib/components/homeTabFile.tsx | 86 +++++++++---------- 2 files changed, 46 insertions(+), 48 deletions(-) diff --git a/apps/remix-ide-e2e/src/tests/importFromGithub.test.ts b/apps/remix-ide-e2e/src/tests/importFromGithub.test.ts index d2dbe89f21..47ae00a325 100644 --- a/apps/remix-ide-e2e/src/tests/importFromGithub.test.ts +++ b/apps/remix-ide-e2e/src/tests/importFromGithub.test.ts @@ -14,7 +14,7 @@ module.exports = { init(browser, done) }, - 'Import from GitHub Modal #group1': function (browser: NightwatchBrowser) { + 'Import from GitHub Modal #group1': '' +function (browser: NightwatchBrowser) { browser.clickLaunchIcon('home') .waitForElementVisible('*[data-id="remixIdeIconPanel"]', 10000) .clickLaunchIcon('filePanel') @@ -28,7 +28,7 @@ module.exports = { .waitForElementVisible('input[data-id="modalDialogCustomPromptTextClone"]') }, - 'Display Error Message For Invalid GitHub URL Modal #group1': function (browser: NightwatchBrowser) { + 'Display Error Message For Invalid GitHub URL Modal #group1': '' +function (browser: NightwatchBrowser) { browser .execute(() => { (document.querySelector('input[data-id="modalDialogCustomPromptTextClone"]') as any).focus() @@ -40,7 +40,7 @@ module.exports = { //.waitForElementContainsText('*[data-shared="tooltipPopup"] span', 'not found ' + testData.invalidURL) }, - 'Clone From GitHub with Valid URL #group2': function (browser: NightwatchBrowser) { + 'Clone From GitHub with Valid URL #group2': '' +function (browser: NightwatchBrowser) { browser .waitForElementVisible('*[data-id="remixIdeIconPanel"]', 10000) .clickLaunchIcon('filePanel') @@ -64,7 +64,7 @@ module.exports = { browser.assert.ok(content.indexOf('library Roles {') !== -1, 'content does contain "library Roles {"') }) }, - 'Confirm JSON After Cloning From GitHub For Valid URL #group2': function (browser: NightwatchBrowser) { + 'Confirm JSON After Cloning From GitHub For Valid URL #group2': '' +function (browser: NightwatchBrowser) { browser .click('div[data-id="verticalIconsHomeIcon"]') .openFile('package.json') diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx index c186227a9f..71d5c07185 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx @@ -165,51 +165,49 @@ function HomeTabFile({ plugin }: HomeTabFileProps) { -
-
- } tooltipTextClasses="border bg-light text-dark p-1 pr-3"> - - - } tooltipTextClasses="border bg-light text-dark p-1 pr-3"> - - - { - event.stopPropagation() - await plugin.call('menuicons', 'select', 'filePanel') - uploadFile(event.target) - }} - multiple - /> - - - } tooltipTextClasses="border bg-light text-dark p-1 pr-3" - > - + + } tooltipTextClasses="border bg-light text-dark p-1 pr-3"> + + + { + event.stopPropagation() + await plugin.call('menuicons', 'select', 'filePanel') + uploadFile(event.target) + }} + multiple + /> + + + } tooltipTextClasses="border bg-light text-dark p-1 pr-3" + > + - - } tooltipTextClasses="border bg-light text-dark p-1 pr-3"> - - -
+ + + } tooltipTextClasses="border bg-light text-dark p-1 pr-3"> + +
From b73596d6e590db46ec277431f7c49f234c4efaa7 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Tue, 25 Jun 2024 14:59:11 +0100 Subject: [PATCH 47/53] update css with flex-wrap --- libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx index 71d5c07185..f9350bfe84 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx @@ -165,7 +165,7 @@ function HomeTabFile({ plugin }: HomeTabFileProps) { -
+
} tooltipTextClasses="border bg-light text-dark p-1 pr-3"> + + } tooltipTextClasses="border bg-light text-dark p-1 pr-3" + > + } tooltipTextClasses="border bg-light text-dark p-1 pr-3"> - From dcd7aa28ef1843b7e1af806784bb5913e4ff9456 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Tue, 25 Jun 2024 16:50:51 +0100 Subject: [PATCH 49/53] restore e2e for git clone --- apps/remix-ide-e2e/src/tests/importFromGithub.test.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/remix-ide-e2e/src/tests/importFromGithub.test.ts b/apps/remix-ide-e2e/src/tests/importFromGithub.test.ts index 47ae00a325..d2dbe89f21 100644 --- a/apps/remix-ide-e2e/src/tests/importFromGithub.test.ts +++ b/apps/remix-ide-e2e/src/tests/importFromGithub.test.ts @@ -14,7 +14,7 @@ module.exports = { init(browser, done) }, - 'Import from GitHub Modal #group1': '' +function (browser: NightwatchBrowser) { + 'Import from GitHub Modal #group1': function (browser: NightwatchBrowser) { browser.clickLaunchIcon('home') .waitForElementVisible('*[data-id="remixIdeIconPanel"]', 10000) .clickLaunchIcon('filePanel') @@ -28,7 +28,7 @@ module.exports = { .waitForElementVisible('input[data-id="modalDialogCustomPromptTextClone"]') }, - 'Display Error Message For Invalid GitHub URL Modal #group1': '' +function (browser: NightwatchBrowser) { + 'Display Error Message For Invalid GitHub URL Modal #group1': function (browser: NightwatchBrowser) { browser .execute(() => { (document.querySelector('input[data-id="modalDialogCustomPromptTextClone"]') as any).focus() @@ -40,7 +40,7 @@ module.exports = { //.waitForElementContainsText('*[data-shared="tooltipPopup"] span', 'not found ' + testData.invalidURL) }, - 'Clone From GitHub with Valid URL #group2': '' +function (browser: NightwatchBrowser) { + 'Clone From GitHub with Valid URL #group2': function (browser: NightwatchBrowser) { browser .waitForElementVisible('*[data-id="remixIdeIconPanel"]', 10000) .clickLaunchIcon('filePanel') @@ -64,7 +64,7 @@ module.exports = { browser.assert.ok(content.indexOf('library Roles {') !== -1, 'content does contain "library Roles {"') }) }, - 'Confirm JSON After Cloning From GitHub For Valid URL #group2': '' +function (browser: NightwatchBrowser) { + 'Confirm JSON After Cloning From GitHub For Valid URL #group2': function (browser: NightwatchBrowser) { browser .click('div[data-id="verticalIconsHomeIcon"]') .openFile('package.json') From 348e183e6b29546d32beb23113fcf43f720f8697 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Wed, 26 Jun 2024 09:51:23 +0100 Subject: [PATCH 50/53] switch git clone button icon --- libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx index a7c116a6b5..fbd4190c5d 100644 --- a/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx +++ b/libs/remix-ui/home-tab/src/lib/components/homeTabFile.tsx @@ -208,7 +208,7 @@ function HomeTabFile({ plugin }: HomeTabFileProps) { _paq.push(['trackEvent', 'hometab', 'filesSection', 'Git Clone']) await plugin.call('filePanel', 'clone') }}> - + Git Clone From be42165902ca3a30fb6d53b93fbf75664576b444 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Thu, 27 Jun 2024 09:02:50 +0100 Subject: [PATCH 51/53] fix crash --- libs/remix-ui/statusbar/src/lib/components/gitStatus.tsx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/libs/remix-ui/statusbar/src/lib/components/gitStatus.tsx b/libs/remix-ui/statusbar/src/lib/components/gitStatus.tsx index fa93315167..e3a26919ae 100644 --- a/libs/remix-ui/statusbar/src/lib/components/gitStatus.tsx +++ b/libs/remix-ui/statusbar/src/lib/components/gitStatus.tsx @@ -52,7 +52,6 @@ export default function GitStatus({ plugin, gitBranchName, setGitBranchName }: G await plugin.call('dGitProvider', 'init') const isActive = await plugin.call('manager', 'isActive', 'dgit') if (!isActive) await plugin.call('manager', 'activatePlugin', 'dgit') - // plugin.verticalIcons.select('dgit') } return ( @@ -63,10 +62,10 @@ export default function GitStatus({ plugin, gitBranchName, setGitBranchName }: G className="d-flex flex-row pl-3 text-white justify-content-center align-items-center remixui_statusbar_gitstatus" onClick={async () => await lightDgitUp()} > - {gitBranchName.length > 0 && gitBranchName !== 'Not a git repo' ? + {gitBranchName && gitBranchName !== 'Not a git repo' && gitBranchName.length > 0 ? : Initialize as git repo} - {gitBranchName.length > 0 && gitBranchName !== 'Not a git repo' && {gitBranchName}} - {gitBranchName.length > 0 && gitBranchName !== 'Not a git repo' && } + {gitBranchName && gitBranchName !== 'Not a git repo' && gitBranchName.length > 0 && {gitBranchName}} + {gitBranchName && gitBranchName !== 'Not a git repo' && gitBranchName.length > 0 && }
) From 67f484309813f1e9c2e3ec716ade85c55cd822aa Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Thu, 27 Jun 2024 10:11:34 +0100 Subject: [PATCH 52/53] add localhost check --- .../src/lib/components/gitStatus.tsx | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/libs/remix-ui/statusbar/src/lib/components/gitStatus.tsx b/libs/remix-ui/statusbar/src/lib/components/gitStatus.tsx index e3a26919ae..b8f1ec224b 100644 --- a/libs/remix-ui/statusbar/src/lib/components/gitStatus.tsx +++ b/libs/remix-ui/statusbar/src/lib/components/gitStatus.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, Dispatch } from 'react' +import React, { useEffect, Dispatch, useState } from 'react' // eslint-disable-next-line @nrwl/nx/enforce-module-boundaries import { StatusBar } from 'apps/remix-ide/src/app/components/status-bar' import '../../css/statusbar.css' @@ -11,10 +11,12 @@ export interface GitStatusProps { } export default function GitStatus({ plugin, gitBranchName, setGitBranchName }: GitStatusProps) { + const [isLocalHost, setIsLocalHost] = useState(false) useEffect(() => { plugin.on('filePanel', 'setWorkspace', async (workspace) => { const isGit = await plugin.call('fileManager', 'isGitRepo') + setIsLocalHost(workspace.isLocalhost) if (isGit) { setGitBranchName(workspace.name) } else { @@ -23,6 +25,7 @@ export default function GitStatus({ plugin, gitBranchName, setGitBranchName }: G }) plugin.on('filePanel', 'workspaceInitializationCompleted', async () => { const isGit = await plugin.call('fileManager', 'isGitRepo') + console.log('complete', gitBranchName) if (isGit) { const workspace = localStorage.getItem('currentWorkspace') setGitBranchName(workspace) @@ -37,6 +40,7 @@ export default function GitStatus({ plugin, gitBranchName, setGitBranchName }: G setGitBranchName(workspace) } }) + }, []) const lightDgitUp = async () => { @@ -51,9 +55,14 @@ export default function GitStatus({ plugin, gitBranchName, setGitBranchName }: G const initializeNewGitRepo = async () => { await plugin.call('dGitProvider', 'init') const isActive = await plugin.call('manager', 'isActive', 'dgit') - if (!isActive) await plugin.call('manager', 'activatePlugin', 'dgit') + if (isLocalHost === false) { + if (!isActive) await plugin.call('manager', 'activatePlugin', 'dgit') + } } + const checkBranchName = ()=> { + return gitBranchName && gitBranchName !== 'Not a git repo' && gitBranchName.length > 0 + } return ( await lightDgitUp()} > - {gitBranchName && gitBranchName !== 'Not a git repo' && gitBranchName.length > 0 ? + {checkBranchName() && isLocalHost === false ? : Initialize as git repo} - {gitBranchName && gitBranchName !== 'Not a git repo' && gitBranchName.length > 0 && {gitBranchName}} - {gitBranchName && gitBranchName !== 'Not a git repo' && gitBranchName.length > 0 && } + {checkBranchName() && isLocalHost === false && {gitBranchName}} + {checkBranchName() && isLocalHost === false && }
) From cc86ee69f42755eec66e9e18aa8bfc76cf4986d7 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Thu, 27 Jun 2024 10:15:17 +0100 Subject: [PATCH 53/53] remove console log --- libs/remix-ui/statusbar/src/lib/components/gitStatus.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/libs/remix-ui/statusbar/src/lib/components/gitStatus.tsx b/libs/remix-ui/statusbar/src/lib/components/gitStatus.tsx index b8f1ec224b..07c299c132 100644 --- a/libs/remix-ui/statusbar/src/lib/components/gitStatus.tsx +++ b/libs/remix-ui/statusbar/src/lib/components/gitStatus.tsx @@ -25,7 +25,6 @@ export default function GitStatus({ plugin, gitBranchName, setGitBranchName }: G }) plugin.on('filePanel', 'workspaceInitializationCompleted', async () => { const isGit = await plugin.call('fileManager', 'isGitRepo') - console.log('complete', gitBranchName) if (isGit) { const workspace = localStorage.getItem('currentWorkspace') setGitBranchName(workspace)