Skip to content

Commit a308213

Browse files
authored
Merge pull request #204 from kevinaboos/better_login_status_messages
Provide more detailed and colored login status messages
2 parents 5a17587 + a8e3d9e commit a308213

3 files changed

Lines changed: 26 additions & 4 deletions

File tree

src/login/login_screen.rs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,11 @@ live_design! {
215215

216216
static MATRIX_SIGN_UP_URL: &str = "https://matrix.org/docs/chat_basics/matrix-for-im/#creating-a-matrix-account";
217217

218+
// An unfortunate hack we must do to get the colors to work in Rust code.
219+
const COLOR_DANGER_RED: Vec4 = Vec4 { x: 220f32/255f32, y: 0f32, z: 5f32/255f32, w: 1f32 };
220+
const COLOR_ACCEPT_GREEN: Vec4 = Vec4 { x: 19f32/255f32, y: 136f32/255f32, z: 8f32/255f32, w: 1f32 };
221+
const MESSAGE_TEXT_COLOR: Vec4 = Vec4 { x: 68f32/255f32, y: 68f32/255f32, z: 68f32/255f32, w: 1f32 };
222+
218223
#[derive(Live, LiveHook, Widget)]
219224
pub struct LoginScreen {
220225
#[deref] view: View,
@@ -241,8 +246,14 @@ impl Widget for LoginScreen {
241246
let password = password_input.text();
242247
let homeserver = homeserver_input.text();
243248
if user_id.is_empty() || password.is_empty() {
249+
status_label.apply_over(cx, live!{
250+
draw_text: { color: (COLOR_DANGER_RED) }
251+
});
244252
status_label.set_text("Please enter both User ID and Password.");
245253
} else {
254+
status_label.apply_over(cx, live!{
255+
draw_text: { color: (MESSAGE_TEXT_COLOR) }
256+
});
246257
status_label.set_text("Waiting for login response...");
247258
submit_async_request(MatrixRequest::Login(LoginRequest {
248259
user_id,
@@ -260,6 +271,9 @@ impl Widget for LoginScreen {
260271
}
261272
Some(LoginAction::Status(status)) => {
262273
status_label.set_text(status);
274+
status_label.apply_over(cx, live!{
275+
draw_text: { color: (MESSAGE_TEXT_COLOR) }
276+
});
263277
self.redraw(cx);
264278
}
265279
Some(LoginAction::LoginSuccess) => {
@@ -269,10 +283,16 @@ impl Widget for LoginScreen {
269283
password_input.set_text("");
270284
homeserver_input.set_text("");
271285
status_label.set_text("Login successful!");
286+
status_label.apply_over(cx, live!{
287+
draw_text: { color: (COLOR_ACCEPT_GREEN) }
288+
});
272289
self.redraw(cx);
273290
}
274291
Some(LoginAction::LoginFailure(error)) => {
275292
status_label.set_text(error);
293+
status_label.apply_over(cx, live!{
294+
draw_text: { color: (COLOR_DANGER_RED) }
295+
});
276296
self.redraw(cx);
277297
}
278298
_ => {}

src/persistent_state.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,9 @@ pub async fn restore_session(
9797
log!("Could not find previous session file for user {user_id}");
9898
bail!("Could not find previous session file");
9999
}
100-
log!("Found existing session at '{}'", session_file.display());
100+
let status_str = format!("Loading previous session file for {user_id}...");
101+
log!("{status_str}: '{}'", session_file.display());
102+
Cx::post_action(LoginAction::Status(status_str));
101103

102104
// The session was serialized as JSON in a file.
103105
let serialized_session = fs::read_to_string(session_file).await?;
@@ -113,7 +115,7 @@ pub async fn restore_session(
113115
.build()
114116
.await?;
115117

116-
let status_str = format!("Restoring previous session for {}", user_session.meta.user_id);
118+
let status_str = format!("Restoring previous login session for {}...", user_session.meta.user_id);
117119
log!("{status_str}");
118120
Cx::post_action(LoginAction::Status(status_str));
119121

src/sliding_sync.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -903,12 +903,12 @@ async fn async_main_loop(
903903
if let Some(session) = persistent_state::restore_session(specified_username).await.ok() {
904904
Some(session)
905905
} else {
906-
let status_err = "Could not restore previous user session";
906+
let status_err = "Error: failed to restore previous user session.";
907907
log!("{status_err}");
908908
Cx::post_action(LoginAction::Status(status_err.to_string()));
909909

910910
if let Ok(cli) = cli_parse_result {
911-
let status_str = format!("Attempting auto-login from CLI arguments as user {}", cli.username);
911+
let status_str = format!("Attempting auto-login from CLI arguments as user {}...", cli.username);
912912
log!("{status_str}");
913913
Cx::post_action(LoginAction::Status(status_str));
914914

0 commit comments

Comments
 (0)