mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 06:55:59 +00:00
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:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
+23
-22
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user