fixing readonly access with remixd

pull/3174/head
lianahus 2 years ago
parent e2b7fbdc05
commit fd9819d69f
  1. 10
      apps/remix-ide/src/app/editor/editor.js
  2. 4
      apps/remix-ide/src/app/files/fileManager.ts
  3. 3
      libs/remix-ui/editor/src/lib/remix-ui-editor.tsx

@ -220,7 +220,7 @@ class Editor extends Plugin {
if (pathExists) { if (pathExists) {
contentDep = await readFile(pathDep) contentDep = await readFile(pathDep)
if (contentDep !== '') { if (contentDep !== '') {
this.emit('addModel', contentDep, 'typescript', pathDep, false) this.emit('addModel', contentDep, 'typescript', pathDep, this.readOnlySessions[path])
} }
} else { } else {
console.log("The file ", pathDep, " can't be found.") console.log("The file ", pathDep, " can't be found.")
@ -241,7 +241,7 @@ class Editor extends Plugin {
async _createSession (path, content, mode) { async _createSession (path, content, mode) {
if (!this.activated) return if (!this.activated) return
this.emit('addModel', content, mode, path, false) this.emit('addModel', content, mode, path, this.readOnlySessions[path])
return { return {
path, path,
language: mode, language: mode,
@ -266,7 +266,7 @@ class Editor extends Plugin {
} }
addModel(path, content) { 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 - 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]) { if (!this.sessions[path]) {
this.readOnlySessions[path] = false
const session = await this._createSession(path, content, this._getMode(path)) const session = await this._createSession(path, content, this._getMode(path))
this.sessions[path] = session this.sessions[path] = session
this.readOnlySessions[path] = false
} else if (this.sessions[path].getValue() !== content) { } else if (this.sessions[path].getValue() !== content) {
this.sessions[path].setValue(content) this.sessions[path].setValue(content)
} }
@ -317,9 +317,9 @@ class Editor extends Plugin {
*/ */
async openReadOnly (path, content) { async openReadOnly (path, content) {
if (!this.sessions[path]) { if (!this.sessions[path]) {
this.readOnlySessions[path] = true
const session = await this._createSession(path, content, this._getMode(path)) const session = await this._createSession(path, content, this._getMode(path))
this.sessions[path] = session this.sessions[path] = session
this.readOnlySessions[path] = true
} }
this._switchSession(path) this._switchSession(path)
} }

@ -19,7 +19,9 @@ const profile = {
icon: 'assets/img/fileManager.webp', icon: 'assets/img/fileManager.webp',
permission: true, permission: true,
version: packageJson.version, 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' kind: 'file-system'
} }
const errorMsg = { const errorMsg = {

@ -671,7 +671,6 @@ export const EditorUI = (props: EditorUIProps) => {
monacoRef.current.languages.registerHoverProvider('remix-solidity', new RemixHoverProvider(props, monaco)) monacoRef.current.languages.registerHoverProvider('remix-solidity', new RemixHoverProvider(props, monaco))
monacoRef.current.languages.registerCompletionItemProvider('remix-solidity', new RemixCompletionProvider(props, monaco)) monacoRef.current.languages.registerCompletionItemProvider('remix-solidity', new RemixCompletionProvider(props, monaco))
loadTypes(monacoRef.current) loadTypes(monacoRef.current)
} }
@ -683,7 +682,7 @@ export const EditorUI = (props: EditorUIProps) => {
language={editorModelsState[props.currentFile] ? editorModelsState[props.currentFile].language : 'text'} language={editorModelsState[props.currentFile] ? editorModelsState[props.currentFile].language : 'text'}
onMount={handleEditorDidMount} onMount={handleEditorDidMount}
beforeMount={handleEditorWillMount} beforeMount={handleEditorWillMount}
options={{ glyphMargin: true, readOnly: (!editorRef.current || !props.currentFile) }} options={{ glyphMargin: true, readOnly: ((!editorRef.current || !props.currentFile) && editorModelsState[props.currentFile]?.readOnly) }}
defaultValue={defaultEditorValue} defaultValue={defaultEditorValue}
/> />

Loading…
Cancel
Save