diff --git a/ElementX/Sources/Screens/HomeScreen/HomeScreenModels.swift b/ElementX/Sources/Screens/HomeScreen/HomeScreenModels.swift index 8d165fd00..b72fc0745 100644 --- a/ElementX/Sources/Screens/HomeScreen/HomeScreenModels.swift +++ b/ElementX/Sources/Screens/HomeScreen/HomeScreenModels.swift @@ -35,10 +35,6 @@ struct HomeScreenViewState: BindableState { var rooms: [HomeScreenRoom] = [] var isLoadingRooms: Bool = false - var sortedRooms: [HomeScreenRoom] { - rooms.sorted(by: { ($0.displayName ?? $0.id).lowercased() < ($1.displayName ?? $1.id).lowercased() }) - } - var unencryptedDMs: [HomeScreenRoom] { Array(sortedRooms.filter { $0.isDirect && !$0.isEncrypted }) } @@ -54,6 +50,14 @@ struct HomeScreenViewState: BindableState { var encryptedRooms: [HomeScreenRoom] { Array(sortedRooms.filter { !$0.isDirect && $0.isEncrypted }) } + + private var filteredRooms: [HomeScreenRoom] { + rooms.filter { !$0.isSpace && !$0.isTombstoned } + } + + private var sortedRooms: [HomeScreenRoom] { + filteredRooms.sorted(by: { ($0.displayName ?? $0.id).lowercased() < ($1.displayName ?? $1.id).lowercased() }) + } } struct HomeScreenRoom: Identifiable { @@ -68,6 +72,8 @@ struct HomeScreenRoom: Identifiable { let isDirect: Bool let isEncrypted: Bool + let isSpace: Bool + let isTombstoned: Bool } extension MutableCollection where Element == HomeScreenRoom { diff --git a/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift b/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift index 89d0c3d79..fe77a41f1 100644 --- a/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift +++ b/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift @@ -181,6 +181,8 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol topic: roomProxy.topic, lastMessage: roomProxy.lastMessage, isDirect: roomProxy.isDirect, - isEncrypted: roomProxy.isEncrypted) + isEncrypted: roomProxy.isEncrypted, + isSpace: roomProxy.isSpace, + isTombstoned: roomProxy.isTombstoned) } } diff --git a/ElementX/Sources/Services/Room/MockRoomProxy.swift b/ElementX/Sources/Services/Room/MockRoomProxy.swift index 0b32234c4..33ad15af7 100644 --- a/ElementX/Sources/Services/Room/MockRoomProxy.swift +++ b/ElementX/Sources/Services/Room/MockRoomProxy.swift @@ -23,6 +23,7 @@ struct MockRoomProxy: RoomProxyProtocol { let isSpace = Bool.random() let isPublic = Bool.random() let isEncrypted = Bool.random() + let isTombstoned = Bool.random() var callbacks = PassthroughSubject() diff --git a/ElementX/Sources/Services/Room/RoomProxyProtocol.swift b/ElementX/Sources/Services/Room/RoomProxyProtocol.swift index 554d03f0a..3cb3c73a2 100644 --- a/ElementX/Sources/Services/Room/RoomProxyProtocol.swift +++ b/ElementX/Sources/Services/Room/RoomProxyProtocol.swift @@ -27,6 +27,7 @@ protocol RoomProxyProtocol { var isPublic: Bool { get } var isSpace: Bool { get } var isEncrypted: Bool { get } + var isTombstoned: Bool { get } var name: String? { get }