JJ Colocate
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
use crate::components::{MediaGrid, Search};
|
||||
use dioxus::prelude::*;
|
||||
|
||||
#[component]
|
||||
pub fn Home() -> Element {
|
||||
let query = use_signal(|| "".to_string());
|
||||
|
||||
rsx! {
|
||||
Search { query }
|
||||
MediaGrid { query: query.cloned() }
|
||||
}
|
||||
}
|
||||
use crate::components::{MediaGrid, Search};
|
||||
use dioxus::prelude::*;
|
||||
|
||||
#[component]
|
||||
pub fn Home() -> Element {
|
||||
let query = use_signal(|| "".to_string());
|
||||
|
||||
rsx! {
|
||||
Search { query }
|
||||
MediaGrid { query: query.cloned() }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,78 +1,78 @@
|
||||
use dioxus::prelude::*;
|
||||
use tonic::IntoRequest;
|
||||
|
||||
use crate::{
|
||||
components::{basic::Input, Notif, NotifType},
|
||||
contexts::AuthContext,
|
||||
rpc::{aoba::Credentials, get_auth_rpc_client},
|
||||
};
|
||||
|
||||
#[component]
|
||||
pub fn Login() -> Element {
|
||||
let username = use_signal(|| "".to_string());
|
||||
let password = use_signal(|| "".to_string());
|
||||
let mut error: Signal<Option<String>> = use_signal(|| None);
|
||||
let mut auth_context = use_context::<AuthContext>();
|
||||
|
||||
let login = move |e: Event<MouseData>| {
|
||||
e.prevent_default();
|
||||
if username.cloned().is_empty() || password.cloned().is_empty() {
|
||||
error.set(Some("Username and Password are required".into()));
|
||||
return;
|
||||
}
|
||||
|
||||
spawn(async move {
|
||||
let mut auth = get_auth_rpc_client();
|
||||
let result = auth
|
||||
.login(
|
||||
Credentials {
|
||||
user: username.cloned(),
|
||||
password: password.cloned(),
|
||||
}
|
||||
.into_request(),
|
||||
)
|
||||
.await;
|
||||
match result {
|
||||
Ok(res) => {
|
||||
match res.into_inner().result.unwrap() {
|
||||
crate::rpc::aoba::login_response::Result::Jwt(jwt) => {
|
||||
auth_context.login(jwt.token);
|
||||
}
|
||||
crate::rpc::aoba::login_response::Result::Error(login_error) => {
|
||||
auth_context.logout();
|
||||
error.set(Some(login_error.message));
|
||||
}
|
||||
};
|
||||
}
|
||||
Err(_err) => {
|
||||
auth_context.logout();
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
rsx! {
|
||||
div { id: "centralModal",
|
||||
if let Some(err) = error.cloned() {
|
||||
Notif { r#type: NotifType::Error, message: err }
|
||||
}
|
||||
form {
|
||||
Input {
|
||||
r#type: "text",
|
||||
name: "username",
|
||||
label: "Username",
|
||||
value: username,
|
||||
required: true,
|
||||
}
|
||||
Input {
|
||||
r#type: "password",
|
||||
name: "password",
|
||||
label: "Password",
|
||||
value: password,
|
||||
required: true,
|
||||
}
|
||||
button { onclick: login, "Login!" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
use dioxus::prelude::*;
|
||||
use tonic::IntoRequest;
|
||||
|
||||
use crate::{
|
||||
components::{basic::Input, Notif, NotifType},
|
||||
contexts::AuthContext,
|
||||
rpc::{aoba::Credentials, get_auth_rpc_client},
|
||||
};
|
||||
|
||||
#[component]
|
||||
pub fn Login() -> Element {
|
||||
let username = use_signal(|| "".to_string());
|
||||
let password = use_signal(|| "".to_string());
|
||||
let mut error: Signal<Option<String>> = use_signal(|| None);
|
||||
let mut auth_context = use_context::<AuthContext>();
|
||||
|
||||
let login = move |e: Event<MouseData>| {
|
||||
e.prevent_default();
|
||||
if username.cloned().is_empty() || password.cloned().is_empty() {
|
||||
error.set(Some("Username and Password are required".into()));
|
||||
return;
|
||||
}
|
||||
|
||||
spawn(async move {
|
||||
let mut auth = get_auth_rpc_client();
|
||||
let result = auth
|
||||
.login(
|
||||
Credentials {
|
||||
user: username.cloned(),
|
||||
password: password.cloned(),
|
||||
}
|
||||
.into_request(),
|
||||
)
|
||||
.await;
|
||||
match result {
|
||||
Ok(res) => {
|
||||
match res.into_inner().result.unwrap() {
|
||||
crate::rpc::aoba::login_response::Result::Jwt(jwt) => {
|
||||
auth_context.login(jwt.token);
|
||||
}
|
||||
crate::rpc::aoba::login_response::Result::Error(login_error) => {
|
||||
auth_context.logout();
|
||||
error.set(Some(login_error.message));
|
||||
}
|
||||
};
|
||||
}
|
||||
Err(_err) => {
|
||||
auth_context.logout();
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
rsx! {
|
||||
div { id: "centralModal",
|
||||
if let Some(err) = error.cloned() {
|
||||
Notif { r#type: NotifType::Error, message: err }
|
||||
}
|
||||
form {
|
||||
Input {
|
||||
r#type: "text",
|
||||
name: "username",
|
||||
label: "Username",
|
||||
value: username,
|
||||
required: true,
|
||||
}
|
||||
Input {
|
||||
r#type: "password",
|
||||
name: "password",
|
||||
label: "Password",
|
||||
value: password,
|
||||
required: true,
|
||||
}
|
||||
button { onclick: login, "Login!" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
mod home;
|
||||
mod login;
|
||||
pub use home::*;
|
||||
pub use login::*;
|
||||
|
||||
mod settings;
|
||||
pub use settings::Settings;
|
||||
mod home;
|
||||
mod login;
|
||||
pub use home::*;
|
||||
pub use login::*;
|
||||
|
||||
mod settings;
|
||||
pub use settings::Settings;
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
use dioxus::prelude::*;
|
||||
|
||||
use crate::rpc::get_rpc_client;
|
||||
|
||||
#[component]
|
||||
pub fn Settings() -> Element {
|
||||
let dst = use_resource(async move || {
|
||||
let result = get_rpc_client().get_share_x_destination(()).await;
|
||||
if let Ok(d) = result {
|
||||
if let Some(r) = d.into_inner().dst_result {
|
||||
return match r {
|
||||
crate::rpc::aoba::share_x_response::DstResult::Destination(json) => json,
|
||||
crate::rpc::aoba::share_x_response::DstResult::Error(err) => err,
|
||||
};
|
||||
}
|
||||
return "No Result".to_string();
|
||||
}
|
||||
let err = result.err().unwrap();
|
||||
let status = err.message();
|
||||
return format!("Failed to load config: {status}").to_string();
|
||||
});
|
||||
|
||||
let d = dst.cloned().unwrap_or("".to_string());
|
||||
|
||||
rsx! {
|
||||
"this is settings"
|
||||
div {
|
||||
pre { class: "codeSelect", "{d}" }
|
||||
}
|
||||
}
|
||||
}
|
||||
use dioxus::prelude::*;
|
||||
|
||||
use crate::rpc::get_rpc_client;
|
||||
|
||||
#[component]
|
||||
pub fn Settings() -> Element {
|
||||
let dst = use_resource(async move || {
|
||||
let result = get_rpc_client().get_share_x_destination(()).await;
|
||||
if let Ok(d) = result {
|
||||
if let Some(r) = d.into_inner().dst_result {
|
||||
return match r {
|
||||
crate::rpc::aoba::share_x_response::DstResult::Destination(json) => json,
|
||||
crate::rpc::aoba::share_x_response::DstResult::Error(err) => err,
|
||||
};
|
||||
}
|
||||
return "No Result".to_string();
|
||||
}
|
||||
let err = result.err().unwrap();
|
||||
let status = err.message();
|
||||
return format!("Failed to load config: {status}").to_string();
|
||||
});
|
||||
|
||||
let d = dst.cloned().unwrap_or("".to_string());
|
||||
|
||||
rsx! {
|
||||
"this is settings"
|
||||
div {
|
||||
pre { class: "codeSelect", "{d}" }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user