@@ -173,44 +173,39 @@ 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
176
+ final newStreamId = event.newStreamId ?? origStreamId;
177
177
final origTopic = event.origTopic;
178
- final newTopic = event.newTopic;
178
+ final newTopic = event.newTopic ?? origTopic ;
179
179
final propagateMode = event.propagateMode;
180
180
181
- if (origTopic == null ) {
181
+ if (origTopic == newTopic && origStreamId == newStreamId) {
182
+ assert (propagateMode == null ,
183
+ 'Malformed UpdateMessageEvent: incoherent message-move fields; '
184
+ 'propagate_mode present but no new channel or topic' ); // TODO(log)
182
185
// There was no move.
183
- assert (() {
184
- if (newStreamId != null && origStreamId != null
185
- && newStreamId != origStreamId) {
186
- // This should be impossible; `orig_subject` (aka origTopic) is
187
- // documented to be present when either the stream or topic changed.
188
- debugLog ('Malformed UpdateMessageEvent: stream move but no origTopic' ); // TODO(log)
189
- }
190
- return true ;
191
- }());
192
186
return ;
193
187
}
194
188
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)
189
+ if (origStreamId == null || newStreamId == null ) {
190
+ // The `stream_id` field (aka origStreamId) is documented to be present on moves;
191
+ // newStreamId should not be null either because it falls back to origStreamId .
192
+ assert (false , 'Malformed UpdateMessageEvent: move but no origStreamId' ); // TODO(log)
199
193
return ;
200
194
}
201
- if (origStreamId == null ) {
202
- // The `stream_id` field (aka origStreamId) is documented to be present on moves.
203
- assert (debugLog ('Malformed UpdateMessageEvent: move but no origStreamId' )); // TODO(log)
195
+ if (origTopic == null || newTopic == null ) {
196
+ // The `orig_subject` field (aka origTopic) is documented to be present on moves;
197
+ // newTopic should not be null either because it falls back to origTopic.
198
+ assert (false , 'Malformed UpdateMessageEvent: move but no origTopic' ); // TODO(log)
204
199
return ;
205
200
}
206
201
if (propagateMode == null ) {
207
202
// The `propagate_mode` field (aka propagateMode) is documented to be present on moves.
208
- assert (debugLog ( 'Malformed UpdateMessageEvent: move but no propagateMode' ) ); // TODO(log)
203
+ assert (false , 'Malformed UpdateMessageEvent: move but no propagateMode' ); // TODO(log)
209
204
return ;
210
205
}
211
206
212
- final wasResolveOrUnresolve = (newStreamId == null
213
- && MessageEditState .topicMoveWasResolveOrUnresolve (origTopic, newTopic! ) );
207
+ final wasResolveOrUnresolve = origStreamId == newStreamId
208
+ && MessageEditState .topicMoveWasResolveOrUnresolve (origTopic, newTopic);
214
209
215
210
for (final messageId in event.messageIds) {
216
211
final message = messages[messageId];
@@ -221,14 +216,14 @@ class MessageStoreImpl with MessageStore {
221
216
continue ;
222
217
}
223
218
224
- if (newStreamId != null ) {
219
+ if (origStreamId != newStreamId ) {
225
220
message.streamId = newStreamId;
226
221
// See [StreamMessage.displayRecipient] on why the invalidation is
227
222
// needed.
228
223
message.displayRecipient = null ;
229
224
}
230
225
231
- if (newTopic != null ) {
226
+ if (origTopic != newTopic ) {
232
227
message.topic = newTopic;
233
228
}
234
229
@@ -241,9 +236,9 @@ class MessageStoreImpl with MessageStore {
241
236
for (final view in _messageListViews) {
242
237
view.messagesMoved (
243
238
origStreamId: origStreamId,
244
- newStreamId: newStreamId ?? origStreamId ,
239
+ newStreamId: newStreamId,
245
240
origTopic: origTopic,
246
- newTopic: newTopic ?? origTopic ,
241
+ newTopic: newTopic,
247
242
messageIds: event.messageIds,
248
243
propagateMode: propagateMode,
249
244
);
0 commit comments