Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
31ccf5b
added highlight
alanpoon Apr 3, 2025
8009d1e
added search message logic
alanpoon Apr 11, 2025
0cff367
Merge branch 'main' into search_messages#122
alanpoon Apr 11, 2025
4506ddb
resolve conflict
alanpoon Apr 11, 2025
1620a30
add search_all_room
alanpoon Apr 11, 2025
81a842a
added room_name in search result
alanpoon Apr 12, 2025
52d7efa
added small_state display in search result
alanpoon Apr 12, 2025
6b3fc4b
EventableWrapperETI
alanpoon Apr 13, 2025
a772bc2
before populate_small_state
alanpoon Apr 14, 2025
9c4b11e
migrate to use generic
alanpoon Apr 14, 2025
6d2d63e
Added early abort search message
alanpoon Apr 14, 2025
ea6cb60
t
alanpoon Apr 15, 2025
ef2ddb5
t
alanpoon Apr 15, 2025
5321861
added body_inner
alanpoon Apr 15, 2025
c76173e
fix condensed message in search result
alanpoon Apr 15, 2025
c0e0931
used relations
alanpoon May 10, 2025
497973a
Merge remote-tracking branch 'origin/main' into seacr2
alanpoon May 10, 2025
af68741
rebase
alanpoon May 16, 2025
02b09db
Merge branch 'main' into search_messages_3#122
alanpoon May 16, 2025
ca2ca78
move room_search_result underneath room_screen mod
alanpoon May 19, 2025
fbfb272
Merge branch 'main' into search_messages_3#122
alanpoon May 19, 2025
747cb44
search_button_wrap improvement
alanpoon May 23, 2025
dfa349b
Merge branch 'main' into search_messages_3#122
alanpoon May 23, 2025
3357364
abort previous search request
alanpoon May 23, 2025
687cdf1
allow finding messages in encrypted room
alanpoon May 26, 2025
2c160eb
Merge branch 'search_messages_3#122' of https://github.com/alanpoon/r…
alanpoon May 26, 2025
9a48f94
fix selection
alanpoon May 26, 2025
2d6f5f9
fix clippy
alanpoon May 27, 2025
c86643a
fix spelling
alanpoon May 27, 2025
769c517
remove specific ruma
alanpoon Jun 3, 2025
6d2c06e
don't use trait
alanpoon Jun 3, 2025
1a010bf
separate populate_message_search_view
alanpoon Jun 4, 2025
75aec63
display search result on the right
alanpoon Jun 6, 2025
51d5869
highlight yellow
alanpoon Jun 9, 2025
8314625
rounded view for search result
alanpoon Jun 10, 2025
50d3a5a
revert roomscreen
alanpoon Jun 10, 2025
b0e97af
cleanup
alanpoon Jun 11, 2025
5b8f99a
added date for search result
alanpoon Jun 11, 2025
9290fd8
Change to search_screen to right_panel
alanpoon Jun 13, 2025
8cb2ff0
Merge branch 'main' into search_messages_3#122
alanpoon Jul 16, 2025
31ca5dc
right
alanpoon Jul 16, 2025
6adad73
click search input to open
alanpoon Jul 16, 2025
20db1bd
search
alanpoon Jul 16, 2025
2025fb1
added right panel
alanpoon Jul 17, 2025
fb9b75d
remove cancel_button
alanpoon Jul 18, 2025
bccb820
Fix
alanpoon Jul 18, 2025
62d6612
added doc
alanpoon Jul 18, 2025
69bc0c4
cargo fmt
alanpoon Jul 18, 2025
874e95f
remove unneccessary changes
alanpoon Jul 21, 2025
64ab172
minor code improvement
alanpoon Jul 21, 2025
a830265
Merge branch 'main' into search_messages_3#122
alanpoon Jul 21, 2025
151f123
SearchResultView fix
alanpoon Jul 22, 2025
19e00fb
Merge branch 'main' into search_messages_4#122
alanpoon Jul 22, 2025
efb995e
Save Previous search result
alanpoon Jul 22, 2025
4f81dd8
Added scroll to message in roomscreen
alanpoon Jul 26, 2025
203fefa
Merge branch 'main' into search_messages_3#122
alanpoon Jul 28, 2025
d738c2d
code restructure
alanpoon Jul 28, 2025
98c8715
added constraint to search term length
alanpoon Jul 28, 2025
d4766d6
string optimization
alanpoon Jul 29, 2025
c69e9ba
update cargo lock
alanpoon Jul 29, 2025
609c73c
revert cargo lock
alanpoon Jul 29, 2025
557b0f0
Merge branch 'main' into search_messages_3#122
alanpoon Jul 29, 2025
faaf403
search again button
alanpoon Jul 29, 2025
ffd41d8
Added search input limit as const
alanpoon Aug 1, 2025
568096f
speed up Scroll To Message from search result
alanpoon Aug 5, 2025
aee984c
Merge branch 'main' into search_messages_3#122
alanpoon Aug 6, 2025
2d71975
remove set_room_screen_widget_uid
alanpoon Aug 6, 2025
4003e5c
remove populate_message_search_view's search widget_uid
alanpoon Aug 6, 2025
6fe116f
search_message cleanup
alanpoon Aug 12, 2025
e3de362
minor cleanup
alanpoon Aug 12, 2025
59d7169
Text improvement
alanpoon Aug 13, 2025
3c9d936
change function name
alanpoon Aug 13, 2025
bf71ffd
search_all_rooms_button fix query twice
alanpoon Aug 13, 2025
c5eb255
fix query twice
alanpoon Aug 13, 2025
ce12f4f
Rephrasing
alanpoon Aug 13, 2025
db2f1af
Use 2 dots
alanpoon Aug 13, 2025
bdd4383
add new line
alanpoon Aug 13, 2025
da4c301
Added regex
alanpoon Aug 20, 2025
499c370
Merge branch 'main' into search_messages_3#122
alanpoon Aug 20, 2025
8144a44
Added remove_timeline_loaded_notify
alanpoon Aug 26, 2025
32b0463
Merge branch 'main' into search_messages_3#122
alanpoon Aug 26, 2025
e541b3e
search message improvement
alanpoon Aug 27, 2025
4833fcd
fix clippy
alanpoon Aug 27, 2025
fbb72dc
Merge branch 'main' into search_messages_3#122
alanpoon Sep 26, 2025
c2417e4
remove notify
alanpoon Sep 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Cargo.lock

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

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ bytesize = "2.0"
bitflags = "2.6.0"
indexmap = "2.6.0"
blurhash = { version = "0.2.3", default-features = false }
regex = "1.11.1"

