From 6005e6566e2fe37b097a2cf4636440497bb07167 Mon Sep 17 00:00:00 2001 From: Seth Trowbridge Date: Fri, 31 Oct 2025 16:51:35 -0400 Subject: [PATCH] users/cleanup --- app.js | 72 ++++++++++++++++++++++++----------- mock-user-folder/data/room.js | 4 +- 2 files changed, 52 insertions(+), 24 deletions(-) diff --git a/app.js b/app.js index e7d1ed6..661d575 100644 --- a/app.js +++ b/app.js @@ -44,34 +44,62 @@ const rooms = van.state({}); let handle = await FSHandle.getDirectoryHandle(); await LoadHandleFiles(); +/** @type {Van.State} */ +const loggedIn = van.state(false); /** @type {(room_id:string, graphParts:TYPES.GraphParts)=>HTMLElement} */ function Room(room_id, graphParts) { const rerender = van.state(0); + return Div.Plain( + Div.Plain("Users:"), + Div.PartGroup( + Object.entries(graphParts.User).map(([user_id, user])=>{ + return ()=>{ + + rerender.val; + + return Div.Part( + DOM.div.Plain(user.name), + ()=>{ + return DOM.button.Plain( + {onclick(){ + rerender.val++ + loggedIn.val = user; + }}, + loggedIn.val == user ? "this is me" : "impersonate" + ) + }, + ) + } + }) + ), + Div.Plain("Passes:"), - Object.entries(graphParts.Pass).map(([pass_id, pass])=>{ - return ()=>{ - console.log("rerendering...", rerender.rawVal); - return Div.Plain( - Div.Title( + Div.PartGroup( + Object.entries(graphParts.Pass).map(([pass_id, pass])=>{ + return ()=>{ + console.log("rerendering...", rerender.rawVal); + + rerender.val; + + return Div.Part( DOM.div.Plain(pass.name), - DOM.span.Plain(pass.path), - ), - ()=>{ - return DOM.button.Plain( - {async onclick(){ - await pass[pass.live ? "dump" : "load"](); - rerender.val++ - }}, - pass.live ? "Dump" : "Load" - ) - }, - ) - } - }), + ()=>{ + return DOM.button.Plain( + {async onclick(){ + await pass[pass.live ? "dump" : "load"](); + rerender.val++ + }}, + pass.live ? "Dump" : "Load" + ) + }, + ) + } + }) + ), Div.Plain("Parts"), Div.PartGroup( @@ -86,7 +114,7 @@ function Room(room_id, graphParts) { work.push(Div.Part( - DOM.h5("Pass:", pass.name), + DOM.h5(pass.name), DOM.p(data.time), data.work.map(([time, data, user])=>Div.Plain( DOM.span(time), @@ -94,8 +122,8 @@ function Room(room_id, graphParts) DOM.strong(data), )), Div.Plain( - DOM.button({onclick(){ - data.make({}, "NEW"); + loggedIn.val && DOM.button({onclick(){ + data.make(loggedIn.val, "NEW"); rerender.val++ }}, "Add work!") ) diff --git a/mock-user-folder/data/room.js b/mock-user-folder/data/room.js index f460bd8..250a33b 100644 --- a/mock-user-folder/data/room.js +++ b/mock-user-folder/data/room.js @@ -18,8 +18,8 @@ export default Rooms({ d2:["Build Page preview", ["dev"], "all", {p1:1, p2:1}, "p3"] }, pass:{ - pass_01:["pass 01"], - pass_02:["pass 02"] + pass_01:["January"], + pass_02:["February"] } }) }); \ No newline at end of file