diff --git a/lib/model/message.dart b/lib/model/message.dart index 7ad0fe3ce2..e58049710e 100644 --- a/lib/model/message.dart +++ b/lib/model/message.dart @@ -148,11 +148,16 @@ class MessageStoreImpl with MessageStore { // The interaction between the fields of these events are a bit tricky. // For reference, see: https://zulip.com/api/get-events#update_message - if (event.origTopic == null) { + final origStreamId = event.origStreamId; + final newStreamId = event.newStreamId; // null if topic-only move + final origTopic = event.origTopic; + final newTopic = event.newTopic; + + if (origTopic == null) { // There was no move. assert(() { - if (event.newStreamId != null && event.origStreamId != null - && event.newStreamId != event.origStreamId) { + if (newStreamId != null && origStreamId != null + && newStreamId != origStreamId) { // This should be impossible; `orig_subject` (aka origTopic) is // documented to be present when either the stream or topic changed. debugLog('Malformed UpdateMessageEvent: stream move but no origTopic'); // TODO(log) @@ -162,22 +167,19 @@ class MessageStoreImpl with MessageStore { return; } - if (event.newTopic == null) { + if (newTopic == null) { // The `subject` field (aka newTopic) is documented to be present on moves. assert(debugLog('Malformed UpdateMessageEvent: move but no newTopic')); // TODO(log) return; } - if (event.origStreamId == null) { + if (origStreamId == null) { // The `stream_id` field (aka origStreamId) is documented to be present on moves. assert(debugLog('Malformed UpdateMessageEvent: move but no origStreamId')); // TODO(log) return; } - final newTopic = event.newTopic!; - final newChannelId = event.newStreamId; // null if topic-only move - - if (newChannelId == null - && MessageEditState.topicMoveWasResolveOrUnresolve(event.origTopic!, newTopic)) { + if (newStreamId == null + && MessageEditState.topicMoveWasResolveOrUnresolve(origTopic, newTopic)) { // The topic was only resolved/unresolved. // No change to the messages' editState. return; diff --git a/lib/model/message_list.dart b/lib/model/message_list.dart index e0f59d99c7..4f555f7124 100644 --- a/lib/model/message_list.dart +++ b/lib/model/message_list.dart @@ -474,6 +474,17 @@ class MessageListView with ChangeNotifier, _MessageSequence { notifyListeners(); } + /// Update data derived from the content of the given message. + /// + /// This does not notify listeners. + /// The caller should ensure that happens later. + void messageContentChanged(int messageId) { + final index = _findMessageWithId(messageId); + if (index != -1) { + _reparseContent(index); + } + } + // Repeal the `@protected` annotation that applies on the base implementation, // so we can call this method from [MessageStoreImpl]. @override @@ -497,17 +508,6 @@ class MessageListView with ChangeNotifier, _MessageSequence { } } - /// Update data derived from the content of the given message. - /// - /// This does not notify listeners. - /// The caller should ensure that happens later. - void messageContentChanged(int messageId) { - final index = _findMessageWithId(messageId); - if (index != -1) { - _reparseContent(index); - } - } - /// Called when the app is reassembled during debugging, e.g. for hot reload. /// /// This will redo from scratch any computations we can, such as parsing