Revert "Show room member role changes in the timeline." (#2573)

Until we can handle filtering Rust side, this causes more issues than its worth.
This commit is contained in:
Doug
2024-03-14 11:01:23 +00:00
committed by GitHub
parent f4734a44d1
commit c56a98033d
4 changed files with 4 additions and 115 deletions
@@ -683,6 +683,7 @@ class ClientProxy: ClientProxyProtocol {
.roomHistoryVisibility,
.roomJoinRules,
.roomPinnedEvents,
.roomPowerLevels,
.roomServerAcl,
.roomTombstone,
.spaceChild,
@@ -151,10 +151,6 @@ struct RoomStateEventStringBuilder {
case (nil, true):
return L10n.stateEventRoomNameRemovedByYou
}
case .roomPowerLevels(let users, let previous):
let newRoles = users.compactMap { userRoleChanged(userID: $0.key, powerLevel: $0.value, previous: previous?[$0.key]) }
guard !newRoles.isEmpty else { return nil }
return newRoles.formatted(.list(type: .and))
case .roomThirdPartyInvite(let displayName):
guard let displayName else {
MXLog.error("roomThirdPartyInvite undisplayable due to missing name.")
@@ -177,6 +173,8 @@ struct RoomStateEventStringBuilder {
case (nil, true):
return L10n.stateEventRoomTopicRemovedByYou
}
case .roomPowerLevels: // Long term we might show only the user changes, but we need an SDK filter to fix read receipts in that case.
break
case .policyRuleRoom, .policyRuleServer, .policyRuleUser: // No strings available.
break
case .roomAliases, .roomCanonicalAlias: // Doesn't provide the alias.
@@ -198,26 +196,4 @@ struct RoomStateEventStringBuilder {
MXLog.verbose("Filtering timeline item for state: \(state)")
return nil
}
private func userRoleChanged(userID: String, powerLevel: Int64, previous: Int64?) -> String? {
let previous = previous ?? 0 // TODO: Include the previous default in the SDK item.
let role = suggestedRoleForPowerLevel(powerLevel: powerLevel)
let previousRole = suggestedRoleForPowerLevel(powerLevel: previous)
guard role != previousRole else { return nil }
let isPromotion = powerLevel > previous
return switch (role, isPromotion) {
case (.user, false):
L10n.stateEventDemotedToMember(userID)
case (.moderator, true):
L10n.stateEventPromotedToModerator(userID)
case (.moderator, false):
L10n.stateEventDemotedToModerator(userID)
case (.administrator, true):
L10n.stateEventPromotedToAdministrator(userID)
default:
nil
}
}
}
@@ -89,93 +89,4 @@ class RoomStateEventStringBuilderTests: XCTestCase {
memberIsYou: sender.id == userID)
XCTAssertEqual(string, expectedString)
}
// MARK: - User Power Levels
let aliceID = "@alice"
let bobID = "@bob"
func testUserPowerLevelsPromotion() {
var string = stringBuilder.buildString(for: .roomPowerLevels(users: [aliceID: suggestedPowerLevelForRole(role: .moderator)],
previous: [aliceID: suggestedPowerLevelForRole(role: .user)]),
sender: TimelineItemSender(id: ""),
isOutgoing: false)
XCTAssertEqual(string, L10n.stateEventPromotedToModerator(aliceID))
string = stringBuilder.buildString(for: .roomPowerLevels(users: [aliceID: suggestedPowerLevelForRole(role: .administrator)],
previous: [aliceID: suggestedPowerLevelForRole(role: .user)]),
sender: TimelineItemSender(id: ""),
isOutgoing: false)
XCTAssertEqual(string, L10n.stateEventPromotedToAdministrator(aliceID))
string = stringBuilder.buildString(for: .roomPowerLevels(users: [aliceID: suggestedPowerLevelForRole(role: .administrator)],
previous: [aliceID: suggestedPowerLevelForRole(role: .moderator)]),
sender: TimelineItemSender(id: ""),
isOutgoing: false)
XCTAssertEqual(string, L10n.stateEventPromotedToAdministrator(aliceID))
}
func testUserPowerLevelsDemotion() {
var string = stringBuilder.buildString(for: .roomPowerLevels(users: [aliceID: suggestedPowerLevelForRole(role: .moderator)],
previous: [aliceID: suggestedPowerLevelForRole(role: .administrator)]),
sender: TimelineItemSender(id: ""),
isOutgoing: false)
XCTAssertEqual(string, L10n.stateEventDemotedToModerator(aliceID))
string = stringBuilder.buildString(for: .roomPowerLevels(users: [aliceID: suggestedPowerLevelForRole(role: .user)],
previous: [aliceID: suggestedPowerLevelForRole(role: .administrator)]),
sender: TimelineItemSender(id: ""),
isOutgoing: false)
XCTAssertEqual(string, L10n.stateEventDemotedToMember(aliceID))
string = stringBuilder.buildString(for: .roomPowerLevels(users: [aliceID: suggestedPowerLevelForRole(role: .user)],
previous: [aliceID: suggestedPowerLevelForRole(role: .moderator)]),
sender: TimelineItemSender(id: ""),
isOutgoing: false)
XCTAssertEqual(string, L10n.stateEventDemotedToMember(aliceID))
}
func testMultipleUserPowerLevels() {
let new = [aliceID: suggestedPowerLevelForRole(role: .administrator),
bobID: suggestedPowerLevelForRole(role: .user)]
let previous = [aliceID: suggestedPowerLevelForRole(role: .user),
bobID: suggestedPowerLevelForRole(role: .moderator)]
let string = stringBuilder.buildString(for: .roomPowerLevels(users: new, previous: previous),
sender: TimelineItemSender(id: ""),
isOutgoing: false)
XCTAssertEqual(string?.contains(L10n.stateEventPromotedToAdministrator(aliceID)), true)
XCTAssertEqual(string?.contains(L10n.stateEventDemotedToMember(bobID)), true)
}
func testInvalidUserPowerLevels() {
// Admin demotions aren't relevant.
var string = stringBuilder.buildString(for: .roomPowerLevels(users: [aliceID: 100],
previous: [aliceID: 200]),
sender: TimelineItemSender(id: ""),
isOutgoing: false)
XCTAssertNil(string)
// User promotions aren't relevant.
string = stringBuilder.buildString(for: .roomPowerLevels(users: [aliceID: 0],
previous: [aliceID: -100]),
sender: TimelineItemSender(id: ""),
isOutgoing: false)
XCTAssertNil(string)
// Or more generally, any change within the same role isn't relevant either.
string = stringBuilder.buildString(for: .roomPowerLevels(users: [aliceID: 75],
previous: [aliceID: 60]),
sender: TimelineItemSender(id: ""),
isOutgoing: false)
XCTAssertNil(string)
let new = [aliceID: 100,
bobID: suggestedPowerLevelForRole(role: .user)]
let previous = [aliceID: 200,
bobID: suggestedPowerLevelForRole(role: .moderator)]
string = stringBuilder.buildString(for: .roomPowerLevels(users: new, previous: previous),
sender: TimelineItemSender(id: ""),
isOutgoing: false)
XCTAssertEqual(string, L10n.stateEventDemotedToMember(bobID))
}
}
+1
View File
@@ -0,0 +1 @@
Stop showing that a user's role has changed in the room timeline.