diff --git a/client/src/app.rs b/client/src/app.rs index 45ef9b9..d5c2aa5 100644 --- a/client/src/app.rs +++ b/client/src/app.rs @@ -39,7 +39,9 @@ pub struct RealmApp { #[serde(skip)] pub login_window_code: String, #[serde(skip)] - pub login_window_server_address: String, + pub login_window_server_domain: String, + #[serde(skip)] + pub login_window_server_port: String, #[serde(skip)] pub login_window_email: String, @@ -106,7 +108,8 @@ impl Default for RealmApp { login_window_open: false, login_window_username: String::new(), login_window_code: String::new(), - login_window_server_address: String::new(), + login_window_server_domain: String::new(), + login_window_server_port: "5052".to_string(), login_start_channel: broadcast::channel(10), login_ending_channel: broadcast::channel(10), login_ready_for_code_input: false, @@ -303,8 +306,9 @@ impl eframe::App for RealmApp { info!("Fetching user data..."); let send_channel = self.fetching_user_data_channel.0.clone(); - let server_address = self.login_window_server_address.clone(); - let username = self.login_window_username.clone(); + let server_address = format!("{}:{}", self.login_window_server_domain, self.login_window_server_port); + let port = self.login_window_server_port.clone().parse::().unwrap(); + let username = format!("@{}:{}", self.login_window_username, self.login_window_server_domain); self.saved_token = Some(token.clone()); self.saved_username = Some(username.clone()); diff --git a/client/src/ui/gui.rs b/client/src/ui/gui.rs index 5903090..d0771d0 100644 --- a/client/src/ui/gui.rs +++ b/client/src/ui/gui.rs @@ -182,8 +182,13 @@ pub fn modals(app: &mut RealmApp, ctx: &Context) { .min_size((500.0, 200.0)) .show(ctx, |ui| { ui.horizontal(|ui| { - ui.label("Server Address: "); - ui.text_edit_singleline(&mut app.login_window_server_address); + ui.label("Domain: "); + ui.text_edit_singleline(&mut app.login_window_server_domain); + ui.label("Port: "); + if ui.text_edit_singleline(&mut app.login_window_server_port).changed() { + let re = Regex::new(r"[^0-9]+").unwrap(); + app.login_window_server_port = re.replace_all(&app.login_window_server_port, "").to_string(); + } }); ui.horizontal(|ui| { @@ -197,8 +202,8 @@ pub fn modals(app: &mut RealmApp, ctx: &Context) { }); if ui.button("Create Account").clicked() { - let login_window_server_address = app.login_window_server_address.clone(); - let login_window_username = app.login_window_username.clone(); + let login_window_server_address = format!("{}:{}", app.login_window_server_domain, app.login_window_server_port); + let login_window_username = format!("@{}:{}", app.login_window_username, app.login_window_server_domain); let login_window_email = app.login_window_email.clone(); let send_channel = app.login_start_channel.0.clone(); @@ -233,8 +238,13 @@ pub fn modals(app: &mut RealmApp, ctx: &Context) { .min_size((500.0, 200.0)) .show(ctx, |ui| { ui.horizontal(|ui| { - ui.label("Server Address: "); - ui.text_edit_singleline(&mut app.login_window_server_address); + ui.label("Domain: "); + ui.text_edit_singleline(&mut app.login_window_server_domain); + ui.label("Port: "); + if ui.text_edit_singleline(&mut app.login_window_server_port).changed() { + let re = Regex::new(r"[^0-9]+").unwrap(); + app.login_window_server_port = re.replace_all(&app.login_window_server_port, "").to_string(); + } }); ui.horizontal(|ui| { @@ -243,8 +253,8 @@ pub fn modals(app: &mut RealmApp, ctx: &Context) { }); if ui.button("Send Login Code").clicked() { - let login_window_server_address = app.login_window_server_address.clone(); - let login_window_username = app.login_window_username.clone(); + let login_window_server_address = format!("{}:{}", app.login_window_server_domain, app.login_window_server_port); + let login_window_username = format!("@{}:{}", app.login_window_username, app.login_window_server_domain); let send_channel = app.login_start_channel.0.clone(); let _handle = tokio::spawn(async move { @@ -286,9 +296,9 @@ pub fn modals(app: &mut RealmApp, ctx: &Context) { }); if ui.button("Login").clicked() { - let login_window_server_address = app.login_window_server_address.clone(); + let login_window_server_address = format!("{}:{}", app.login_window_server_domain, app.login_window_server_port); let login_window_code = app.login_window_code.clone(); - let login_window_username = app.login_window_username.clone(); + let login_window_username = format!("@{}:{}", app.login_window_username, app.login_window_server_domain); let send_channel = app.login_ending_channel.0.clone(); let _handle = tokio::spawn(async move {