fs access tweaks
This commit is contained in:
parent
975694f798
commit
388ec90132
77
app.js
77
app.js
@ -8,26 +8,89 @@ async function getFolderHandle() {
|
||||
console.log("Folder selected:", dirHandle);
|
||||
|
||||
|
||||
for await (const [name, roomsHandle] of dirHandle.entries())
|
||||
const roomsFolder = await dirHandle.getDirectoryHandle("room");
|
||||
if(roomsFolder)
|
||||
{
|
||||
if(name == "room" && roomsHandle.kind == "directory")
|
||||
for await (const [_, roomFolder] of roomsFolder.entries())
|
||||
{
|
||||
for await (const [name, roomHandle] of roomsHandle.entries())
|
||||
if(roomFolder.kind == "directory")
|
||||
{
|
||||
if(roomHandle.kind == "directory")
|
||||
const roomMetaFile = await roomFolder.getFileHandle("_room_meta.json");
|
||||
if(roomMetaFile)
|
||||
{
|
||||
Rooms[name] = roomHandle;
|
||||
let metaData = {};
|
||||
try
|
||||
{
|
||||
metaData = await roomMetaFile.getFile().then(d=>d.text()).then(t=>JSON.parse(t));
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
console.warn(`Couldn't parse room meta: ${roomFolder.name} / ${roomMetaFile.name}`, e);
|
||||
}
|
||||
|
||||
const roomObj =
|
||||
{
|
||||
meta: metaData,
|
||||
pass: {}
|
||||
};
|
||||
Rooms[roomFolder.name] = roomObj;
|
||||
|
||||
for await (const [_, passFolder] of roomFolder.entries())
|
||||
{
|
||||
if(passFolder.kind == "directory")
|
||||
{
|
||||
const passMeta = await passFolder.getFileHandle("_pass_meta.json");
|
||||
if(passMeta)
|
||||
{
|
||||
|
||||
let metaData = {};
|
||||
try
|
||||
{
|
||||
metaData = await passMeta.getFile().then(d=>d.text()).then(t=>JSON.parse(t));
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
console.warn(`Couldn't parse pass meta: ${roomFolder.name} / ${passFolder.name} / ${passMeta.name}`, e);
|
||||
}
|
||||
|
||||
const passObj = {
|
||||
meta: metaData,
|
||||
user: {}
|
||||
}
|
||||
roomObj.pass[passFolder.name] = passObj;
|
||||
|
||||
for await (const [_, userFile] of passFolder.entries())
|
||||
{
|
||||
if(userFile.name.endsWith(".json") && userFile.name != "_pass_meta.json")
|
||||
{
|
||||
const userID = userFile.name.substring(0, userFile.name.length-5)
|
||||
try
|
||||
{
|
||||
passObj.user[userID] = await userFile.getFile().then(d=>d.text()).then(t=>JSON.parse(t));
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
console.warn(`Couldn't parse user data: ${roomFolder.name} / ${passFolder.name} / ${userFile.name}`, e);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
console.log(Rooms);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
console.log("Rooms:", Rooms);
|
||||
|
||||
} catch (err) {
|
||||
console.error("Folder selection cancelled or failed:", err);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Init()
|
||||
{
|
||||
|
||||
@ -0,0 +1,8 @@
|
||||
{
|
||||
"p1":
|
||||
[
|
||||
[123, "data"],
|
||||
[456, "more data"],
|
||||
[789, "even more data"]
|
||||
]
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user