Refactor ProxyOverides to be optional
This commit is contained in:
+18
-12
@@ -309,7 +309,7 @@ pub fn ChatView() -> Element {
|
||||
}
|
||||
|
||||
#[component]
|
||||
pub fn ControlView(config: Resource<ProxyOverides>) -> Element {
|
||||
pub fn ControlView(config: Resource<Option<ProxyOverides>>) -> Element {
|
||||
let net: Coroutine<Command> = use_coroutine_handle();
|
||||
let status = &STATE.status;
|
||||
let server = STATE.server.read();
|
||||
@@ -331,7 +331,8 @@ pub fn ControlView(config: Resource<ProxyOverides>) -> Element {
|
||||
let proxy_url = config
|
||||
.read_unchecked()
|
||||
.as_ref()
|
||||
.and_then(|gui_config| gui_config.proxy_url.clone());
|
||||
.and_then(|opt| opt.as_ref())
|
||||
.map(|gui_config| gui_config.proxy_url.clone());
|
||||
|
||||
let connecting_color = "yellow";
|
||||
let connected_color = "oklch(0.55 0.1184 141.35)";
|
||||
@@ -508,7 +509,7 @@ pub fn ControlView(config: Resource<ProxyOverides>) -> Element {
|
||||
}
|
||||
|
||||
#[component]
|
||||
pub fn ServerView(config: Resource<ProxyOverides>) -> Element {
|
||||
pub fn ServerView(config: Resource<Option<ProxyOverides>>) -> Element {
|
||||
let net: Coroutine<Command> = use_coroutine_handle();
|
||||
let server = STATE.server.read();
|
||||
let Some(&UserState {
|
||||
@@ -546,7 +547,7 @@ pub fn ServerView(config: Resource<ProxyOverides>) -> Element {
|
||||
}
|
||||
|
||||
#[component]
|
||||
pub fn LoginView(config: Resource<ProxyOverides>) -> Element {
|
||||
pub fn LoginView(config: Resource<Option<ProxyOverides>>) -> Element {
|
||||
let net: Coroutine<Command> = use_coroutine_handle();
|
||||
|
||||
let last_status = use_signal(|| None::<color_eyre::Result<ServerStatus>>);
|
||||
@@ -564,7 +565,8 @@ pub fn LoginView(config: Resource<ProxyOverides>) -> Element {
|
||||
addr.clone()
|
||||
} else {
|
||||
config()
|
||||
.and_then(|c| c.proxy_url.clone())
|
||||
.flatten()
|
||||
.map(|c| c.proxy_url.clone())
|
||||
.unwrap_or_default()
|
||||
}
|
||||
});
|
||||
@@ -575,13 +577,13 @@ pub fn LoginView(config: Resource<ProxyOverides>) -> Element {
|
||||
let do_connect = move |_| {
|
||||
//let _ = set_default_username(&username.read());
|
||||
let _ = imp::set_default_username(&username.read());
|
||||
if config.read().as_ref().is_some_and(|cfg| cfg.any_server) {
|
||||
if config.read().as_ref().is_some_and(|opt| opt.is_none()) {
|
||||
imp::set_default_server(&address.read());
|
||||
}
|
||||
net.send(Connect {
|
||||
address: address.read().clone(),
|
||||
username: username.read().clone(),
|
||||
config: config.read().clone().unwrap_or_default(),
|
||||
config: config.read().clone().flatten().unwrap_or_default(),
|
||||
})
|
||||
};
|
||||
let status = &STATE.status;
|
||||
@@ -626,7 +628,7 @@ pub fn LoginView(config: Resource<ProxyOverides>) -> Element {
|
||||
None => rsx!(),
|
||||
}
|
||||
}
|
||||
if config.read().as_ref().is_some_and(|cfg| cfg.any_server) {
|
||||
if config.read().as_ref().is_some_and(|opt| opt.is_none()) {
|
||||
div {
|
||||
label {
|
||||
for: "address-entry",
|
||||
@@ -725,7 +727,7 @@ pub fn app() -> Element {
|
||||
let config = use_resource(|| async move {
|
||||
match imp::load_proxy_overides().await {
|
||||
Ok(config) => config,
|
||||
Err(_) => ProxyOverides::default(),
|
||||
Err(_) => None,
|
||||
}
|
||||
});
|
||||
|
||||
@@ -734,9 +736,13 @@ pub fn app() -> Element {
|
||||
document::Link{ rel: "stylesheet", href: "https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" }
|
||||
document::Link{ rel: "stylesheet", href: STYLE }
|
||||
|
||||
match *STATE.status.read() {
|
||||
Connected => rsx!(ServerView { config }),
|
||||
_ => rsx!(LoginView { config }),
|
||||
if config.read().is_none() {
|
||||
div { class: "loading", "Loading..." }
|
||||
} else {
|
||||
match *STATE.status.read() {
|
||||
Connected => rsx!(ServerView { config }),
|
||||
_ => rsx!(LoginView { config }),
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user