## Dependencies for TSP support.
tsp_sdk = { git = "https://github.com/openwallet-foundation-labs/tsp.git", optional = true, features = ["async", "resolve"] }
Expand Down
21 changes: 19 additions & 2 deletions src/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use makepad_widgets::{makepad_micro_serde::*, *};
use matrix_sdk::ruma::{OwnedRoomId, RoomId};
use crate::{
avatar_cache::clear_avatar_cache, home::{
main_desktop_ui::MainDesktopUiAction, new_message_context_menu::NewMessageContextMenuWidgetRefExt, room_screen::{clear_timeline_states, MessageAction}, rooms_list::{clear_all_invited_rooms, enqueue_rooms_list_update, RoomsListAction, RoomsListRef, RoomsListUpdate}
home_screen::MessageSearchInputAction, main_desktop_ui::MainDesktopUiAction, new_message_context_menu::NewMessageContextMenuWidgetRefExt, room_screen::{clear_timeline_states, MessageAction}, rooms_list::{clear_all_invited_rooms, enqueue_rooms_list_update, RoomsListAction, RoomsListRef, RoomsListUpdate}
}, join_leave_room_modal::{
JoinLeaveModalKind, JoinLeaveRoomModalAction, JoinLeaveRoomModalWidgetRefExt
}, login::login_screen::LoginAction, logout::logout_confirm_modal::{LogoutAction, LogoutConfirmModalAction, LogoutConfirmModalWidgetRefExt}, persistence, profile::user_profile_cache::clear_user_profile_cache, room::BasicRoomDetails, shared::callout_tooltip::{
Expand Down Expand Up @@ -170,6 +170,7 @@ impl LiveRegister for App {
crate::settings::live_design(cx);
crate::room::live_design(cx);
crate::join_leave_room_modal::live_design(cx);
crate::right_drawer::live_design(cx);
crate::verification_modal::live_design(cx);
crate::home::live_design(cx);
crate::profile::live_design(cx);
Expand Down Expand Up @@ -287,6 +288,11 @@ impl MatchEvent for App {
&Scope::default().path,
StackNavigationAction::Push(live_id!(main_content_view))
);
cx.widget_action(
self.ui.widget_uid(),
&Scope::default().path,
MessageSearchInputAction::Show
);
self.ui.redraw(cx);
continue;
}
Expand All @@ -295,10 +301,20 @@ impl MatchEvent for App {
match action.downcast_ref() {
Some(AppStateAction::RoomFocused(selected_room)) => {
self.app_state.selected_room = Some(selected_room.clone());
cx.widget_action(
self.ui.widget_uid(),
&Scope::default().path,
MessageSearchInputAction::Show
);
continue;
}
Some(AppStateAction::FocusNone) => {
self.app_state.selected_room = None;
cx.widget_action(
self.ui.widget_uid(),
&Scope::default().path,
MessageSearchInputAction::Hide
);
continue;
}
Some(AppStateAction::UpgradedInviteToJoinedRoom(room_id)) => {
Expand Down Expand Up @@ -677,7 +693,7 @@ impl Eq for SelectedRoom {}
/// Actions sent to the top-level App in order to update / restore its [`AppState`].
///
/// These are *NOT* widget actions.
#[derive(Debug)]
#[derive(Debug, Clone, Default)]
pub enum AppStateAction {
/// The given room was focused (selected).
RoomFocused(SelectedRoom),
Expand All @@ -698,5 +714,6 @@ pub enum AppStateAction {
room_to_close: Option<OwnedRoomId>,
destination_room: BasicRoomDetails,
},
#[default]
None,
}
112 changes: 108 additions & 4 deletions src/home/home_screen.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use makepad_widgets::*;

use crate::settings::{settings_screen::SettingsScreenWidgetRefExt, SettingsAction};
use crate::{settings::{settings_screen::SettingsScreenWidgetRefExt, SettingsAction}, shared::message_search_input_bar::{MessageSearchAction, MessageSearchInputBarRef, MessageSearchInputBarWidgetExt}};

live_design! {
use link::theme::*;
Expand All @@ -12,8 +12,12 @@ live_design! {
use crate::home::spaces_dock::SpacesDock;
use crate::shared::styles::*;
use crate::shared::room_filter_input_bar::RoomFilterInputBar;
use crate::shared::message_search_input_bar::MessageSearchInputBar;
use crate::shared::icon_button::RobrixIconButton;
use crate::home::main_desktop_ui::MainDesktopUI;
use crate::home::search_message::SearchResultStackView;
use crate::settings::settings_screen::SettingsScreen;
use crate::right_drawer::RightDrawer;

NavigationWrapper = {{NavigationWrapper}} {
view_stack = <StackNavigation> {}
Expand Down Expand Up @@ -52,10 +56,35 @@ live_design! {
width: Fill, height: Fill
flow: Down

<CachedWidget> {
room_filter_input_bar = <RoomFilterInputBar> {}
<View> {
width: Fill, height: Fit
flow: Right,

<CachedWidget> {
room_filter_input_bar = <RoomFilterInputBar> {
align: {x: 0.0 }
}
}
message_search_input_view = <View> {
width: Fill, height: Fit,
visible: false,
align: {x: 1.0},

<CachedWidget> {
message_search_input_bar = <MessageSearchInputBar> {
width: 300,
}
}
}
}

<View> {
width: Fill, height: Fill
flow: Right

<MainDesktopUI> {}
<RightDrawer> {}
}
<MainDesktopUI> {}
}

settings_page = <View> {
Expand Down Expand Up @@ -128,12 +157,56 @@ live_design! {
}
}
}
<View> {
height: Fit,
width: Fill,
align: {x: 1.0 }
<View> {
height: Fit,
width: 140,
<CachedWidget> {
message_search_input_bar = <MessageSearchInputBar> {
width: 300
}
}
}
}
}
}
body = {
main_content = <MainMobileUI> {}
}
}
search_result_view = <SearchResultStackView> {
flow: Overlay
header = {
height: 50.0,
margin: { top: 30.0 },
content = {
flow: Right,
title_container = {
width: 0
}
button_container = <View> {
align: { y: 0.5 }
left_button = <RobrixIconButton> {
draw_icon: {
color: #666;
}
text: "Back"
}
}
<CachedWidget> {
message_search_input_bar = <MessageSearchInputBar> {
width: 300
}
}
}
}
body = {
margin: { top: 80.0 },
}
}
}
}
}
Expand Down Expand Up @@ -188,6 +261,29 @@ impl Widget for HomeScreen {
}
_ => {}
}
match action.as_widget_action().cast() {
MessageSearchInputAction::Show => {
if !cx.has_global::<MessageSearchInputBarRef>() {
if self.view.message_search_input_bar(id!(message_search_input_bar)).borrow().is_some() {
Cx::set_global(cx, self.view.message_search_input_bar(id!(message_search_input_bar)));
}
}
self.view.view(id!(message_search_input_view)).set_visible(cx, true)
},
MessageSearchInputAction::Hide => self.view.view(id!(message_search_input_view)).set_visible(cx, false),
}

if let MessageSearchAction::Clicked = action.as_widget_action().cast() {
if !self.view
.stack_navigation(id!(view_stack))
.stack_view_ids().contains(&live_id!(search_result_view)) {
cx.widget_action(
self.widget_uid(),
&Scope::default().path,
StackNavigationAction::Push(live_id!(search_result_view))
);
}
}
}
}

