Logging in and Signing up on the client done
Tons of bug fixes too
This commit is contained in:
@@ -1,3 +1,8 @@
|
||||
use tokio::sync::broadcast;
|
||||
use tokio::sync::broadcast::{Receiver, Sender};
|
||||
use tracing::log::info;
|
||||
use realm_shared::types::ErrorCode;
|
||||
use crate::types::ClientUser;
|
||||
use crate::ui::panels;
|
||||
|
||||
/// We derive Deserialize/Serialize so we can persist app state on shutdown.
|
||||
@@ -9,9 +14,32 @@ pub struct TemplateApp {
|
||||
pub selected: bool,
|
||||
pub selected_serverid: Option<String>,
|
||||
pub selected_roomid: Option<String>,
|
||||
|
||||
pub current_user: Option<ClientUser>,
|
||||
|
||||
#[serde(skip)] // This how you opt-out of serialization of a field
|
||||
#[serde(skip)]
|
||||
pub value: f32,
|
||||
#[serde(skip)]
|
||||
pub login_window_open: bool,
|
||||
#[serde(skip)]
|
||||
pub login_window_username: String,
|
||||
#[serde(skip)]
|
||||
pub login_window_code: String,
|
||||
#[serde(skip)]
|
||||
pub login_window_server_address: String,
|
||||
#[serde(skip)]
|
||||
pub login_window_email: String,
|
||||
|
||||
#[serde(skip)]
|
||||
pub login_ready_for_code_input: bool,
|
||||
|
||||
#[serde(skip)]
|
||||
pub signup_window_open: bool,
|
||||
|
||||
#[serde(skip)]
|
||||
pub login_start_channel: (Sender<Result<(), ErrorCode>>, Receiver<Result<(), ErrorCode>>),
|
||||
#[serde(skip)]
|
||||
pub login_ending_channel: (Sender<Result<String, ErrorCode>>, Receiver<Result<String, ErrorCode>>),
|
||||
}
|
||||
|
||||
impl Default for TemplateApp {
|
||||
@@ -22,7 +50,19 @@ impl Default for TemplateApp {
|
||||
selected: false,
|
||||
selected_serverid: None,
|
||||
selected_roomid: None,
|
||||
current_user: None,
|
||||
value: 2.7,
|
||||
|
||||
login_window_open: false,
|
||||
login_window_username: String::new(),
|
||||
login_window_code: String::new(),
|
||||
login_window_server_address: String::new(),
|
||||
login_start_channel: broadcast::channel(10),
|
||||
login_ending_channel: broadcast::channel(10),
|
||||
login_ready_for_code_input: false,
|
||||
login_window_email: String::new(),
|
||||
|
||||
signup_window_open: false,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -49,8 +89,26 @@ impl eframe::App for TemplateApp {
|
||||
// Put your widgets into a `SidePanel`, `TopBottomPanel`, `CentralPanel`, `Window` or `Area`.
|
||||
// For inspiration and more examples, go to https://emilk.github.io/egui
|
||||
|
||||
while let Ok(result) = self.login_start_channel.1.try_recv() {
|
||||
match result {
|
||||
Ok(_) => self.login_ready_for_code_input = true,
|
||||
Err(e) => tracing::error!("Error in login/account creation flow: {:?}", e),
|
||||
}
|
||||
}
|
||||
|
||||
while let Ok(result) = self.login_ending_channel.1.try_recv() {
|
||||
match result {
|
||||
Ok(token) => {
|
||||
info!("Login successful! Token: {token}");
|
||||
self.login_ready_for_code_input = false;
|
||||
|
||||
},
|
||||
Err(e) => tracing::error!("Error in login flow: {:?}", e),
|
||||
}
|
||||
}
|
||||
|
||||
// File -> Quit
|
||||
panels::top_panel(ctx);
|
||||
panels::top_panel(self, ctx);
|
||||
|
||||
panels::servers(self, ctx);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user