Use local room list sorting from Rust. (#2978)

* Switch to the new local room list sorting API

* Get rid of the RoomSummary enum, replace it by the inner RoomSummaryDetails

* And finally, rename RoomSummaryDetails to RoomSummary

* Fix a bunch of warnings

* Small tidy up post rebase/review.

- Remove unused invalidated property.
- Rename some RoomSummary instances to summary instead of details.
- Fix tests with missing roomListItem's.

* Update snapshots

---------

Co-authored-by: Doug <douglase@element.io>
This commit is contained in:
Stefan Ceriu
2024-07-05 12:10:53 +03:00
committed by GitHub
parent c024702d50
commit d71c8c4e83
26 changed files with 556 additions and 608 deletions
+30 -29
View File
@@ -21,7 +21,7 @@ import XCTest
@MainActor
class HomeScreenRoomTests: XCTestCase {
var roomSummaryDetails: RoomSummaryDetails!
var roomSummary: RoomSummary!
// swiftlint:disable:next function_parameter_count
func setupRoomSummary(isMarkedUnread: Bool,
@@ -30,23 +30,24 @@ class HomeScreenRoomTests: XCTestCase {
unreadNotificationsCount: UInt,
notificationMode: RoomNotificationModeProxy,
hasOngoingCall: Bool) {
roomSummaryDetails = RoomSummaryDetails(id: "Test room",
isInvite: false,
inviter: nil,
name: "Test room",
isDirect: false,
avatarURL: nil,
heroes: [],
lastMessage: nil,
lastMessageFormattedTimestamp: nil,
unreadMessagesCount: unreadMessagesCount,
unreadMentionsCount: unreadMentionsCount,
unreadNotificationsCount: unreadNotificationsCount,
notificationMode: notificationMode,
canonicalAlias: nil,
hasOngoingCall: hasOngoingCall,
isMarkedUnread: isMarkedUnread,
isFavourite: false)
roomSummary = RoomSummary(roomListItem: .init(noPointer: .init()),
id: "Test room",
isInvite: false,
inviter: nil,
name: "Test room",
isDirect: false,
avatarURL: nil,
heroes: [],
lastMessage: nil,
lastMessageFormattedTimestamp: nil,
unreadMessagesCount: unreadMessagesCount,
unreadMentionsCount: unreadMentionsCount,
unreadNotificationsCount: unreadNotificationsCount,
notificationMode: notificationMode,
canonicalAlias: nil,
hasOngoingCall: hasOngoingCall,
isMarkedUnread: isMarkedUnread,
isFavourite: false)
}
func testNoBadge() {
@@ -57,7 +58,7 @@ class HomeScreenRoomTests: XCTestCase {
notificationMode: .allMessages,
hasOngoingCall: false)
let room = HomeScreenRoom(details: roomSummaryDetails, invalidated: false, hideUnreadMessagesBadge: false)
let room = HomeScreenRoom(summary: roomSummary, hideUnreadMessagesBadge: false)
XCTAssertFalse(room.isHighlighted)
XCTAssertFalse(room.badges.isDotShown)
@@ -74,7 +75,7 @@ class HomeScreenRoomTests: XCTestCase {
notificationMode: .allMessages,
hasOngoingCall: true)
let room = HomeScreenRoom(details: roomSummaryDetails, invalidated: false, hideUnreadMessagesBadge: false)
let room = HomeScreenRoom(summary: roomSummary, hideUnreadMessagesBadge: false)
XCTAssertTrue(room.isHighlighted)
XCTAssertTrue(room.badges.isDotShown)
@@ -91,7 +92,7 @@ class HomeScreenRoomTests: XCTestCase {
notificationMode: .allMessages,
hasOngoingCall: false)
let room = HomeScreenRoom(details: roomSummaryDetails, invalidated: false, hideUnreadMessagesBadge: false)
let room = HomeScreenRoom(summary: roomSummary, hideUnreadMessagesBadge: false)
XCTAssertFalse(room.isHighlighted)
XCTAssertTrue(room.badges.isDotShown)
@@ -108,7 +109,7 @@ class HomeScreenRoomTests: XCTestCase {
notificationMode: .allMessages,
hasOngoingCall: false)
let room = HomeScreenRoom(details: roomSummaryDetails, invalidated: false, hideUnreadMessagesBadge: false)
let room = HomeScreenRoom(summary: roomSummary, hideUnreadMessagesBadge: false)
XCTAssertTrue(room.isHighlighted)
XCTAssertTrue(room.badges.isDotShown)
@@ -125,7 +126,7 @@ class HomeScreenRoomTests: XCTestCase {
notificationMode: .allMessages,
hasOngoingCall: false)
let room = HomeScreenRoom(details: roomSummaryDetails, invalidated: false, hideUnreadMessagesBadge: false)
let room = HomeScreenRoom(summary: roomSummary, hideUnreadMessagesBadge: false)
XCTAssertTrue(room.isHighlighted)
XCTAssertTrue(room.badges.isDotShown)
@@ -142,7 +143,7 @@ class HomeScreenRoomTests: XCTestCase {
notificationMode: .allMessages,
hasOngoingCall: true)
let room = HomeScreenRoom(details: roomSummaryDetails, invalidated: false, hideUnreadMessagesBadge: false)
let room = HomeScreenRoom(summary: roomSummary, hideUnreadMessagesBadge: false)
XCTAssertFalse(room.isHighlighted)
XCTAssertFalse(room.badges.isDotShown)
@@ -159,7 +160,7 @@ class HomeScreenRoomTests: XCTestCase {
notificationMode: .mentionsAndKeywordsOnly,
hasOngoingCall: false)
let room = HomeScreenRoom(details: roomSummaryDetails, invalidated: false, hideUnreadMessagesBadge: false)
let room = HomeScreenRoom(summary: roomSummary, hideUnreadMessagesBadge: false)
XCTAssertFalse(room.isHighlighted)
XCTAssertTrue(room.badges.isDotShown)
@@ -176,7 +177,7 @@ class HomeScreenRoomTests: XCTestCase {
notificationMode: .mentionsAndKeywordsOnly,
hasOngoingCall: false)
let room = HomeScreenRoom(details: roomSummaryDetails, invalidated: false, hideUnreadMessagesBadge: true)
let room = HomeScreenRoom(summary: roomSummary, hideUnreadMessagesBadge: true)
XCTAssertFalse(room.isHighlighted)
XCTAssertFalse(room.badges.isDotShown)
@@ -195,7 +196,7 @@ class HomeScreenRoomTests: XCTestCase {
notificationMode: .allMessages,
hasOngoingCall: false)
let room = HomeScreenRoom(details: roomSummaryDetails, invalidated: false, hideUnreadMessagesBadge: false)
let room = HomeScreenRoom(summary: roomSummary, hideUnreadMessagesBadge: false)
XCTAssertTrue(room.isHighlighted)
XCTAssertTrue(room.badges.isDotShown)
@@ -212,7 +213,7 @@ class HomeScreenRoomTests: XCTestCase {
notificationMode: .allMessages,
hasOngoingCall: false)
let room = HomeScreenRoom(details: roomSummaryDetails, invalidated: false, hideUnreadMessagesBadge: false)
let room = HomeScreenRoom(summary: roomSummary, hideUnreadMessagesBadge: false)
XCTAssertTrue(room.isHighlighted)
XCTAssertTrue(room.badges.isDotShown)
@@ -229,7 +230,7 @@ class HomeScreenRoomTests: XCTestCase {
notificationMode: .mute,
hasOngoingCall: true)
let room = HomeScreenRoom(details: roomSummaryDetails, invalidated: false, hideUnreadMessagesBadge: false)
let room = HomeScreenRoom(summary: roomSummary, hideUnreadMessagesBadge: false)
XCTAssertTrue(room.isHighlighted)
XCTAssertTrue(room.badges.isDotShown)
+19 -18
View File
@@ -81,29 +81,30 @@ class LoggingTests: XCTestCase {
XCTAssertTrue(logFile.lastPathComponent.contains(target))
}
func validateRoomSummaryContentIsRedacted() throws {
// Given a room summary that contains sensitive information
let roomName = "Private Conversation"
let lastMessage = "Secret information"
let heroName = "Pseudonym"
let roomSummary = RoomSummaryDetails(id: "myroomid",
isInvite: false,
inviter: nil,
name: roomName,
isDirect: true,
avatarURL: nil,
heroes: [.init(userID: "", displayName: heroName)],
lastMessage: AttributedString(lastMessage),
lastMessageFormattedTimestamp: "Now",
unreadMessagesCount: 0,
unreadMentionsCount: 0,
unreadNotificationsCount: 0,
notificationMode: nil,
canonicalAlias: nil,
hasOngoingCall: false,
isMarkedUnread: false,
isFavourite: false)
let roomSummary = RoomSummary(roomListItem: .init(noPointer: .init()),
id: "myroomid",
isInvite: false,
inviter: nil,
name: roomName,
isDirect: true,
avatarURL: nil,
heroes: [.init(userID: "", displayName: heroName)],
lastMessage: AttributedString(lastMessage),
lastMessageFormattedTimestamp: "Now",
unreadMessagesCount: 0,
unreadMentionsCount: 0,
unreadNotificationsCount: 0,
notificationMode: nil,
canonicalAlias: nil,
hasOngoingCall: false,
isMarkedUnread: false,
isFavourite: false)
// When logging that value
MXLog.info(roomSummary)
@@ -18,13 +18,13 @@ import XCTest
@testable import ElementX
class RoomSummaryDetailsTests: XCTestCase {
class RoomSummaryTests: XCTestCase {
// swiftlint:disable:next large_tuple
let roomDetails: (id: String, name: String, avatarURL: URL) = ("room_id", "Room Name", "mxc://hs.tld/room/avatar")
let heroes = [UserProfileProxy(userID: "hero_1", displayName: "Hero 1", avatarURL: "mxc://hs.tld/user/avatar")]
func testRoomAvatar() {
let details = makeDetails(isDirect: false, hasRoomAvatar: true)
let details = makeSummary(isDirect: false, hasRoomAvatar: true)
switch details.avatar {
case .room(let id, let name, let avatarURL):
@@ -37,7 +37,7 @@ class RoomSummaryDetailsTests: XCTestCase {
}
func testDMAvatarSet() {
let details = makeDetails(isDirect: true, hasRoomAvatar: true)
let details = makeSummary(isDirect: true, hasRoomAvatar: true)
switch details.avatar {
case .room(let id, let name, let avatarURL):
@@ -50,7 +50,7 @@ class RoomSummaryDetailsTests: XCTestCase {
}
func testDMAvatarNotSet() {
let details = makeDetails(isDirect: true, hasRoomAvatar: false)
let details = makeSummary(isDirect: true, hasRoomAvatar: false)
switch details.avatar {
case .room:
@@ -62,23 +62,24 @@ class RoomSummaryDetailsTests: XCTestCase {
// MARK: - Helpers
func makeDetails(isDirect: Bool, hasRoomAvatar: Bool) -> RoomSummaryDetails {
RoomSummaryDetails(id: roomDetails.id,
isInvite: false,
inviter: nil,
name: roomDetails.name,
isDirect: isDirect,
avatarURL: hasRoomAvatar ? roomDetails.avatarURL : nil,
heroes: heroes,
lastMessage: nil,
lastMessageFormattedTimestamp: nil,
unreadMessagesCount: 0,
unreadMentionsCount: 0,
unreadNotificationsCount: 0,
notificationMode: nil,
canonicalAlias: nil,
hasOngoingCall: false,
isMarkedUnread: false,
isFavourite: false)
func makeSummary(isDirect: Bool, hasRoomAvatar: Bool) -> RoomSummary {
RoomSummary(roomListItem: .init(noPointer: .init()),
id: roomDetails.id,
isInvite: false,
inviter: nil,
name: roomDetails.name,
isDirect: isDirect,
avatarURL: hasRoomAvatar ? roomDetails.avatarURL : nil,
heroes: heroes,
lastMessage: nil,
lastMessageFormattedTimestamp: nil,
unreadMessagesCount: 0,
unreadMentionsCount: 0,
unreadNotificationsCount: 0,
notificationMode: nil,
canonicalAlias: nil,
hasOngoingCall: false,
isMarkedUnread: false,
isFavourite: false)
}
}