Expand Down Expand Up @@ -242,3 +338,11 @@ impl MatchEvent for NavigationWrapper {
.handle_stack_view_actions(cx, actions);
}
}

/// An action that controls the visibility of the message search input bar.
#[derive(Clone, Debug, Default)]
pub enum MessageSearchInputAction {
#[default]
Show,
Hide,
}
21 changes: 19 additions & 2 deletions src/home/main_desktop_ui.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use matrix_sdk::ruma::OwnedRoomId;
use tokio::sync::Notify;
use std::{collections::HashMap, sync::Arc};

use crate::{app::{AppState, AppStateAction, SelectedRoom}, utils::room_name_or_id};
use crate::{app::{AppState, AppStateAction, SelectedRoom}, shared::message_search_input_bar::{MessageSearchAction, MessageSearchInputBarRef}, utils::room_name_or_id};
use super::{invite_screen::InviteScreenWidgetRefExt, room_screen::RoomScreenWidgetRefExt, rooms_list::RoomsListAction};

live_design! {
Expand Down Expand Up @@ -172,7 +172,13 @@ impl MainDesktopUI {
}

self.open_rooms.insert(room_id_as_live_id, room.clone());
self.most_recently_selected_room = Some(room);
self.most_recently_selected_room = Some(room.clone());
// Call AppStateAction::RoomFocused action to display the search message input box when a room is open.
cx.widget_action(
self.widget_uid(),
&HeapLiveIdPath::default(),
AppStateAction::RoomFocused(room)
);
}

