diff --git a/apps/remix-ide/src/app/files/dgitProvider.ts b/apps/remix-ide/src/app/files/dgitProvider.ts index 10d2c76c7a..c2928320e1 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,12 @@ 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.' }) + this.emit('repositoryWithSubmodulesCloned') + } + }) return result } } 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' } 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 } 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 76ddc09e1c..85860d03a5 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) @@ -1205,11 +1211,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}