From 30e59ee03dbda8d24c00490e42d743143cc8f5da Mon Sep 17 00:00:00 2001 From: filip mertens Date: Sun, 13 Feb 2022 15:15:53 +0100 Subject: [PATCH] compile settings landing file --- apps/remix-ide/src/app.js | 1 + apps/remix-ide/src/app/panels/file-panel.js | 12 +- apps/remix-ide/src/app/tabs/compile-tab.js | 8 +- apps/remix-ide/src/app/tabs/settings-tab.js | 69 ----------- apps/remix-ide/src/app/tabs/settings-tab.tsx | 114 ++++++++++++++++++ .../src/app/ui/landing-page/landing-page.js | 14 +-- 6 files changed, 122 insertions(+), 96 deletions(-) delete mode 100644 apps/remix-ide/src/app/tabs/settings-tab.js create mode 100644 apps/remix-ide/src/app/tabs/settings-tab.tsx diff --git a/apps/remix-ide/src/app.js b/apps/remix-ide/src/app.js index 25fc2e92b4..cb01462485 100644 --- a/apps/remix-ide/src/app.js +++ b/apps/remix-ide/src/app.js @@ -109,6 +109,7 @@ class AppComponent { !Registry.getInstance() .get('config') .api.exists('settings/matomo-analytics') + this.showMatamo = true this.walkthroughService = new WalkthroughService( appManager, this.showMatamo diff --git a/apps/remix-ide/src/app/panels/file-panel.js b/apps/remix-ide/src/app/panels/file-panel.js index 47e40a2f5f..75d8f0e7e3 100644 --- a/apps/remix-ide/src/app/panels/file-panel.js +++ b/apps/remix-ide/src/app/panels/file-panel.js @@ -58,18 +58,8 @@ module.exports = class Filepanel extends ViewPlugin { this.currentWorkspaceMetadata = {} } - onActivation () { - this.renderComponent() - } - render () { - return this.el - } - - renderComponent () { - ReactDOM.render( - - , this.el) + return
} /** diff --git a/apps/remix-ide/src/app/tabs/compile-tab.js b/apps/remix-ide/src/app/tabs/compile-tab.js index 4718b4dee6..a27abb5e64 100644 --- a/apps/remix-ide/src/app/tabs/compile-tab.js +++ b/apps/remix-ide/src/app/tabs/compile-tab.js @@ -42,9 +42,7 @@ class CompileTab extends CompilerApiMixin(ViewPlugin) { // implements ICompilerA } renderComponent () { - ReactDOM.render( - - , this.el) + console.log('rendering compile tab') } onCurrentFileChanged () { @@ -68,9 +66,7 @@ class CompileTab extends CompilerApiMixin(ViewPlugin) { // implements ICompilerA } render () { - this.renderComponent() - - return this.el + return
} async compileWithParameters (compilationTargets, settings) { diff --git a/apps/remix-ide/src/app/tabs/settings-tab.js b/apps/remix-ide/src/app/tabs/settings-tab.js deleted file mode 100644 index c6df87d901..0000000000 --- a/apps/remix-ide/src/app/tabs/settings-tab.js +++ /dev/null @@ -1,69 +0,0 @@ -import React from 'react' // eslint-disable-line -import { ViewPlugin } from '@remixproject/engine-web' -import ReactDOM from 'react-dom' -import * as packageJson from '../../../../../package.json' -import { RemixUiSettings } from '@remix-ui/settings' //eslint-disable-line -import Registry from '../state/registry' - -const profile = { - name: 'settings', - displayName: 'Settings', - methods: ['get'], - events: [], - icon: 'assets/img/settings.webp', - description: 'Remix-IDE settings', - kind: 'settings', - location: 'sidePanel', - documentation: 'https://remix-ide.readthedocs.io/en/latest/settings.html', - version: packageJson.version, - permission: true -} - -module.exports = class SettingsTab extends ViewPlugin { - constructor (config, editor) { - super(profile) - this.config = config - this.editor = editor - this._deps = { - themeModule: Registry.getInstance().get('themeModule').api - } - this.element = document.createElement('div') - this.element.setAttribute('id', 'settingsTab') - this.useMatomoAnalytics = null - } - - render() { - return ( -
- -
- ); - } - - renderComponent () { - ReactDOM.render( - , - this.element - ) - } - - get (key) { - return this.config.get(key) - } - - updateMatomoAnalyticsChoice (isChecked) { - this.config.set('settings/matomo-analytics', isChecked) - this.useMatomoAnalytics = isChecked - this.renderComponent() - } -} diff --git a/apps/remix-ide/src/app/tabs/settings-tab.tsx b/apps/remix-ide/src/app/tabs/settings-tab.tsx new file mode 100644 index 0000000000..442e3e1256 --- /dev/null +++ b/apps/remix-ide/src/app/tabs/settings-tab.tsx @@ -0,0 +1,114 @@ +import React, { useEffect, useState } from 'react' // eslint-disable-line +import { ViewPlugin } from '@remixproject/engine-web' +import ReactDOM from 'react-dom' +import * as packageJson from '../../../../../package.json' +import { RemixUiSettings } from '@remix-ui/settings' //eslint-disable-line +import Registry from '../state/registry' + +const profile = { + name: 'settings', + displayName: 'Settings', + methods: ['get'], + events: [], + icon: 'assets/img/settings.webp', + description: 'Remix-IDE settings', + kind: 'settings', + location: 'sidePanel', + documentation: 'https://remix-ide.readthedocs.io/en/latest/settings.html', + version: packageJson.version, + permission: true +} + +module.exports = class SettingsTab extends ViewPlugin { + config: any = {} + editor: any + private _deps: { + themeModule: any // eslint-disable-line + + } + element: HTMLDivElement + public useMatomoAnalytics: any + dispatch: React.Dispatch = () => {} + constructor (config, editor) { + super(profile) + this.config = config + this.editor = editor + this._deps = { + themeModule: Registry.getInstance().get('themeModule').api + } + this.element = document.createElement('div') + this.element.setAttribute('id', 'settingsTab') + this.useMatomoAnalytics = null + } + + setDispatch (dispatch: React.Dispatch) { + this.dispatch = dispatch + this.renderComponent() + } + + render() { + + return ( +
+ +
+ ); + } + + updateComponent(state: any){ + console.log('updateComponent', state) + return + } + + renderComponent () { + console.log('dispatching', this.useMatomoAnalytics, this.dispatch) + this.dispatch(this) + } + + get (key) { + return this.config.get(key) + } + + updateMatomoAnalyticsChoice (isChecked) { + console.log('update matomo') + this.config.set('settings/matomo-analytics', isChecked) + this.useMatomoAnalytics = isChecked + this.dispatch({ + ...this + }) + } +} + + +export interface IViewPluginUI { + plugin: any +} + +export const ViewPluginUI = (props: IViewPluginUI) => { + + const [state, setState] = useState(null) + + useEffect(() => { + console.log(props.plugin) + if(props.plugin.setDispatch){ + props.plugin.setDispatch(setState) + } + }, []) + + useEffect(() => { + console.log(state) + }, [state]) + + return ( + <>{state? +
{props.plugin.updateComponent(state)}
+ :<> + } + ) +} \ No newline at end of file diff --git a/apps/remix-ide/src/app/ui/landing-page/landing-page.js b/apps/remix-ide/src/app/ui/landing-page/landing-page.js index b05271dc96..efdb5031fb 100644 --- a/apps/remix-ide/src/app/ui/landing-page/landing-page.js +++ b/apps/remix-ide/src/app/ui/landing-page/landing-page.js @@ -31,15 +31,9 @@ export class LandingPage extends ViewPlugin { } render () { - this.renderComponent() - return this.el - } - - renderComponent () { - ReactDOM.render( - - , this.el) + return
} + }