From fd9819d69f294efeaf8bb9b35bc2e43ecceec2cd Mon Sep 17 00:00:00 2001 From: lianahus Date: Wed, 30 Nov 2022 10:09:58 +0100 Subject: [PATCH] fixing readonly access with remixd --- apps/remix-ide/src/app/editor/editor.js | 10 +++++----- apps/remix-ide/src/app/files/fileManager.ts | 4 +++- libs/remix-ui/editor/src/lib/remix-ui-editor.tsx | 3 +-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/apps/remix-ide/src/app/editor/editor.js b/apps/remix-ide/src/app/editor/editor.js index 4876e0618f..4183f2ec3a 100644 --- a/apps/remix-ide/src/app/editor/editor.js +++ b/apps/remix-ide/src/app/editor/editor.js @@ -220,7 +220,7 @@ class Editor extends Plugin { if (pathExists) { contentDep = await readFile(pathDep) if (contentDep !== '') { - this.emit('addModel', contentDep, 'typescript', pathDep, false) + this.emit('addModel', contentDep, 'typescript', pathDep, this.readOnlySessions[path]) } } else { console.log("The file ", pathDep, " can't be found.") @@ -241,7 +241,7 @@ class Editor extends Plugin { async _createSession (path, content, mode) { if (!this.activated) return - this.emit('addModel', content, mode, path, false) + this.emit('addModel', content, mode, path, this.readOnlySessions[path]) return { path, language: mode, @@ -266,7 +266,7 @@ class Editor extends Plugin { } addModel(path, content) { - this.emit('addModel', content, this._getMode(path), path, false) + this.emit('addModel', content, this._getMode(path), path, this.readOnlySessions[path]) } /** @@ -301,9 +301,9 @@ class Editor extends Plugin { - URL not prepended with the file explorer. We assume (as it is in the whole app, that this is a "browser" URL */ if (!this.sessions[path]) { + this.readOnlySessions[path] = false const session = await this._createSession(path, content, this._getMode(path)) this.sessions[path] = session - this.readOnlySessions[path] = false } else if (this.sessions[path].getValue() !== content) { this.sessions[path].setValue(content) } @@ -317,9 +317,9 @@ class Editor extends Plugin { */ async openReadOnly (path, content) { if (!this.sessions[path]) { + this.readOnlySessions[path] = true const session = await this._createSession(path, content, this._getMode(path)) this.sessions[path] = session - this.readOnlySessions[path] = true } this._switchSession(path) } diff --git a/apps/remix-ide/src/app/files/fileManager.ts b/apps/remix-ide/src/app/files/fileManager.ts index d6f5fd9e4b..de661ec0af 100644 --- a/apps/remix-ide/src/app/files/fileManager.ts +++ b/apps/remix-ide/src/app/files/fileManager.ts @@ -19,7 +19,9 @@ const profile = { icon: 'assets/img/fileManager.webp', permission: true, version: packageJson.version, - methods: ['closeAllFiles', 'closeFile', 'file', 'exists', 'open', 'writeFile', 'readFile', 'copyFile', 'copyDir', 'rename', 'mkdir', 'readdir', 'dirList', 'fileList', 'remove', 'getCurrentFile', 'getFile', 'getFolder', 'setFile', 'switchFile', 'refresh', 'getProviderOf', 'getProviderByName', 'getPathFromUrl', 'getUrlFromPath', 'saveCurrentFile', 'setBatchFiles', 'isGitRepo'], + methods: ['closeAllFiles', 'closeFile', 'file', 'exists', 'open', 'writeFile', 'readFile', 'copyFile', 'copyDir', 'rename', 'mkdir', + 'readdir', 'dirList', 'fileList', 'remove', 'getCurrentFile', 'getFile', 'getFolder', 'setFile', 'switchFile', 'refresh', + 'getProviderOf', 'getProviderByName', 'getPathFromUrl', 'getUrlFromPath', 'saveCurrentFile', 'setBatchFiles', 'isGitRepo'], kind: 'file-system' } const errorMsg = { diff --git a/libs/remix-ui/editor/src/lib/remix-ui-editor.tsx b/libs/remix-ui/editor/src/lib/remix-ui-editor.tsx index b91194de2c..46428d3c83 100644 --- a/libs/remix-ui/editor/src/lib/remix-ui-editor.tsx +++ b/libs/remix-ui/editor/src/lib/remix-ui-editor.tsx @@ -671,7 +671,6 @@ export const EditorUI = (props: EditorUIProps) => { monacoRef.current.languages.registerHoverProvider('remix-solidity', new RemixHoverProvider(props, monaco)) monacoRef.current.languages.registerCompletionItemProvider('remix-solidity', new RemixCompletionProvider(props, monaco)) - loadTypes(monacoRef.current) } @@ -683,7 +682,7 @@ export const EditorUI = (props: EditorUIProps) => { language={editorModelsState[props.currentFile] ? editorModelsState[props.currentFile].language : 'text'} onMount={handleEditorDidMount} beforeMount={handleEditorWillMount} - options={{ glyphMargin: true, readOnly: (!editorRef.current || !props.currentFile) }} + options={{ glyphMargin: true, readOnly: ((!editorRef.current || !props.currentFile) && editorModelsState[props.currentFile]?.readOnly) }} defaultValue={defaultEditorValue} />