probably the last change until i move to nextjs

This commit is contained in:
2025-07-15 18:42:43 +02:00
parent 8551a004a8
commit 153d35825d
6 changed files with 61 additions and 9 deletions
+23 -1
View File
@@ -66,6 +66,7 @@ pub fn redirect(target: &str) {
.unwrap();
}
#[derive(Clone)]
pub struct Session(Signal<String>);
pub fn use_session() -> Session {
@@ -73,6 +74,10 @@ pub fn use_session() -> Session {
}
impl Session {
pub fn get_id(&self) -> String {
self.0.read().clone()
}
pub fn use_servers(&self) -> (Signal<Vec<Server>>, Signal<String>) {
let query = use_signal(|| String::new());
let servers = use_signal(|| Vec::new());
@@ -83,7 +88,7 @@ impl Session {
let mut servers = servers.clone();
spawn(async move {
if let Ok(v) = backend::get_servers(id.read().clone(), query_value).await {
if let Ok(v) = request(backend::get_servers(id.read().clone(), query_value).await) {
servers.set(v);
}
});
@@ -92,3 +97,20 @@ impl Session {
(servers, query)
}
}
pub fn request<T>(o: Result<T, ServerFnError>) -> Result<T, ServerFnError> {
match o {
Err(e) => match e {
ServerFnError::ServerError(e) => {
if e == "Invalid session" {
redirect("/");
Err(ServerFnError::ServerError(e))
} else {
Err(ServerFnError::ServerError(e))
}
}
_ => Err(e),
},
_ => o,
}
}