diff --git a/lib/api/model/model.dart b/lib/api/model/model.dart index fa3952e4a5..a2cff09b54 100644 --- a/lib/api/model/model.dart +++ b/lib/api/model/model.dart @@ -661,6 +661,9 @@ extension type const TopicName(String _value) implements String { /// The string this topic is identified by in the Zulip API. String get apiName => _value; + /// The key to use for "same topic as" comparisons. + String canonicalize() => apiName.toLowerCase(); + TopicName.fromJson(this._value); String toJson() => apiName; diff --git a/lib/model/message_list.dart b/lib/model/message_list.dart index 104ecf368e..670785ac4e 100644 --- a/lib/model/message_list.dart +++ b/lib/model/message_list.dart @@ -352,7 +352,7 @@ mixin _MessageSequence { bool haveSameRecipient(Message prevMessage, Message message) { if (prevMessage is StreamMessage && message is StreamMessage) { if (prevMessage.streamId != message.streamId) return false; - if (prevMessage.topic.toLowerCase() != message.topic.toLowerCase()) return false; + if (prevMessage.topic.canonicalize() != message.topic.canonicalize()) return false; } else if (prevMessage is DmMessage && message is DmMessage) { if (!_equalIdSequences(prevMessage.allRecipientIds, message.allRecipientIds)) { return false;