diff --git a/public/media/wallpapers/Wallpaper5.png b/public/media/wallpapers/Wallpaper5.png new file mode 100644 index 0000000..8698e9d Binary files /dev/null and b/public/media/wallpapers/Wallpaper5.png differ diff --git a/public/media/wallpapers/Wallpaper6.png b/public/media/wallpapers/Wallpaper6.png new file mode 100644 index 0000000..3600e81 Binary files /dev/null and b/public/media/wallpapers/Wallpaper6.png differ diff --git a/src/components/applications/settings/Settings.jsx b/src/components/applications/settings/Settings.jsx index bee9d92..6242c16 100644 --- a/src/components/applications/settings/Settings.jsx +++ b/src/components/applications/settings/Settings.jsx @@ -24,7 +24,7 @@ function AppearanceTab({ virtualRoot, settingsManager }) { const onChange = (event) => { const value = event.target.value; settings.set("wallpaper", value); - } + }; return (
diff --git a/src/features/virtual-drive/virtual-base.js b/src/features/virtual-drive/virtual-base.js index 0e02da5..3344ae0 100644 --- a/src/features/virtual-drive/virtual-base.js +++ b/src/features/virtual-drive/virtual-base.js @@ -30,6 +30,9 @@ export class VirtualBase extends EventEmitter { * @returns {ThisType} */ setAlias(alias) { + if (this.alias === alias) + return; + this.alias = alias; this.getRoot().addShortcut(alias, this); this.getRoot().saveData(); @@ -41,6 +44,9 @@ export class VirtualBase extends EventEmitter { * @returns {VirtualBase} */ setParent(parent) { + if (this.parent === parent) + return; + this.parent = parent; this.getRoot().saveData(); return this; @@ -52,9 +58,7 @@ export class VirtualBase extends EventEmitter { parent.getRoot().saveData(); } - open() { - - } + open() {} get path() { return this.alias ?? this.absolutePath; diff --git a/src/features/virtual-drive/virtual-file.js b/src/features/virtual-drive/virtual-file.js index 9b8cfa6..1409057 100644 --- a/src/features/virtual-drive/virtual-file.js +++ b/src/features/virtual-drive/virtual-file.js @@ -35,6 +35,9 @@ export class VirtualFile extends VirtualBase { * @returns {VirtualFile} */ setSource(source) { + if (this.source === source) + return; + this.source = source; this.content = null; @@ -50,6 +53,9 @@ export class VirtualFile extends VirtualBase { * @returns {VirtualFile} */ setContent(content) { + if (this.content === content) + return; + this.content = content; this.source = null; diff --git a/src/features/virtual-drive/virtual-folder.js b/src/features/virtual-drive/virtual-folder.js index aef1af0..80c9fd8 100644 --- a/src/features/virtual-drive/virtual-folder.js +++ b/src/features/virtual-drive/virtual-folder.js @@ -97,9 +97,12 @@ export class VirtualFolder extends VirtualBase { * @returns {VirtualFolder} */ createFile(name, extension, callback) { - const newFile = new VirtualFile(name, extension); - this.files.push(newFile); - newFile.parent = this; + let newFile = this.findFile(name, extension); + if (newFile == null) { + newFile = new VirtualFile(name, extension); + this.files.push(newFile); + newFile.parent = this; + } callback?.(newFile); this.getRoot().saveData(); return this; @@ -132,9 +135,12 @@ export class VirtualFolder extends VirtualBase { * @param {createFolderCallback} callback */ createFolder(name, callback) { - const newFolder = new VirtualFolder(name); - this.subFolders.push(newFolder); - newFolder.parent = this; + let newFolder = this.findSubFolder(name); + if (newFolder == null) { + newFolder = new VirtualFolder(name); + this.subFolders.push(newFolder); + newFolder.parent = this; + } callback?.(newFolder); this.getRoot().saveData(); return this; diff --git a/src/features/virtual-drive/virtual-root.js b/src/features/virtual-drive/virtual-root.js index 88fbbbc..3515510 100644 --- a/src/features/virtual-drive/virtual-root.js +++ b/src/features/virtual-drive/virtual-root.js @@ -1,8 +1,9 @@ import { StorageManager } from "../storage/storage.js"; - import { VirtualFile } from "./virtual-file.js"; import { VirtualFolder } from "./virtual-folder.js"; +export const WALLPAPER_COUNT = 6; + /** * A virtual folder that serves as the root folder */ @@ -49,15 +50,11 @@ export class VirtualRoot extends VirtualFolder { }); }) .createFolder("Images", (folder) => { - folder.createFile("Wallpaper1", "png", (file) => { - file.setSource("/media/wallpapers/Wallpaper1.png"); - }).createFile("Wallpaper2", "png", (file) => { - file.setSource("/media/wallpapers/Wallpaper2.png"); - }).createFile("Wallpaper3", "png", (file) => { - file.setSource("/media/wallpapers/Wallpaper3.png"); - }).createFile("Wallpaper4", "png", (file) => { - file.setSource("/media/wallpapers/Wallpaper4.png"); - }); + for (let i = 0; i < WALLPAPER_COUNT; i++) { + folder.createFile(`Wallpaper${i + 1}`, "png", (file) => { + file.setSource(`/media/wallpapers/Wallpaper${i + 1}.png`); + }); + } }) .createFolder("Documents", (folder) => { folder.createFile("text", "txt", (file) => { @@ -93,7 +90,7 @@ export class VirtualRoot extends VirtualFolder { loadData() { let data = StorageManager.load("data"); if (data == null) - return this.loadDefaultData(); + return; let object; try { @@ -102,7 +99,7 @@ export class VirtualRoot extends VirtualFolder { console.error(error); } if (object == null) - return this.loadDefaultData(); + return; const shortcuts = {...object.scs}; @@ -163,6 +160,7 @@ export class VirtualRoot extends VirtualFolder { init() { this.initiated = false; this.setAlias("/"); + this.loadDefaultData(); this.loadData(); this.initiated = true; return this;