/// Closes a tab in the dock and focuses on the latest open room.
Expand Down Expand Up @@ -206,6 +212,10 @@ impl MainDesktopUI {
dock.close_tab(cx, tab_id);
self.tab_to_close = None;
self.open_rooms.remove(&tab_id);
// Clear the search input when a room is closed
cx.get_global::<MessageSearchInputBarRef>().set_text("");
// Clear the search results when a room is closed
cx.widget_action(self.widget_uid(), &Scope::empty().path, MessageSearchAction::Changed(String::new()));
}

/// Closes all tabs
Expand Down Expand Up @@ -384,6 +394,13 @@ impl WidgetMatchEvent for MainDesktopUI {

if let Some(ref selected_room) = &app_state.selected_room {
self.focus_or_create_tab(cx, selected_room.clone());
} else {
// If there is no selected room, focus on the home tab.
cx.widget_action(
self.widget_uid(),
&HeapLiveIdPath::default(),
AppStateAction::FocusNone,
);
}
self.view.redraw(cx);
}
Expand Down
2 changes: 2 additions & 0 deletions src/home/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ pub mod spaces_dock;
pub mod welcome_screen;
pub mod event_reaction_list;
pub mod new_message_context_menu;
pub mod search_message;

pub fn live_design(cx: &mut Cx) {
home_screen::live_design(cx);
Expand All @@ -42,4 +43,5 @@ pub fn live_design(cx: &mut Cx) {
welcome_screen::live_design(cx);
light_themed_dock::live_design(cx);
event_reaction_list::live_design(cx);
search_message::live_design(cx);
}
Loading
Loading