155 lines
No EOL
3.3 KiB
JavaScript
155 lines
No EOL
3.3 KiB
JavaScript
import { APPS } from "../../constants/applications.js";
|
|
import AppsManager from "../applications/applications.js";
|
|
import { VirtualFolder } from "./virtualFolder.js";
|
|
|
|
/**
|
|
* A link that points to a virtual folder
|
|
*/
|
|
export class VirtualFolderLink extends VirtualFolder {
|
|
/**
|
|
* @param {string} name
|
|
* @param {VirtualFolder} linkedFolder
|
|
*/
|
|
constructor(name, linkedFolder) {
|
|
super(name);
|
|
this.linkedFolder = linkedFolder;
|
|
}
|
|
|
|
/**
|
|
* @param {VirtualFolder} folder
|
|
* @returns {VirtualFolderLink}
|
|
*/
|
|
setLinkedFolder(folder) {
|
|
this.linkedFolder = folder;
|
|
|
|
if (folder) {
|
|
this.linkedPath = folder.path;
|
|
this.type = folder.type;
|
|
}
|
|
|
|
return this;
|
|
}
|
|
|
|
/**
|
|
* @param {string} path
|
|
* @returns {VirtualFolderLink}
|
|
*/
|
|
setLinkedPath(path) {
|
|
if (this.linkedFolder && this.linkedFolder.path === path)
|
|
return;
|
|
|
|
const target = this.navigate(path);
|
|
|
|
if (target instanceof VirtualFolder) {
|
|
this.setLinkedFolder(target);
|
|
} else {
|
|
this.linkedFolder = null;
|
|
}
|
|
|
|
return this;
|
|
}
|
|
|
|
/**
|
|
* @returns {boolean}
|
|
*/
|
|
isValid() {
|
|
if (!this.linkedPath)
|
|
return false;
|
|
|
|
this.setLinkedPath(this.linkedPath);
|
|
|
|
return (this.linkedFolder != null);
|
|
}
|
|
|
|
/**
|
|
* @returns {string}
|
|
*/
|
|
getIconUrl() {
|
|
if (this.iconUrl != null)
|
|
return this.iconUrl;
|
|
|
|
return AppsManager.getAppIconUrl(APPS.FILE_EXPLORER, "folder-link");
|
|
}
|
|
|
|
/**
|
|
* @returns {object | null}
|
|
*/
|
|
toJSON() {
|
|
if (this.linkedPath == null)
|
|
return;
|
|
|
|
const object = {
|
|
nam: this.name,
|
|
lnk: this.linkedPath
|
|
};
|
|
|
|
return object;
|
|
}
|
|
|
|
// Point certain methods to linked folder
|
|
|
|
/** @type {VirtualFolder["setAlias"]} */
|
|
setAlias(...args) {
|
|
if (this.isValid()) return this.linkedFolder.setAlias(...args);
|
|
}
|
|
|
|
/** @type {VirtualFolder["hasFile"]} */
|
|
hasFile(...args) {
|
|
if (this.isValid()) return this.linkedFolder.hasFile(...args);
|
|
}
|
|
|
|
/** @type {VirtualFolder["hasFolder"]} */
|
|
hasFolder(...args) {
|
|
if (this.isValid()) return this.linkedFolder.hasFolder(...args);
|
|
}
|
|
|
|
/** @type {VirtualFolder["findFile"]} */
|
|
findFile(...args) {
|
|
if (this.isValid()) return this.linkedFolder.findFile(...args);
|
|
}
|
|
|
|
/** @type {VirtualFolder["findSubFolder"]} */
|
|
findSubFolder(...args) {
|
|
if (this.isValid()) return this.linkedFolder.findSubFolder(...args);
|
|
}
|
|
|
|
/** @type {VirtualFolder["createFile"]} */
|
|
createFile(...args) {
|
|
if (this.isValid()) return this.linkedFolder.createFile(...args);
|
|
}
|
|
|
|
/** @type {VirtualFolder["createFile"]} */
|
|
createFiles(...args) {
|
|
if (this.isValid()) return this.linkedFolder.createFiles(...args);
|
|
}
|
|
|
|
/** @type {VirtualFolder["createFolder"]} */
|
|
createFolder(...args) {
|
|
if (this.isValid()) return this.linkedFolder.createFolder(...args);
|
|
}
|
|
|
|
/** @type {VirtualFolder["createFolders"]} */
|
|
createFolders(...args) {
|
|
if (this.isValid()) return this.linkedFolder.createFolders(...args);
|
|
}
|
|
|
|
/** @type {VirtualFolder["getFiles"]} */
|
|
getFiles(...args) {
|
|
if (this.isValid()) return this.linkedFolder.getFiles(...args);
|
|
}
|
|
|
|
/** @type {VirtualFolder["getSubFolders"]} */
|
|
getSubFolders(...args) {
|
|
if (this.isValid()) return this.linkedFolder.getSubFolders(...args);
|
|
}
|
|
|
|
/** @type {VirtualFolder["open"]} */
|
|
open(...args) {
|
|
if (this.isValid()) return this.linkedFolder.open(...args);
|
|
}
|
|
|
|
/** @type {VirtualFolder["getItemCount"]} */
|
|
getItemCount(...args) {
|
|
if (this.isValid()) return this.linkedFolder.getItemCount(...args);
|
|
}
|
|
} |