Skip to content

Commit

Permalink
Merge pull request project-robius#320 from kevinaboos/login_status_modal
Browse files Browse the repository at this point in the history
Display a modal with login status/errors instead of using a status label
  • Loading branch information
kevinaboos authored Jan 11, 2025
2 parents b4d16f0 + 0fe07d5 commit 4ae6f37
Show file tree
Hide file tree
Showing 17 changed files with 572 additions and 1,412 deletions.
52 changes: 26 additions & 26 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 1 addition & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ version = "0.0.1-pre-alpha"
metadata.makepad-auto-version = "zqpv-Yj-K7WNVK2I8h5Okhho46Q="

[dependencies]
# makepad-widgets = { git = "https://github.com/makepad/makepad", branch = "rik" }
makepad-widgets = { git = "https://github.com/kevinaboos/makepad", branch = "textflow_pub_states" }
makepad-widgets = { git = "https://github.com/makepad/makepad", branch = "rik" }

## Including this crate automatically configures all `robius-*` crates to work with Makepad.
robius-use-makepad = "0.1.1"
Expand Down
23 changes: 14 additions & 9 deletions src/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -160,19 +160,19 @@ impl LiveRegister for App {
}

impl LiveHook for App {
fn after_update_from_doc(&mut self, _cx:&mut Cx) {
self.update_login_visibility();
fn after_update_from_doc(&mut self, cx: &mut Cx) {
self.update_login_visibility(cx);
}
}

impl MatchEvent for App {
fn handle_startup(&mut self, _cx: &mut Cx) {
fn handle_startup(&mut self, cx: &mut Cx) {
// Initialize the project directory here from the main UI thread
// such that background threads/tasks will be able to can access it.
let _app_data_dir = crate::app_data_dir();
log!("App::handle_startup(): app_data_dir: {:?}", _app_data_dir);

self.update_login_visibility();
self.update_login_visibility(cx);

log!("App::handle_startup(): starting matrix sdk loop");
crate::sliding_sync::start_matrix_tokio().unwrap();
Expand All @@ -183,7 +183,7 @@ impl MatchEvent for App {
if let Some(LoginAction::LoginSuccess) = action.downcast_ref() {
log!("Received LoginAction::LoginSuccess, hiding login view.");
self.app_state.logged_in = true;
self.update_login_visibility();
self.update_login_visibility(cx);
self.ui.redraw(cx);
}

Expand Down Expand Up @@ -276,10 +276,15 @@ impl AppMain for App {
}

impl App {
fn update_login_visibility(&self) {
let login_visible = !self.app_state.logged_in;
self.ui.view(id!(login_screen_view)).set_visible(login_visible);
self.ui.view(id!(home_screen_view)).set_visible(!login_visible);
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(show_login);
self.ui.view(id!(home_screen_view)).set_visible(!show_login);
if !show_login {
self.ui
.modal(id!(login_screen_view.login_screen.login_status_modal))
.close(cx);
}
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/home/room_screen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2521,7 +2521,7 @@ fn populate_message_view(
prev_msg_sender == event_tl_item.sender()
&& ts_millis.0
.checked_sub(prev_event_tl_item.timestamp().0)
.map_or(false, |d| d < uint!(600000)) // 10 mins in millis
.is_some_and(|d| d < uint!(600000)) // 10 mins in millis
}
_ => false,
},
Expand Down
16 changes: 9 additions & 7 deletions src/home/rooms_list.rs
Original file line number Diff line number Diff line change
Expand Up @@ -277,16 +277,18 @@ impl RoomDisplayFilterBuilder {
fn matches_room_name(room: &RoomsListEntry, keywords: &str) -> bool {
room.room_name
.as_ref()
.map_or(false, |name| name.to_lowercase().contains(keywords))
.is_some_and(|name| name.to_lowercase().contains(keywords))
}

fn matches_room_alias(room: &RoomsListEntry, keywords: &str) -> bool {
room.canonical_alias
let matches_canonical_alias = room.canonical_alias
.as_ref()
.map_or(false, |alias| alias.as_str().eq_ignore_ascii_case(keywords))
|| room.alt_aliases
.iter()
.any(|alias| alias.as_str().eq_ignore_ascii_case(keywords))
.is_some_and(|alias| alias.as_str().eq_ignore_ascii_case(keywords));
let matches_alt_aliases = room.alt_aliases
.iter()
.any(|alias| alias.as_str().eq_ignore_ascii_case(keywords));

matches_canonical_alias || matches_alt_aliases
}

fn matches_room_tags(room: &RoomsListEntry, keywords: &str) -> bool {
Expand All @@ -305,7 +307,7 @@ impl RoomDisplayFilterBuilder {
}
}

room.tags.as_ref().map_or(false, |room_tags| {
room.tags.as_ref().is_some_and(|room_tags| {
search_tags.iter().all(|search_tag| {
room_tags.iter().any(|(tag_name, _)| is_tag_match(search_tag, tag_name))
})
Expand Down
Loading

0 comments on commit 4ae6f37

Please sign in to comment.