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;