From 62611be006a18322501c2da64d0fc75be50d2d07 Mon Sep 17 00:00:00 2001 From: Doug <6060466+pixlwave@users.noreply.github.com> Date: Mon, 27 Jan 2025 11:44:21 +0000 Subject: [PATCH] Show a blank topic as removed. (#3706) --- .../RoomStateEventStringBuilder.swift | 10 ++++----- .../RoomStateEventStringBuilderTests.swift | 22 +++++++++++++++++++ 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/ElementX/Sources/Services/Timeline/TimelineItems/RoomStateEventStringBuilder.swift b/ElementX/Sources/Services/Timeline/TimelineItems/RoomStateEventStringBuilder.swift index 27a0f0cca..2d2fa3c7f 100644 --- a/ElementX/Sources/Services/Timeline/TimelineItems/RoomStateEventStringBuilder.swift +++ b/ElementX/Sources/Services/Timeline/TimelineItems/RoomStateEventStringBuilder.swift @@ -169,13 +169,13 @@ struct RoomStateEventStringBuilder { } case .roomTopic(let topic): switch (topic, isOutgoing) { - case (.some(let topic), false): + case (.some(let topic), false) where !topic.isBlank: return L10n.stateEventRoomTopicChanged(displayName, topic) - case (nil, false): + case (_, false): return L10n.stateEventRoomTopicRemoved(displayName) - case (.some(let name), true): - return L10n.stateEventRoomTopicChangedByYou(name) - case (nil, true): + case (.some(let topic), true) where !topic.isBlank: + return L10n.stateEventRoomTopicChangedByYou(topic) + case (_, true): return L10n.stateEventRoomTopicRemovedByYou } case .roomPinnedEvents(let change): diff --git a/UnitTests/Sources/RoomStateEventStringBuilderTests.swift b/UnitTests/Sources/RoomStateEventStringBuilderTests.swift index 14dbcdf9a..0445bc89b 100644 --- a/UnitTests/Sources/RoomStateEventStringBuilderTests.swift +++ b/UnitTests/Sources/RoomStateEventStringBuilderTests.swift @@ -80,4 +80,26 @@ class RoomStateEventStringBuilderTests: XCTestCase { memberIsYou: sender.id == userID) XCTAssertEqual(string, expectedString) } + + func testTopicChanges() { + let you = TimelineItemSender(id: userID, displayName: "Alice") + let other = TimelineItemSender(id: "@bob:matrix.org", displayName: "Bob") + + let newTopic = "New topic" + var string = stringBuilder.buildString(for: .roomTopic(topic: newTopic), sender: you, isOutgoing: true) + XCTAssertEqual(string, L10n.stateEventRoomTopicChangedByYou(newTopic)) + string = stringBuilder.buildString(for: .roomTopic(topic: newTopic), sender: other, isOutgoing: false) + XCTAssertEqual(string, L10n.stateEventRoomTopicChanged(other.displayName ?? "", newTopic)) + + let emptyTopic = "" + string = stringBuilder.buildString(for: .roomTopic(topic: emptyTopic), sender: you, isOutgoing: true) + XCTAssertEqual(string, L10n.stateEventRoomTopicRemovedByYou) + string = stringBuilder.buildString(for: .roomTopic(topic: emptyTopic), sender: other, isOutgoing: false) + XCTAssertEqual(string, L10n.stateEventRoomTopicRemoved(other.displayName ?? "")) + + string = stringBuilder.buildString(for: .roomTopic(topic: nil), sender: you, isOutgoing: true) + XCTAssertEqual(string, L10n.stateEventRoomTopicRemovedByYou) + string = stringBuilder.buildString(for: .roomTopic(topic: nil), sender: other, isOutgoing: false) + XCTAssertEqual(string, L10n.stateEventRoomTopicRemoved(other.displayName ?? "")) + } }