@@ -51,7 +51,7 @@ pub enum RoomListError {
51
51
#[ error( "Event cache ran into an error: {error}" ) ]
52
52
EventCache { error : String } ,
53
53
#[ error( "The requested room doesn't match the membership requirements {expected:?}, observed {actual:?}" ) ]
54
- IncorrectRoomMembership { expected : Membership , actual : Membership } ,
54
+ IncorrectRoomMembership { expected : Vec < Membership > , actual : Membership } ,
55
55
}
56
56
57
57
impl From < matrix_sdk_ui:: room_list_service:: Error > for RoomListError {
@@ -584,16 +584,32 @@ impl RoomListItem {
584
584
}
585
585
586
586
/// Builds a `Room` FFI from an invited room without initializing its
587
- /// internal timeline
587
+ /// internal timeline.
588
588
///
589
- /// An error will be returned if the room is a state different than invited
589
+ /// An error will be returned if the room is a state different than invited.
590
590
///
591
591
/// ⚠️ Holding on to this room instance after it has been joined is not
592
- /// safe. Use `full_room` instead
592
+ /// safe. Use `full_room` instead.
593
+ #[ deprecated( note = "Please use `room_without_timeline` instead." ) ]
593
594
fn invited_room ( & self ) -> Result < Arc < Room > , RoomListError > {
594
- if !matches ! ( self . membership( ) , Membership :: Invited ) {
595
+ self . room_without_timeline ( )
596
+ }
597
+
598
+ /// Builds a `Room` FFI from a room without initializing its internal
599
+ /// timeline.
600
+ ///
601
+ /// An error will be returned if the room is a state other than invited
602
+ /// or knocked, the 2 states that would match this use case.
603
+ ///
604
+ /// ⚠️ Holding on to this room instance after it has been joined is not
605
+ /// safe. Use `full_room` instead.
606
+ fn room_without_timeline ( & self ) -> Result < Arc < Room > , RoomListError > {
607
+ let membership = self . membership ( ) ;
608
+ if !matches ! ( membership, Membership :: Invited )
609
+ && !matches ! ( self . membership( ) , Membership :: Knocked )
610
+ {
595
611
return Err ( RoomListError :: IncorrectRoomMembership {
596
- expected : Membership :: Invited ,
612
+ expected : vec ! [ Membership :: Invited , Membership :: Knocked ] ,
597
613
actual : self . membership ( ) ,
598
614
} ) ;
599
615
}
@@ -608,7 +624,7 @@ impl RoomListItem {
608
624
fn full_room ( & self ) -> Result < Arc < Room > , RoomListError > {
609
625
if !matches ! ( self . membership( ) , Membership :: Joined ) {
610
626
return Err ( RoomListError :: IncorrectRoomMembership {
611
- expected : Membership :: Joined ,
627
+ expected : vec ! [ Membership :: Joined ] ,
612
628
actual : self . membership ( ) ,
613
629
} ) ;
614
630
}
0 commit comments