@@ -173,16 +173,14 @@ class MessageStoreImpl with MessageStore {
173
173
// For reference, see: https://zulip.com/api/get-events#update_message
174
174
175
175
final origStreamId = event.origStreamId;
176
- final newStreamId = event.newStreamId; // null if topic-only move
177
176
final origTopic = event.origTopic;
178
- final newTopic = event.newTopic;
179
177
final propagateMode = event.propagateMode;
180
178
181
179
if (origTopic == null ) {
182
180
// There was no move.
183
181
assert (() {
184
- if (newStreamId != null && origStreamId != null
185
- && newStreamId != origStreamId) {
182
+ if (event. newStreamId != null && origStreamId != null
183
+ && event. newStreamId != origStreamId) {
186
184
// This should be impossible; `orig_subject` (aka origTopic) is
187
185
// documented to be present when either the stream or topic changed.
188
186
debugLog ('Malformed UpdateMessageEvent: stream move but no origTopic' ); // TODO(log)
@@ -192,12 +190,6 @@ class MessageStoreImpl with MessageStore {
192
190
return ;
193
191
}
194
192
195
- if (newStreamId == null && newTopic == null ) {
196
- // If neither the channel nor topic name changed, nothing moved.
197
- // In that case `orig_subject` (aka origTopic) should have been null.
198
- assert (debugLog ('Malformed UpdateMessageEvent: move but no newStreamId or newTopic' )); // TODO(log)
199
- return ;
200
- }
201
193
if (origStreamId == null ) {
202
194
// The `stream_id` field (aka origStreamId) is documented to be present on moves.
203
195
assert (debugLog ('Malformed UpdateMessageEvent: move but no origStreamId' )); // TODO(log)
@@ -209,8 +201,17 @@ class MessageStoreImpl with MessageStore {
209
201
return ;
210
202
}
211
203
212
- final wasResolveOrUnresolve = (newStreamId == null
213
- && MessageEditState .topicMoveWasResolveOrUnresolve (origTopic, newTopic! ));
204
+ final newStreamId = event.newStreamId ?? origStreamId;
205
+ final newTopic = event.newTopic ?? origTopic;
206
+ if (newStreamId == origStreamId && newTopic == origTopic) {
207
+ // If neither the channel nor topic name changed, nothing moved.
208
+ // In that case `orig_subject` (aka origTopic) should have been null.
209
+ assert (debugLog ('Malformed UpdateMessageEvent: move but no newStreamId or newTopic' )); // TODO(log)
210
+ return ;
211
+ }
212
+
213
+ final wasResolveOrUnresolve = newStreamId == origStreamId
214
+ && MessageEditState .topicMoveWasResolveOrUnresolve (origTopic, newTopic);
214
215
215
216
for (final messageId in event.messageIds) {
216
217
final message = messages[messageId];
@@ -221,14 +222,14 @@ class MessageStoreImpl with MessageStore {
221
222
continue ;
222
223
}
223
224
224
- if (newStreamId != null ) {
225
+ if (newStreamId != origStreamId ) {
225
226
message.streamId = newStreamId;
226
227
// See [StreamMessage.displayRecipient] on why the invalidation is
227
228
// needed.
228
229
message.displayRecipient = null ;
229
230
}
230
231
231
- if (newTopic != null ) {
232
+ if (newTopic != origTopic ) {
232
233
message.topic = newTopic;
233
234
}
234
235
@@ -241,9 +242,9 @@ class MessageStoreImpl with MessageStore {
241
242
for (final view in _messageListViews) {
242
243
view.messagesMoved (
243
244
origStreamId: origStreamId,
244
- newStreamId: newStreamId ?? origStreamId ,
245
+ newStreamId: newStreamId,
245
246
origTopic: origTopic,
246
- newTopic: newTopic ?? origTopic ,
247
+ newTopic: newTopic,
247
248
messageIds: event.messageIds,
248
249
propagateMode: propagateMode,
249
250
);
0 commit comments