diff --git a/visions/ui/src/client.rs b/visions/ui/src/client.rs new file mode 100644 index 0000000..cd9d015 --- /dev/null +++ b/visions/ui/src/client.rs @@ -0,0 +1,39 @@ +use gloo_net::http::Request; +use serde::Deserialize; + +#[derive(Deserialize)] +enum AuthResponse { + Ok(SessionId), + PasswordReset(SessionId), +} + +#[derive(Deserialize)] +struct SessionId(String); + +enum ClientError { + Unauthorized, +} + +#[derive(Deserialize)] +struct UserId(String); + +#[derive(Deserialize)] +struct UserInfo { + id: UserId, + name: String, +} + +trait Client { + async fn auth(username: String, password: String) -> Result; + async fn list_users(session_id: SessionId) -> Result, ClientError>; +} + +impl Client for Connection { + async fn auth(username: String, password: String) -> Result { + let request = Request::post("http://localhost:8001") + .body().unwrap(); + } + + async fn list_users(session_id: SessionId) -> Result, ClientError> { + } +} diff --git a/visions/ui/src/main.rs b/visions/ui/src/main.rs index 99cc11d..e305174 100644 --- a/visions/ui/src/main.rs +++ b/visions/ui/src/main.rs @@ -2,6 +2,9 @@ use std::rc::Rc; use yew::prelude::*; +mod client; +pub use client::*; + struct AuthInfo { session_id: Option, } @@ -44,12 +47,12 @@ fn Login(LoginProps { on_click }: &LoginProps) -> Html { }; html! { } }