|
|
|
@ -22,7 +22,7 @@ const profile = { |
|
|
|
|
icon: 'assets/img/fileManager.webp', |
|
|
|
|
permission: true, |
|
|
|
|
version: packageJson.version, |
|
|
|
|
methods: ['file', 'exists', 'open', 'writeFile', 'readFile', 'copyFile', 'copyDir', 'rename', 'mkdir', 'readdir', 'remove', 'getCurrentFile', 'getFile', 'getFolder', 'setFile', 'switchFile', 'refresh', 'getProviderOf', 'getProviderByName'], |
|
|
|
|
methods: ['file', 'exists', 'open', 'writeFile', 'readFile', 'copyFile', 'copyDir', 'rename', 'mkdir', 'readdir', 'remove', 'getCurrentFile', 'getFile', 'getFolder', 'setFile', 'switchFile', 'refresh', 'getProviderOf', 'getProviderByName', 'getPathFromUrl', 'getUrlFromPath'], |
|
|
|
|
kind: 'file-system' |
|
|
|
|
} |
|
|
|
|
const errorMsg = { |
|
|
|
@ -171,7 +171,7 @@ class FileManager extends Plugin { |
|
|
|
|
try { |
|
|
|
|
path = this.limitPluginScope(path) |
|
|
|
|
try { |
|
|
|
|
path = this._resolveFromExternalPath(path).file || path |
|
|
|
|
path = this.getPathFromUrl(path).file |
|
|
|
|
} catch (e) { |
|
|
|
|
return console.error(e) |
|
|
|
|
} |
|
|
|
@ -544,13 +544,13 @@ class FileManager extends Plugin { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Try to resolve the given file path. |
|
|
|
|
* Try to resolve the given file path (the actual path in the file system) |
|
|
|
|
* e.g if it's specified a github link, npm library, or any external content,
|
|
|
|
|
* it returns the actual path where the content can be find. |
|
|
|
|
* @param {string} file path we are trying to resolve |
|
|
|
|
* it returns the actual path where the content can be found. |
|
|
|
|
* @param {string} file url we are trying to resolve |
|
|
|
|
* @returns {{ string, provider }} file path resolved and its provider. |
|
|
|
|
*/ |
|
|
|
|
_resolveFromExternalPath (file) { |
|
|
|
|
getPathFromUrl (file) { |
|
|
|
|
const provider = this.fileProviderOf(file) |
|
|
|
|
if (!provider) throw new Error(`no provider for ${file}`) |
|
|
|
|
return {
|
|
|
|
@ -559,6 +559,20 @@ class FileManager extends Plugin { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Try to resolve the given file URl. opposite of getPathFromUrl *
|
|
|
|
|
* @param {string} file path we are trying to resolve |
|
|
|
|
* @returns {{ string, provider }} file url resolved and its provider. |
|
|
|
|
*/ |
|
|
|
|
getUrlFromPath (file) { |
|
|
|
|
const provider = this.fileProviderOf(file) |
|
|
|
|
if (!provider) throw new Error(`no provider for ${file}`) |
|
|
|
|
return {
|
|
|
|
|
file: provider.getUrlFromPath(file) || file, // in case an external URL is given as input, we resolve it to the right internal path
|
|
|
|
|
provider |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
removeTabsOf (provider) { |
|
|
|
|
for (var tab in this.openedFiles) { |
|
|
|
|
if (this.fileProviderOf(tab).type === provider.type) { |
|
|
|
@ -592,7 +606,7 @@ class FileManager extends Plugin { |
|
|
|
|
this.saveCurrentFile() |
|
|
|
|
let resolved |
|
|
|
|
try { |
|
|
|
|
resolved = this._resolveFromExternalPath(file) |
|
|
|
|
resolved = this.getPathFromUrl(file) |
|
|
|
|
file = resolved.file |
|
|
|
|
} catch (e) { |
|
|
|
|
return console.error(e) |
|
|
|
|