diff --git a/apps/remix-ide/src/app/panels/layout.ts b/apps/remix-ide/src/app/panels/layout.ts index 451c2aefe7..663692db26 100644 --- a/apps/remix-ide/src/app/panels/layout.ts +++ b/apps/remix-ide/src/app/panels/layout.ts @@ -80,7 +80,8 @@ export class Layout extends Plugin { const params = queryParams.get() if (params.minimizeterminal || params.embed) { this.panels.terminal.minimized = true - this.event.emit('change', null) + this.event.emit('change', this.panels) + this.emit('change', this.panels) } if (params.minimizesidepanel || params.embed) { this.event.emit('minimizesidepanel') diff --git a/apps/remix-ide/src/blockchain/blockchain.js b/apps/remix-ide/src/blockchain/blockchain.js index 88ea275779..a747ba0f31 100644 --- a/apps/remix-ide/src/blockchain/blockchain.js +++ b/apps/remix-ide/src/blockchain/blockchain.js @@ -353,7 +353,7 @@ export class Blockchain extends Plugin { if (network.name === 'VM') return this.call('terminal', 'logHtml', ( - open in etherscan + view on etherscan )) }) }) diff --git a/libs/remix-lib/src/execution/txRunnerWeb3.ts b/libs/remix-lib/src/execution/txRunnerWeb3.ts index 9b41fe9e5f..c62b655fb8 100644 --- a/libs/remix-lib/src/execution/txRunnerWeb3.ts +++ b/libs/remix-lib/src/execution/txRunnerWeb3.ts @@ -153,7 +153,7 @@ async function tryTillReceiptAvailable (txhash, web3) { async function tryTillTxAvailable (txhash, web3) { try { const tx = await web3.eth.getTransaction(txhash) - if (tx) return tx + if (tx && tx.blockHash) return tx } catch (e) {} return await tryTillTxAvailable(txhash, web3) } diff --git a/libs/remix-tests/src/compiler.ts b/libs/remix-tests/src/compiler.ts index 740a306931..b8fd320f00 100644 --- a/libs/remix-tests/src/compiler.ts +++ b/libs/remix-tests/src/compiler.ts @@ -47,7 +47,6 @@ function isRemixTestFile (path: string) { function processFile (filePath: string, sources: SrcIfc, isRoot = false) { const importRegEx = /import ['"](.+?)['"];/g - let group: RegExpExecArray| null = null const isFileAlreadyInSources: boolean = Object.keys(sources).includes(filePath) // Return if file is a remix test file or already processed @@ -62,14 +61,6 @@ function processFile (filePath: string, sources: SrcIfc, isRoot = false) { content = includeTestLibs.concat(content) } sources[filePath] = { content } - importRegEx.exec('') // Resetting state of RegEx - - // Process each 'import' in file content - while ((group = importRegEx.exec(content))) { - const importedFile: string = group[1] - const importedFilePath: string = path.join(path.dirname(filePath), importedFile) - processFile(importedFilePath, sources) - } } const userAgent = (typeof (navigator) !== 'undefined') && navigator.userAgent ? navigator.userAgent.toLowerCase() : '-' @@ -123,7 +114,13 @@ export function compileFileOrFiles (filename: string, isDirectory: boolean, opts } finally { async.waterfall([ function loadCompiler (next) { - compiler = new RemixCompiler() + compiler = new RemixCompiler((url, cb) => { + try { + cb(null, fs.readFileSync(url, 'utf-8')) + } catch (e) { + cb(e.message) + } + }) if (compilerConfig) { const { currentCompilerUrl, evmVersion, optimize, runs } = compilerConfig if (evmVersion) compiler.set('evmVersion', evmVersion) diff --git a/libs/remix-ui/panel/src/lib/dragbar/dragbar.tsx b/libs/remix-ui/panel/src/lib/dragbar/dragbar.tsx index 232f23ff10..116630c64c 100644 --- a/libs/remix-ui/panel/src/lib/dragbar/dragbar.tsx +++ b/libs/remix-ui/panel/src/lib/dragbar/dragbar.tsx @@ -20,6 +20,7 @@ const DragBar = (props: IRemixDragBarUi) => { props.refObject.current.setAttribute('style', `height: ${h}px;`) setDragBarPosY(window.innerHeight - props.refObject.current.offsetHeight) setDragState(false) + props.setHideStatus(false) } const handleResize = () => { setDragBarPosY(window.innerHeight - props.refObject.current.offsetHeight) diff --git a/libs/remix-ui/panel/src/lib/main/main-panel.tsx b/libs/remix-ui/panel/src/lib/main/main-panel.tsx index 4fb00ddf65..4ea7dc20f2 100644 --- a/libs/remix-ui/panel/src/lib/main/main-panel.tsx +++ b/libs/remix-ui/panel/src/lib/main/main-panel.tsx @@ -37,14 +37,24 @@ const RemixUIMainPanel = () => { appContext.layout.event.on('change', () => { renderPanels() }) + + return () => { + appContext.layout.event.off('change') + } }, []) + const showTerminal = (hide: boolean) => { + appContext.layout.panels.terminal.minimized = hide + appContext.layout.event.emit('change', appContext.layout.panels) + appContext.layout.emit('change', appContext.layout.panels) + } + return (
{Object.values(plugins).map((pluginRecord, i) => { return ( - {(pluginRecord.profile.name === 'terminal') ? : null} + {(pluginRecord.profile.name === 'terminal') ? : null}
or
- + ) => { // eslint-d
-
{testsOutput}
+
{testsOutput}
) diff --git a/libs/remix-ui/terminal/src/lib/actions/terminalAction.ts b/libs/remix-ui/terminal/src/lib/actions/terminalAction.ts index d0efd289b5..5ee522018b 100644 --- a/libs/remix-ui/terminal/src/lib/actions/terminalAction.ts +++ b/libs/remix-ui/terminal/src/lib/actions/terminalAction.ts @@ -111,9 +111,11 @@ export const listenOnNetworkAction = async (plugins, isListening) => { } export const initListeningOnNetwork = (plugins, dispatch: React.Dispatch) => { + const provider = plugins.blockchain.getProvider() + plugins.txListener.event.register(NEW_BLOCK, (block) => { if (!block.transactions || (block.transactions && !block.transactions.length)) { - dispatch({ type: EMPTY_BLOCK, payload: { message: 0 } }) + dispatch({ type: EMPTY_BLOCK, payload: { message: 0, provider } }) } }) plugins.txListener.event.register(KNOWN_TRANSACTION, () => { @@ -128,6 +130,8 @@ export const initListeningOnNetwork = (plugins, dispatch: React.Dispatch) = const log = async (plugins, tx, receipt, dispatch: React.Dispatch) => { const resolvedTransaction = await plugins.txListener.resolvedTransaction(tx.hash) + const provider = plugins.blockchain.getProvider() + if (resolvedTransaction) { let compiledContracts = null if (plugins._deps.compilersArtefacts.__last) { @@ -135,11 +139,11 @@ export const initListeningOnNetwork = (plugins, dispatch: React.Dispatch) = } await plugins.eventsDecoder.parseLogs(tx, resolvedTransaction.contractName, compiledContracts, async (error, logs) => { if (!error) { - await dispatch({ type: KNOWN_TRANSACTION, payload: { message: [{ tx: tx, receipt: receipt, resolvedData: resolvedTransaction, logs: logs }] } }) + await dispatch({ type: KNOWN_TRANSACTION, payload: { message: [{ tx: tx, receipt: receipt, resolvedData: resolvedTransaction, logs: logs }], provider } }) } }) } else { - await dispatch({ type: UNKNOWN_TRANSACTION, payload: { message: [{ tx: tx, receipt: receipt }] } }) + await dispatch({ type: UNKNOWN_TRANSACTION, payload: { message: [{ tx: tx, receipt: receipt }], provider } }) } } diff --git a/libs/remix-ui/terminal/src/lib/components/Context.tsx b/libs/remix-ui/terminal/src/lib/components/Context.tsx index 9e5d09d93c..d5234f9526 100644 --- a/libs/remix-ui/terminal/src/lib/components/Context.tsx +++ b/libs/remix-ui/terminal/src/lib/components/Context.tsx @@ -4,7 +4,7 @@ import helper from 'apps/remix-ide/src/lib/helper' const remixLib = require('@remix-project/remix-lib') const typeConversion = remixLib.execution.typeConversion -const Context = ({ opts, blockchain }) => { +const Context = ({ opts, provider }: { opts, provider: string }) => { const data = opts.tx || '' const from = opts.from ? helper.shortenHexData(opts.from) : '' let to = opts.to @@ -16,7 +16,8 @@ const Context = ({ opts, blockchain }) => { const block = data.receipt ? data.receipt.blockNumber : data.blockNumber || '' const i = data.receipt ? data.transactionIndex : data.transactionIndex const value = val ? typeConversion.toInt(val) : 0 - if (blockchain.getProvider() === 'vm') { + + if (provider === 'vm') { return (
@@ -29,7 +30,7 @@ const Context = ({ opts, blockchain }) => {
hash: {hash}
) - } else if (blockchain.getProvider() !== 'vm' && data.resolvedData) { + } else if (provider !== 'vm' && data.resolvedData) { return (
diff --git a/libs/remix-ui/terminal/src/lib/components/RenderKnownTransactions.tsx b/libs/remix-ui/terminal/src/lib/components/RenderKnownTransactions.tsx index 3682219e06..64d58248bf 100644 --- a/libs/remix-ui/terminal/src/lib/components/RenderKnownTransactions.tsx +++ b/libs/remix-ui/terminal/src/lib/components/RenderKnownTransactions.tsx @@ -8,7 +8,7 @@ import showTable from './Table' const remixLib = require('@remix-project/remix-lib') const typeConversion = remixLib.execution.typeConversion -const RenderKnownTransactions = ({ tx, receipt, resolvedData, logs, index, plugin, showTableHash, txDetails, modal }) => { +const RenderKnownTransactions = ({ tx, receipt, resolvedData, logs, index, plugin, showTableHash, txDetails, modal, provider }) => { const debug = (event, tx) => { event.stopPropagation() if (tx.isCall && tx.envMode !== 'vm') { @@ -26,7 +26,7 @@ const RenderKnownTransactions = ({ tx, receipt, resolvedData, logs, index, plugi
txDetails(event, tx)}> - +
{ +const RenderUnKnownTransactions = ({ tx, receipt, index, plugin, showTableHash, txDetails, modal, provider }) => { const debug = (event, tx) => { event.stopPropagation() if (tx.isCall && tx.envMode !== 'vm') { @@ -21,7 +21,7 @@ const RenderUnKnownTransactions = ({ tx, receipt, index, plugin, showTableHash,
txDetails(event, tx)}> - +
{ case HTML: return { ...state, - journalBlocks: initialState.journalBlocks.push({ message: action.payload.message, style: 'text-log' }) + journalBlocks: initialState.journalBlocks.push({ message: action.payload.message, style: 'text-log', provider: action.payload.provider }) } case LOG: return { ...state, - journalBlocks: initialState.journalBlocks.push({ message: action.payload.message, style: 'text-info' }) + journalBlocks: initialState.journalBlocks.push({ message: action.payload.message, style: 'text-info', provider: action.payload.provider }) } case INFO: return { ...state, - journalBlocks: initialState.journalBlocks.push({ message: action.payload.message, style: 'text-info' }) + journalBlocks: initialState.journalBlocks.push({ message: action.payload.message, style: 'text-info', provider: action.payload.provider }) } case WARN: return { ...state, - journalBlocks: initialState.journalBlocks.push({ message: action.payload.message, style: 'text-warning' }) + journalBlocks: initialState.journalBlocks.push({ message: action.payload.message, style: 'text-warning', provider: action.payload.provider }) } case ERROR: return { ...state, - journalBlocks: initialState.journalBlocks.push({ message: action.payload.message, style: 'text-danger' }) + journalBlocks: initialState.journalBlocks.push({ message: action.payload.message, style: 'text-danger', provider: action.payload.provider }) } case SCRIPT: return { ...state, - journalBlocks: initialState.journalBlocks.push({ message: action.payload.message, style: 'text-log' }) + journalBlocks: initialState.journalBlocks.push({ message: action.payload.message, style: 'text-log', provider: action.payload.provider }) } case KNOWN_TRANSACTION: return { ...state, - journalBlocks: initialState.journalBlocks.push({ message: action.payload.message, style: '', name: 'knownTransaction' }) + journalBlocks: initialState.journalBlocks.push({ message: action.payload.message, style: '', name: 'knownTransaction', provider: action.payload.provider }) } case UNKNOWN_TRANSACTION: return { ...state, - journalBlocks: initialState.journalBlocks.push({ message: action.payload.message, style: '', name: 'unknownTransaction' }) + journalBlocks: initialState.journalBlocks.push({ message: action.payload.message, style: '', name: 'unknownTransaction', provider: action.payload.provider }) } case EMPTY_BLOCK: return { ...state, - journalBlocks: initialState.journalBlocks.push({ message: action.payload.message, style: '', name: 'emptyBlock' }) + journalBlocks: initialState.journalBlocks.push({ message: action.payload.message, style: '', name: 'emptyBlock', provider: action.payload.provider }) } case NEW_TRANSACTION: return { ...state, - journalBlocks: initialState.journalBlocks.push({ message: action.payload.message, style: '' }) + journalBlocks: initialState.journalBlocks.push({ message: action.payload.message, style: '', provider: action.payload.provider }) } } } diff --git a/libs/remix-ui/terminal/src/lib/remix-ui-terminal.tsx b/libs/remix-ui/terminal/src/lib/remix-ui-terminal.tsx index 1de6922dce..95f3bf6d71 100644 --- a/libs/remix-ui/terminal/src/lib/remix-ui-terminal.tsx +++ b/libs/remix-ui/terminal/src/lib/remix-ui-terminal.tsx @@ -419,6 +419,16 @@ export const RemixUiTerminal = (props: RemixUiTerminalProps) => { props.plugin.call('layout', 'minimize', props.plugin.profile.name, isOpen) } + useEffect(() => { + props.plugin.on('layout', 'change', (panels) => { + setIsOpen(!panels.terminal.minimized) + }) + + return () => { + props.plugin.off('layout', 'change') + } + }, []) + const classNameBlock = 'remix_ui_terminal_block px-4 py-1 text-break' return ( @@ -490,6 +500,7 @@ export const RemixUiTerminal = (props: RemixUiTerminalProps) => { showTableHash={showTableHash} txDetails={txDetails} modal={modal} + provider={x.provider} />}
) @@ -517,6 +528,7 @@ export const RemixUiTerminal = (props: RemixUiTerminalProps) => { showTableHash = { showTableHash } txDetails = { txDetails } modal={modal} + provider={x.provider} />) }
)