2 Commits

Author SHA1 Message Date
restitux 286fa16710 gui: stricter validation in add and edit modals
Build Mumble Web 2 / macos_build (push) Successful in 1m1s
Build Mumble Web 2 / windows_build (push) Successful in 2m52s
Build Mumble Web 2 / linux_build (push) Successful in 1m26s
Build Mumble Web 2 / android_build (push) Successful in 4m47s
2026-05-05 06:12:02 +00:00
restitux 90f6f8ef95 gui: new login screen 2026-05-05 06:11:59 +00:00
+27 -17
View File
@@ -502,25 +502,13 @@ pub fn ServerView(overrides: Resource<ProxyOverrides>) -> Element {
} }
#[component] #[component]
pub fn LoginView(overrides: Resource<ProxyOverrides>) -> Element { fn OverrideLoginView(overrides: Resource<ProxyOverrides>) -> Element {
let user_config = use_context::<ConfigSystem>(); let user_config = use_context::<ConfigSystem>();
let net: Coroutine<Command> = use_coroutine_handle(); let net: Coroutine<Command> = use_coroutine_handle();
let state = use_context::<SharedState>(); let state = use_context::<SharedState>();
let mut servers = use_signal(|| {
user_config
.config_get::<Vec<ServerEntry>>("servers")
.unwrap_or_default()
});
let mut show_add_modal = use_signal(|| false);
let mut editing_index = use_signal(|| None::<usize>);
let version = option_env!("MUMBLE_WEB2_VERSION"); let version = option_env!("MUMBLE_WEB2_VERSION");
let is_override_mode = overrides.read().as_ref().is_some_and(|c| !c.any_server);
// --- Overrides mode: single preset server, username-only input ---
if is_override_mode {
let proxy_url = overrides let proxy_url = overrides
.read() .read()
.as_ref() .as_ref()
@@ -533,10 +521,9 @@ pub fn LoginView(overrides: Resource<ProxyOverrides>) -> Element {
.unwrap_or_default() .unwrap_or_default()
}); });
let status = &state.status; let is_connecting = matches!(&*state.status.read(), Connecting);
let is_connecting = matches!(&*status.read(), Connecting);
return rsx!( rsx!(
div { div {
class: "server-list-page", class: "server-list-page",
h1 { h1 {
@@ -603,7 +590,30 @@ pub fn LoginView(overrides: Resource<ProxyOverrides>) -> Element {
} }
} }
} }
); )
}
#[component]
pub fn LoginView(overrides: Resource<ProxyOverrides>) -> Element {
let user_config = use_context::<ConfigSystem>();
let net: Coroutine<Command> = use_coroutine_handle();
let state = use_context::<SharedState>();
let mut servers = use_signal(|| {
user_config
.config_get::<Vec<ServerEntry>>("servers")
.unwrap_or_default()
});
let mut show_add_modal = use_signal(|| false);
let mut editing_index = use_signal(|| None::<usize>);
let version = option_env!("MUMBLE_WEB2_VERSION");
let is_override_mode = overrides.read().as_ref().is_some_and(|c| !c.any_server);
// --- Overrides mode: single preset server, username-only input ---
if is_override_mode {
return rsx!(OverrideLoginView { overrides });
} }
// --- Normal mode: editable server list --- // --- Normal mode: editable server list ---