From ee3458d3806e66eb481560e7900574f2c8ebfc98 Mon Sep 17 00:00:00 2001 From: "davidzagi93@gmail.com" Date: Fri, 20 Aug 2021 12:32:08 +0100 Subject: [PATCH] implementing deployment failure in terminal --- .../src/tests/defaultLayout.test.ts | 1 + .../src/tests/libraryDeployment.test.ts | 1 + apps/remix-ide/src/app/panels/terminal.js | 7 ++++-- .../src/lib/actions/terminalAction.ts | 25 ++++++------------- .../src/lib/reducers/terminalReducer.ts | 7 ++++-- .../terminal/src/lib/remix-ui-terminal.tsx | 20 +++++++++------ 6 files changed, 33 insertions(+), 28 deletions(-) diff --git a/apps/remix-ide-e2e/src/tests/defaultLayout.test.ts b/apps/remix-ide-e2e/src/tests/defaultLayout.test.ts index 94bc20207d..239f55a448 100644 --- a/apps/remix-ide-e2e/src/tests/defaultLayout.test.ts +++ b/apps/remix-ide-e2e/src/tests/defaultLayout.test.ts @@ -50,6 +50,7 @@ module.exports = { 'Toggles Terminal': function (browser: NightwatchBrowser) { browser.waitForElementVisible('div[data-id="terminalContainer"]') + .pause(5000) .assert.visible('div[data-id="terminalContainerDisplay"]') .click('i[data-id="terminalToggleIcon"]') .checkElementStyle('div[data-id="terminalToggleMenu"]', 'height', '35px') diff --git a/apps/remix-ide-e2e/src/tests/libraryDeployment.test.ts b/apps/remix-ide-e2e/src/tests/libraryDeployment.test.ts index 0a759aa332..ec513b9831 100644 --- a/apps/remix-ide-e2e/src/tests/libraryDeployment.test.ts +++ b/apps/remix-ide-e2e/src/tests/libraryDeployment.test.ts @@ -77,6 +77,7 @@ function checkDeployShouldFail (browser: NightwatchBrowser, callback: VoidFuncti .clickLaunchIcon('udapp') .selectContract('test') // deploy lib .createContract('') + .pause(60000) .getText('div[class^="terminal"]', (value) => { console.log('value: ', value) }) diff --git a/apps/remix-ide/src/app/panels/terminal.js b/apps/remix-ide/src/app/panels/terminal.js index c595e952f3..638b97f5ed 100644 --- a/apps/remix-ide/src/app/panels/terminal.js +++ b/apps/remix-ide/src/app/panels/terminal.js @@ -88,6 +88,7 @@ class Terminal extends Plugin { this.call('menuicons', 'select', 'debugger') this.call('debugger', 'debug', hash) }) + this.logHtmlResponse = [] } onActivation () { @@ -102,8 +103,9 @@ class Terminal extends Plugin { } logHtml (html) { - var command = this.commands.html - if (typeof command === 'function') command(html) + // console.log({ html: html.innerText }) + this.logHtmlResponse.push(html.innerText) + this.renderComponent() } render () { @@ -138,6 +140,7 @@ class Terminal extends Plugin { commands = {this.commands} txListener = {this.txListener} eventsDecoder = {this.eventsDecoder} + logHtml = {this.logHtmlResponse} />, this.element ) diff --git a/libs/remix-ui/terminal/src/lib/actions/terminalAction.ts b/libs/remix-ui/terminal/src/lib/actions/terminalAction.ts index 190c411500..5d1023c34a 100644 --- a/libs/remix-ui/terminal/src/lib/actions/terminalAction.ts +++ b/libs/remix-ui/terminal/src/lib/actions/terminalAction.ts @@ -1,5 +1,6 @@ export const registerCommandAction = (name, command, activate, dispatch) => { + console.log(name, ' object key') const commands: any = {} const _commands: any = {} _commands[name] = command @@ -90,6 +91,8 @@ export const registerCommandAction = (name, command, activate, dispatch) => { console.log({ scopedCommands }) return scopedCommands } + + console.log('david test dispatch') } export const filterFnAction = (name, filterFn, dispatch) => { @@ -170,23 +173,8 @@ export const initListeningOnNetwork = (props, dispatch) => { // log(this, tx, null) }) props.txListener.event.register('newTransaction', (tx, receipt) => { + console.log('new Transaction now') log(props, tx, receipt, dispatch) - registerCommandAction('knownTransaction', function (args, cmds, append) { - var data = args[0] - console.log({ data }) - // let el - // if (data.tx.isCall) { - // console.log({ data }) - // // el = renderCall(this, data) - // } else { - // // el = renderKnownTransaction(this, data, blockchain) - // } - // this.seen[data.tx.hash] = el - // append(el) - }, { activate: true }, dispatch) - // const result = Object.assign([], tx) - // console.log({ result }) - // scriptRunnerDispatch({ type: 'knownTransaction', payload: { message: result } }) }) const log = async (props, tx, receipt, dispatch) => { @@ -214,9 +202,12 @@ export const initListeningOnNetwork = (props, dispatch) => { props.txListener.event.register('debuggingRequested', async (hash) => { // TODO should probably be in the run module - console.log({ hash }, 'register Call') if (!await props.options.appManager.isActive('debugger')) await props.options.appManager.activatePlugin('debugger') props.thisState.call('menuicons', 'select', 'debugger') props.thisState.call('debugger', 'debug', hash) }) + + props.thisState.on('udapp', 'logHtml', (log) => { + console.log({ log }, ' listen to logHTML call') + }) } diff --git a/libs/remix-ui/terminal/src/lib/reducers/terminalReducer.ts b/libs/remix-ui/terminal/src/lib/reducers/terminalReducer.ts index b949f4a272..332402b427 100644 --- a/libs/remix-ui/terminal/src/lib/reducers/terminalReducer.ts +++ b/libs/remix-ui/terminal/src/lib/reducers/terminalReducer.ts @@ -141,9 +141,12 @@ export const remixWelcomeTextReducer = (state, action) => { } export const registerScriptRunnerReducer = (state, action) => { - const result = Object.assign([], action.payload.message) - console.log({ result }) switch (action.type) { + case 'html': + return { + ...state, + journalBlocks: initialState.journalBlocks.push({ message: action.payload.message, style: 'text-log' }) + } case 'log': return { ...state, 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 885c03e41d..a186d0a4a4 100644 --- a/libs/remix-ui/terminal/src/lib/remix-ui-terminal.tsx +++ b/libs/remix-ui/terminal/src/lib/remix-ui-terminal.tsx @@ -44,7 +44,8 @@ export interface RemixUiTerminalProps { registry: any, commands: any, txListener: any, - eventsDecoder: any + eventsDecoder: any, + logHtml: any } export interface ClipboardEvent extends SyntheticEvent { @@ -102,6 +103,11 @@ export const RemixUiTerminal = (props: RemixUiTerminalProps) => { messagesEndRef.current.scrollIntoView({ behavior: 'smooth' }) } + useEffect(() => { + scriptRunnerDispatch({ type: 'html', payload: { message: props.logHtml } }) + }, [props.logHtml]) + + console.log({ logHtml: props.logHtml }) // events useEffect(() => { initListeningOnNetwork(props, scriptRunnerDispatch) @@ -109,7 +115,6 @@ export const RemixUiTerminal = (props: RemixUiTerminalProps) => { registerInfoScriptRunnerAction(props.thisState, 'info', newstate.commands, scriptRunnerDispatch) registerWarnScriptRunnerAction(props.thisState, 'warn', newstate.commands, scriptRunnerDispatch) registerErrorScriptRunnerAction(props.thisState, 'error', newstate.commands, scriptRunnerDispatch) - registerCommandAction('html', _blocksRenderer('html'), { activate: true }, dispatch) registerCommandAction('log', _blocksRenderer('log'), { activate: true }, dispatch) registerCommandAction('info', _blocksRenderer('info'), { activate: true }, dispatch) @@ -118,12 +123,13 @@ export const RemixUiTerminal = (props: RemixUiTerminalProps) => { registerCommandAction('script', function execute (args, scopedCommands, append) { var script = String(args[0]) + console.log({ script }, 'script') _shell(script, scopedCommands, function (error, output) { if (error) scriptRunnerDispatch({ type: 'error', payload: { message: error } }) if (output) scriptRunnerDispatch({ type: 'script', payload: { message: '5' } }) }) }, { activate: true }, dispatch) - }, [props.thisState.autoCompletePopup, autoCompletState.text]) + }, [props.thisState.autoCompletePopup, autoCompletState.text, props.logHtml]) useEffect(() => { scrollToBottom() @@ -870,15 +876,15 @@ export const RemixUiTerminal = (props: RemixUiTerminalProps) => { { handleAutoComplete() } -
-
+
{!clearConsole && } {newstate.journalBlocks && newstate.journalBlocks.map((x, index) => { if (x.name === 'emptyBlock') {