Skip to content

Commit

Permalink
Merge pull request #363 from kevinaboos/investigate_login_status_modal
Browse files Browse the repository at this point in the history
  • Loading branch information
kevinaboos authored Jan 29, 2025
2 parents d769f89 + df8bbae commit 958de5d
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 14 deletions.
4 changes: 2 additions & 2 deletions src/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -354,13 +354,13 @@ impl AppMain for App {
impl App {
fn update_login_visibility(&self, cx: &mut Cx) {
let show_login = !self.app_state.logged_in;
self.ui.view(id!(login_screen_view)).set_visible(cx, show_login);
self.ui.view(id!(home_screen_view)).set_visible(cx, !show_login);
if !show_login {
self.ui
.modal(id!(login_screen_view.login_screen.login_status_modal))
.close(cx);
}
self.ui.view(id!(login_screen_view)).set_visible(cx, show_login);
self.ui.view(id!(home_screen_view)).set_visible(cx, !show_login);
}
}

Expand Down
16 changes: 5 additions & 11 deletions src/login/login_screen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,7 @@ impl MatchEvent for LoginScreen {
login_status_modal_inner.set_status(cx, "Please enter a valid password.");
login_status_modal_inner.button_ref().set_text(cx, "Okay");
} else {
login_status_modal_inner.set_title(cx, "Logging in");
login_status_modal_inner.set_title(cx, "Logging in...");
login_status_modal_inner.set_status(cx, "Waiting for a login response...");
login_status_modal_inner.button_ref().set_text(cx, "Cancel");
submit_async_request(MatrixRequest::Login(LoginRequest::LoginByPassword(LoginByPassword {
Expand Down Expand Up @@ -365,7 +365,7 @@ impl MatchEvent for LoginScreen {
user_id_input.set_text(cx, user_id);
password_input.set_text(cx, "");
homeserver_input.set_text(cx, homeserver.as_deref().unwrap_or_default());
login_status_modal_inner.set_title(cx, "Logging in via CLI");
login_status_modal_inner.set_title(cx, "Logging in via CLI...");
login_status_modal_inner.set_status(
cx,
&format!("Auto-logging in as user {user_id}...")
Expand All @@ -382,24 +382,20 @@ impl MatchEvent for LoginScreen {
login_status_modal_button.set_text(cx, "Cancel");
login_status_modal_button.set_enabled(cx, true);
login_status_modal.open(cx);

self.redraw(cx);
}
Some(LoginAction::LoginSuccess) => {
// The main `App` component handles showing the main screen
// and hiding the login screen & login status modal.
log!("Login success! Closing login_status_modal.");
user_id_input.set_text(cx, "");
password_input.set_text(cx, "");
homeserver_input.set_text(cx, "");
login_status_modal_inner.set_title(cx, "Login Succeeded");
login_status_modal_inner.set_status(cx, "You are now logged in.\n\nLoading your rooms now...");
let login_status_modal_button = login_status_modal_inner.button_ref();
login_status_modal_button.set_text(cx, "Okay");
login_status_modal_button.set_enabled(cx, true);
login_status_modal.close(cx);
self.redraw(cx);
}
Some(LoginAction::LoginFailure(error)) => {
login_status_modal_inner.set_title(cx, "Login Failed");
login_status_modal_inner.set_title(cx, "Login Failed.");
login_status_modal_inner.set_status(cx, error);
let login_status_modal_button = login_status_modal_inner.button_ref();
login_status_modal_button.set_text(cx, "Okay");
Expand Down Expand Up @@ -461,8 +457,6 @@ impl MatchEvent for LoginScreen {
#[derive(Clone, DefaultNone, Debug)]
pub enum LoginAction {
/// A positive response from the backend Matrix task to the login screen.
///
/// This is not handled by the login screen itself, but by the main app.
LoginSuccess,
/// A negative response from the backend Matrix task to the login screen.
LoginFailure(String),
Expand Down
2 changes: 1 addition & 1 deletion src/login/login_status_modal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ impl WidgetMatchEvent for LoginStatusModal {
.iter()
.any(|a| matches!(a.downcast_ref(), Some(ModalAction::Dismissed)));

if button.clicked(actions) || modal_dismissed {
if modal_dismissed || button.clicked(actions) {
// Here, we could optionally attempt to cancel the in-flight login request.
// But our background async task doesn't yet support that, so we do nothing atm.

Expand Down

0 comments on commit 958de5d

Please sign in to comment.