From bf11a4c3aaafb50a76325e740a2f021981d3bfc0 Mon Sep 17 00:00:00 2001 From: filip mertens Date: Sun, 17 Jul 2022 19:00:37 +0200 Subject: [PATCH] settings --- .../parser/services/code-parser-compiler.ts | 5 ++- .../services/code-parser-gas-service.ts | 5 +++ .../remix-ui/editor/src/lib/actions/editor.ts | 1 - .../src/lib/providers/completionProvider.ts | 2 ++ libs/remix-ui/settings/src/lib/constants.ts | 2 ++ .../settings/src/lib/remix-ui-settings.tsx | 33 +++++++++++++++++-- .../settings/src/lib/settingsAction.ts | 10 ++++++ .../settings/src/lib/settingsReducer.ts | 32 ++++++++++++++++++ 8 files changed, 85 insertions(+), 5 deletions(-) diff --git a/apps/remix-ide/src/app/plugins/parser/services/code-parser-compiler.ts b/apps/remix-ide/src/app/plugins/parser/services/code-parser-compiler.ts index b096138b57..3636e4ba3c 100644 --- a/apps/remix-ide/src/app/plugins/parser/services/code-parser-compiler.ts +++ b/apps/remix-ide/src/app/plugins/parser/services/code-parser-compiler.ts @@ -39,7 +39,8 @@ export default class CodeParserCompiler { allErrors.push({ error, lineColumn }) } - await this.plugin.call('editor', 'addErrorMarker', allErrors) + const displayErrors = await this.plugin.call('config', 'getAppParameter', 'display-errors') + if(displayErrors) await this.plugin.call('editor', 'addErrorMarker', allErrors) this.addDecorators(allErrors, sources) } else { await this.plugin.call('editor', 'clearErrorMarkers', result.getSourceCode().sources) @@ -115,6 +116,8 @@ export default class CodeParserCompiler { } async addDecorators(allErrors: any[], sources: any) { + const displayErrors = await this.plugin.call('config', 'getAppParameter', 'display-errors') + if(!displayErrors) return const errorsPerFiles = {} for (const error of allErrors) { if (!errorsPerFiles[error.error.sourceLocation.file]) { diff --git a/apps/remix-ide/src/app/plugins/parser/services/code-parser-gas-service.ts b/apps/remix-ide/src/app/plugins/parser/services/code-parser-gas-service.ts index 94568b1489..62493c6340 100644 --- a/apps/remix-ide/src/app/plugins/parser/services/code-parser-gas-service.ts +++ b/apps/remix-ide/src/app/plugins/parser/services/code-parser-gas-service.ts @@ -34,6 +34,11 @@ export default class CodeParserGasService { async showGasEstimates() { + const showGasConfig = await this.plugin.call('config', 'getAppParameter', 'show-gas') + if(!showGasConfig) { + await this.plugin.call('editor', 'discardLineTexts') + return + } this.plugin.currentFile = await this.plugin.call('fileManager', 'file') this.plugin.nodeIndex.nodesPerFile[this.plugin.currentFile] = await this.plugin._extractFileNodes(this.plugin.currentFile, this.plugin.compilerAbstract) diff --git a/libs/remix-ui/editor/src/lib/actions/editor.ts b/libs/remix-ui/editor/src/lib/actions/editor.ts index 2901488e4e..231aa09a82 100644 --- a/libs/remix-ui/editor/src/lib/actions/editor.ts +++ b/libs/remix-ui/editor/src/lib/actions/editor.ts @@ -28,7 +28,6 @@ export const reducerActions = (models = initialState, action: Action) => { } models[uri].model = model - console.log('ADD_MODEL', models[uri].model) model.onDidChangeContent(() => action.payload.events.onDidChangeContent(uri)) return models } diff --git a/libs/remix-ui/editor/src/lib/providers/completionProvider.ts b/libs/remix-ui/editor/src/lib/providers/completionProvider.ts index c197ca37b9..6021e22ae5 100644 --- a/libs/remix-ui/editor/src/lib/providers/completionProvider.ts +++ b/libs/remix-ui/editor/src/lib/providers/completionProvider.ts @@ -19,6 +19,8 @@ export class RemixCompletionProvider implements languages.CompletionItemProvider triggerCharacters = ['.', ''] async provideCompletionItems(model: editor.ITextModel, position: Position, context: monaco.languages.CompletionContext): Promise { + const completionSettings = await this.props.plugin.call('config', 'getAppParameter', 'settings/auto-completion') + if(!completionSettings) return const word = model.getWordUntilPosition(position); const range = { startLineNumber: position.lineNumber, diff --git a/libs/remix-ui/settings/src/lib/constants.ts b/libs/remix-ui/settings/src/lib/constants.ts index 1e7c02d1d7..b2110dd499 100644 --- a/libs/remix-ui/settings/src/lib/constants.ts +++ b/libs/remix-ui/settings/src/lib/constants.ts @@ -15,6 +15,8 @@ export const ethereunVMText = 'Always use Remix VM at load' export const wordWrapText = 'Word wrap in editor' export const enablePersonalModeText = ' Enable Personal Mode for Remix Provider. Transaction sent over Web3 will use the web3.personal API.\n' export const useAutoCompleteText = 'Enable code completion in editor.' +export const useShowGasInEditorText = 'Display gas estimates in editor.' +export const displayErrorsText = 'Display errors in editor while typing.' export const matomoAnalytics = 'Enable Matomo Analytics. We do not collect personally identifiable information (PII). The info is used to improve the site’s UX & UI. See more about ' export const swarmSettingsTitle = 'Swarm Settings' export const swarmSettingsText = 'Swarm Settings' diff --git a/libs/remix-ui/settings/src/lib/remix-ui-settings.tsx b/libs/remix-ui/settings/src/lib/remix-ui-settings.tsx index 83212ddbba..3dab01f152 100644 --- a/libs/remix-ui/settings/src/lib/remix-ui-settings.tsx +++ b/libs/remix-ui/settings/src/lib/remix-ui-settings.tsx @@ -1,10 +1,10 @@ import React, { useState, useReducer, useEffect, useCallback } from 'react' // eslint-disable-line import { CopyToClipboard } from '@remix-ui/clipboard' // eslint-disable-line -import { enablePersonalModeText, ethereunVMText, labels, generateContractMetadataText, matomoAnalytics, textDark, textSecondary, warnText, wordWrapText, swarmSettingsTitle, ipfsSettingsText, useAutoCompleteText } from './constants' +import { enablePersonalModeText, ethereunVMText, labels, generateContractMetadataText, matomoAnalytics, textDark, textSecondary, warnText, wordWrapText, swarmSettingsTitle, ipfsSettingsText, useAutoCompleteText, useShowGasInEditorText, displayErrorsText } from './constants' import './remix-ui-settings.css' -import { ethereumVM, generateContractMetadat, personal, textWrapEventAction, useMatomoAnalytics, saveTokenToast, removeTokenToast, saveSwarmSettingsToast, saveIpfsSettingsToast, useAutoCompletion } from './settingsAction' +import { ethereumVM, generateContractMetadat, personal, textWrapEventAction, useMatomoAnalytics, saveTokenToast, removeTokenToast, saveSwarmSettingsToast, saveIpfsSettingsToast, useAutoCompletion, useShowGasInEditor, useDisplayErrors } from './settingsAction' import { initialState, toastInitialState, toastReducer, settingReducer } from './settingsReducer' import { Toaster } from '@remix-ui/toaster'// eslint-disable-line import { RemixUiThemeModule, ThemeModule} from '@remix-ui/theme-module' @@ -42,6 +42,12 @@ export const RemixUiSettings = (props: RemixUiSettingsProps) => { const useAutoComplete = props.config.get('settings/use-auto-complete') if (useAutoComplete === null || useAutoComplete === undefined) useAutoCompletion(props.config, true, dispatch) + + const displayErrors = props.config.get('settings/display-errors') + if (displayErrors === null || displayErrors === undefined) useDisplayErrors(props.config, true, dispatch) + + const useShowGas = props.config.get('settings/show-gas') + if (useShowGas === null || useShowGas === undefined) useShowGasInEditor(props.config, true, dispatch) } useEffect(() => initValue(), [resetState, props.config]) useEffect(() => initValue(), []) @@ -120,6 +126,14 @@ export const RemixUiSettings = (props: RemixUiSettingsProps) => { useAutoCompletion(props.config, event.target.checked, dispatch) } + const onchangeShowGasInEditor = event => { + useShowGasInEditor(props.config, event.target.checked, dispatch) + } + const onchangeDisplayErrors = event => { + useDisplayErrors(props.config, event.target.checked, dispatch) + } + + const getTextClass = (key) => { if (props.config.get(key)) { return textDark @@ -135,7 +149,8 @@ export const RemixUiSettings = (props: RemixUiSettingsProps) => { const isPersonalChecked = props.config.get('settings/personal-mode') || false const isMatomoChecked = props.config.get('settings/matomo-analytics') || false const isAutoCompleteChecked = props.config.get('settings/auto-completion') === null ? true:props.config.get('settings/auto-completion') - + const isShowGasInEditorChecked = props.config.get('settings/show-gas') === null ? true:props.config.get('settings/show-gas') + const displayErrorsChecked = props.config.get('settings/display-errors') === null ? true:props.config.get('settings/display-errors') return (
@@ -177,6 +192,18 @@ export const RemixUiSettings = (props: RemixUiSettingsProps) => { {useAutoCompleteText}
+
+ + +
+
+ + +