use leptos::prelude::*; use wasm_bindgen_futures::spawn_local; use crate::api::{self, Me}; use crate::app::AuthPhase; #[component] pub fn ShellView( me: ReadSignal>, set_me: WriteSignal>, set_phase: WriteSignal, ) -> impl IntoView { let on_logout = move |_| { spawn_local(async move { let _ = api::logout().await; set_me.set(None); set_phase.set(AuthPhase::Login); }); }; view! {
"📂 filebrowser-ng"
{move || { let Some(m) = me.get() else { return None; }; let u = m.user?; let is_admin = u.is_admin; Some( view! { {u.name} "admin" } .into_view() .into_any(), ) }}
{move || { let Some(m) = me.get() else { return None; }; let u = m.user?; Some(view! { "Welcome, " {u.name} "!" }.into_view().into_any()) }}

"You're signed in — auth, sessions and your configured folders are working. The file browser itself arrives in the next milestone."

"Your folders"

{move || { let Some(m) = me.get() else { return None; }; Some( view! {
    {m.roots.iter().map(|r| { let name = r.name.clone(); let path = r.path.clone(); let mode = r.mode.clone(); view! {
  • {name} {path} {if mode == "rw" { "read-write" } else { "read-only" }}
  • } }).collect::>()}
} .into_view() .into_any(), ) }}
} }