diff --git a/public/config/apps.xml b/public/config/apps.xml
index b4d4b3b..543604d 100644
--- a/public/config/apps.xml
+++ b/public/config/apps.xml
@@ -1,3 +1,3 @@
Invalid file format.
); if (file.source == null) diff --git a/src/config/apps/mediaViewer.config.js b/src/config/apps/mediaViewer.config.js new file mode 100644 index 0000000..ad76161 --- /dev/null +++ b/src/config/apps/mediaViewer.config.js @@ -0,0 +1,8 @@ +export const IMAGE_FORMATS = [ + "png", + "jpeg", + "svg", + "gif", + "webp", + "ico" +]; \ No newline at end of file diff --git a/src/features/apps/appsManager.js b/src/features/apps/appsManager.js index 0281ec7..b821624 100644 --- a/src/features/apps/appsManager.js +++ b/src/features/apps/appsManager.js @@ -9,6 +9,7 @@ import { Settings } from "../../components/apps/settings/Settings.jsx"; import Vector2 from "../math/vector2.js"; import { APPS } from "../../config/apps.config.js"; import { Browser } from "../../components/apps/browser/Browser.jsx"; +import { IMAGE_FORMATS } from "../../config/apps/mediaViewer.config.js"; export default class AppsManager { static APPS = [ @@ -62,14 +63,11 @@ export default class AppsManager { static getAppByFileExtension(fileExtension) { let app = null; - // eslint-disable-next-line default-case + if (IMAGE_FORMATS.includes(fileExtension)) + return this.getAppById(APPS.MEDIA_VIEWER); + switch (fileExtension) { - case "png": - app = this.getAppById(APPS.MEDIA_VIEWER); - break; - case "txt": - case "md": - case "xml": + default: app = this.getAppById(APPS.TEXT_EDITOR); break; } diff --git a/src/features/virtual-drive/file/virtualFile.js b/src/features/virtual-drive/file/virtualFile.js index 7b395f4..fbd35a1 100644 --- a/src/features/virtual-drive/file/virtualFile.js +++ b/src/features/virtual-drive/file/virtualFile.js @@ -1,4 +1,5 @@ import { APPS } from "../../../config/apps.config.js"; +import { IMAGE_FORMATS } from "../../../config/apps/mediaViewer.config.js"; import AppsManager from "../../apps/appsManager.js"; import WindowsManager from "../../windows/windowsManager.js"; import { VirtualBase } from "../virtualBase.js"; @@ -120,15 +121,21 @@ export class VirtualFile extends VirtualBase { let iconUrl = null; + if (IMAGE_FORMATS.includes(this.extension)) + return this.source; + switch (this.extension) { - case "png": - iconUrl = this.source; - break; case "txt": case "md": iconUrl = AppsManager.getAppIconUrl(APPS.FILE_EXPLORER, "file-text"); break; case "xml": + case "js": + case "json": + case "jsx": + case "css": + case "html": + case "yml": iconUrl = AppsManager.getAppIconUrl(APPS.FILE_EXPLORER, "file-code"); break; default: diff --git a/src/features/virtual-drive/root/defaultData.js b/src/features/virtual-drive/root/defaultData.js index c856d99..8a396b5 100644 --- a/src/features/virtual-drive/root/defaultData.js +++ b/src/features/virtual-drive/root/defaultData.js @@ -8,29 +8,6 @@ import { VirtualRoot } from "./virtualRoot.js"; * @param {VirtualRoot} virtualRoot */ export function loadDefaultData(virtualRoot) { - virtualRoot.createFolder("bin", (folder) => { - folder.createFiles([ - { name: "echo" }, - { name: "cd" }, - { name: "ls" }, - { name: "clear" }, - ]); - }); - - virtualRoot.createFolder("dev", (folder) => { - folder.createFiles([ - { name: "null" }, - { name: "zero" }, - { name: "random" }, - ]); - }); - - virtualRoot.createFolder("etc"); - - virtualRoot.createFolder("usr", (folder) => { - folder.createFolders(["bin", "sbin", "lib", "share"]); - }); - const linkedPaths = {}; virtualRoot.createFolder("home", (folder) => { @@ -98,22 +75,101 @@ export function loadDefaultData(virtualRoot) { }); }); - virtualRoot.createFolder("lib"); - virtualRoot.createFolder("sbin"); - virtualRoot.createFolder("tmp"); - virtualRoot.createFolder("var"); - virtualRoot.createFolder("boot"); - - virtualRoot.createFolder("proc", (folder) => { - folder.createFiles([ - { name: "cpuinfo" }, - { name: "meminfo" }, - ]); + virtualRoot.createFolder(".github", (folder) => { + folder.createFile("FUNDING", "yml", (file) => { + file.setSource("https://raw.githubusercontent.com/Prozilla/Prozilla-OS/main/.github/FUNDING.yml"); + }); }); - virtualRoot.createFolder("var"); - virtualRoot.createFolder("opt"); - virtualRoot.createFolder("media"); - virtualRoot.createFolder("mnt"); - virtualRoot.createFolder("srv"); + virtualRoot.createFolder(".vscode", (folder) => { + folder.createFile("settings", "json", (file) => { + file.setSource("https://raw.githubusercontent.com/Prozilla/Prozilla-OS/main/.vscode/settings.json"); + }); + }); + + virtualRoot.createFolder("docs", (folder) => { + folder.createFile("README", "md", (file) => { + file.setSource("https://raw.githubusercontent.com/Prozilla/Prozilla-OS/main/docs/README.md"); + }); + }); + + virtualRoot.createFolder("public", (folder) => { + folder.createFolder("assets", (folder) => { + folder.createFolder("apps", (folder) => { + folder.createFolder("icons", (folder) => { + AppsManager.APPS.forEach(({ id }) => { + folder.createFile(id, "svg", (file) => { + file.setSource(AppsManager.getAppIconUrl(id)); + }); + }); + }); + }).createFolder("fonts", (folder) => { + folder.createFolders(["poppins", "roboto-mono"]); + }).createFolder("screenshots", (folder) => { + folder.createFile("screenshot", "png", (file) => { + file.setSource(`${process.env.PUBLIC_URL}/assets/screenshots/screenshot-files-settings-taskbar-desktop.png`); + }); + }).createFolder("wallpapers", (folder) => { + folder.setProtected(true); + for (let i = 0; i < WALLPAPERS.length; i++) { + const source = WALLPAPERS[i]; + const name = source.split("/").pop().split(".")[0]; + folder.createFile(name, "png", (file) => { + file.setSource(source); + }); + } + }).createFile("banner", "png", (file) => { + file.setSource(`${process.env.PUBLIC_URL}/assets/banner-logo-title.png`); + }).createFile("logo", "svg", (file) => { + file.setSource(`${process.env.PUBLIC_URL}/assets/logo.svg`); + }); + }).createFolder("config", (folder) => { + folder.createFile("apps", "xml", (file) => { + file.setSource(`${process.env.PUBLIC_URL}/config/apps.xml`); + }).createFile("desktop", "xml", (file) => { + file.setSource(`${process.env.PUBLIC_URL}/config/desktop.xml`); + }).createFile("taskbar", "xml", (file) => { + file.setSource(`${process.env.PUBLIC_URL}/config/taskbar.xml`); + }); + }).createFolder("documents", (folder) => { + folder.createFile("info", "md", (file) => { + file.setSource(`${process.env.PUBLIC_URL}/documents/info.md`); + }).createFile("links", "md", (file) => { + file.setSource(`${process.env.PUBLIC_URL}/documents/links.md`); + }); + }).createFile("favicon", "ico", (file) => { + file.setSource(`${process.env.PUBLIC_URL}/favicon.ico`); + }).createFile("index", "html", (file) => { + file.setSource(`${process.env.PUBLIC_URL}/index.html`); + }).createFile("robots", "txt", (file) => { + file.setSource(`${process.env.PUBLIC_URL}/robots.txt`); + }).createFile("sitemap", "xml", (file) => { + file.setSource(`${process.env.PUBLIC_URL}/sitemap.xml`); + }); + }); + + virtualRoot.createFolder("src", (folder) => { + folder.createFolder("components") + .createFolder("config") + .createFolder("features") + .createFolder("hooks") + .createFolder("styles") + .createFile("App", "jsx", (file) => { + file.setSource("https://raw.githubusercontent.com/Prozilla/Prozilla-OS/main/src/App.jsx"); + }).createFile("index", "js", (file) => { + file.setSource("https://raw.githubusercontent.com/Prozilla/Prozilla-OS/main/src/index.js"); + }); + }); + + virtualRoot.createFile("", "env", (file) => { + file.setSource("https://raw.githubusercontent.com/Prozilla/Prozilla-OS/main/.env"); + }).createFile("", "gitignore", (file) => { + file.setSource("https://raw.githubusercontent.com/Prozilla/Prozilla-OS/main/.gitignore"); + }).createFile("LICENSE", "md", (file) => { + file.setSource("https://raw.githubusercontent.com/Prozilla/Prozilla-OS/main/LICENSE.md"); + }).createFile("README", "md", (file) => { + file.setSource("https://raw.githubusercontent.com/Prozilla/Prozilla-OS/main/README.md"); + }).createFile("package", "json", (file) => { + file.setSource("https://raw.githubusercontent.com/Prozilla/Prozilla-OS/main/package.json"); + }); } \ No newline at end of file diff --git a/src/features/virtual-drive/root/virtualRoot.js b/src/features/virtual-drive/root/virtualRoot.js index 583168e..70d7213 100644 --- a/src/features/virtual-drive/root/virtualRoot.js +++ b/src/features/virtual-drive/root/virtualRoot.js @@ -214,7 +214,8 @@ export class VirtualRoot extends VirtualFolder { object.scs = {}; for (const [key, value] of Object.entries(this.shortcuts)) { - object.scs[key] = value.absolutePath; + if (!value.root) + object.scs[key] = value.absolutePath; } }