@@ -9,6 +9,7 @@ use serde::{Deserialize, Serialize};
99use crate :: {
1010 avatar_cache:: clear_avatar_cache,
1111 home:: {
12+ invite_modal:: { InviteModalAction , InviteModalWidgetRefExt } ,
1213 main_desktop_ui:: MainDesktopUiAction , navigation_tab_bar:: { NavigationBarAction , SelectedTab } , new_message_context_menu:: NewMessageContextMenuWidgetRefExt , room_screen:: { InviteAction , MessageAction , clear_timeline_states} , rooms_list:: { RoomsListAction , RoomsListRef , RoomsListUpdate , clear_all_invited_rooms, enqueue_rooms_list_update} , room_context_menu:: RoomContextMenuWidgetRefExt
1314 } ,
1415 join_leave_room_modal:: {
@@ -43,6 +44,7 @@ live_design! {
4344 use crate :: shared:: popup_list:: * ;
4445 use crate :: home:: new_message_context_menu:: * ;
4546 use crate :: home:: room_context_menu:: * ;
47+ use crate :: home:: invite_modal:: InviteModal ;
4648 use crate :: shared:: callout_tooltip:: CalloutTooltip ;
4749 use crate :: shared:: image_viewer:: ImageViewer ;
4850 use link:: tsp_link:: TspVerificationModal ;
@@ -128,6 +130,13 @@ live_design! {
128130 }
129131 }
130132
133+ // A modal to invite a user to a room.
134+ invite_modal = <Modal > {
135+ content: {
136+ invite_modal_inner = <InviteModal > { }
137+ }
138+ }
139+
131140 // Show the logout confirmation modal.
132141 logout_confirm_modal = <Modal > {
133142 content: {
@@ -488,14 +497,28 @@ impl MatchEvent for App {
488497 }
489498
490499 // Handle a request to show the invite confirmation modal.
491- if let Some ( InviteAction :: ShowConfirmationModal ( content_opt) ) = action. downcast_ref ( ) {
500+ if let Some ( InviteAction :: ShowInviteConfirmationModal ( content_opt) ) = action. downcast_ref ( ) {
492501 if let Some ( content) = content_opt. borrow_mut ( ) . take ( ) {
493502 invite_confirmation_modal_inner. show ( cx, content) ;
494503 self . ui . modal ( ids ! ( invite_confirmation_modal) ) . open ( cx) ;
495504 }
496505 continue ;
497506 }
498507
508+ // Handle InviteModalAction to open/close the invite modal.
509+ match action. downcast_ref ( ) {
510+ Some ( InviteModalAction :: Open ( room_name_id) ) => {
511+ self . ui . invite_modal ( ids ! ( invite_modal_inner) ) . show ( cx, room_name_id. clone ( ) ) ;
512+ self . ui . modal ( ids ! ( invite_modal) ) . open ( cx) ;
513+ continue ;
514+ }
515+ Some ( InviteModalAction :: Close ) => {
516+ self . ui . modal ( ids ! ( invite_modal) ) . close ( cx) ;
517+ continue ;
518+ }
519+ _ => { }
520+ }
521+
499522 // // message source modal handling.
500523 // match action.as_widget_action().cast() {
501524 // MessageAction::MessageSourceModalOpen { room_id: _, event_id: _, original_json: _ } => {
0 commit comments