@@ -173,44 +173,39 @@ class MessageStoreImpl with MessageStore {
173173    // For reference, see: https://zulip.com/api/get-events#update_message 
174174
175175    final  origStreamId =  event.origStreamId;
176-     final  newStreamId =  event.newStreamId;  // null if topic-only move 
176+     final  newStreamId =  event.newStreamId  ??  origStreamId; 
177177    final  origTopic =  event.origTopic;
178-     final  newTopic =  event.newTopic;
178+     final  newTopic =  event.newTopic  ??  origTopic ;
179179    final  propagateMode =  event.propagateMode;
180180
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) 
182185      // 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-       }());
192186      return ;
193187    }
194188
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) 
199193      return ;
200194    }
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) 
204199      return ;
205200    }
206201    if  (propagateMode ==  null ) {
207202      // 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) 
209204      return ;
210205    }
211206
212-     final  wasResolveOrUnresolve =  (newStreamId  ==  null 
213-       &&  MessageEditState .topicMoveWasResolveOrUnresolve (origTopic, newTopic! ) );
207+     final  wasResolveOrUnresolve =  origStreamId  ==  newStreamId 
208+       &&  MessageEditState .topicMoveWasResolveOrUnresolve (origTopic, newTopic);
214209
215210    for  (final  messageId in  event.messageIds) {
216211      final  message =  messages[messageId];
@@ -221,14 +216,14 @@ class MessageStoreImpl with MessageStore {
221216        continue ;
222217      }
223218
224-       if  (newStreamId  !=  null ) {
219+       if  (origStreamId  !=  newStreamId ) {
225220        message.streamId =  newStreamId;
226221        // See [StreamMessage.displayRecipient] on why the invalidation is 
227222        // needed. 
228223        message.displayRecipient =  null ;
229224      }
230225
231-       if  (newTopic  !=  null ) {
226+       if  (origTopic  !=  newTopic ) {
232227        message.topic =  newTopic;
233228      }
234229
@@ -241,9 +236,9 @@ class MessageStoreImpl with MessageStore {
241236    for  (final  view in  _messageListViews) {
242237      view.messagesMoved (
243238        origStreamId:  origStreamId,
244-         newStreamId:  newStreamId  ??  origStreamId ,
239+         newStreamId:  newStreamId,
245240        origTopic:  origTopic,
246-         newTopic:  newTopic  ??  origTopic ,
241+         newTopic:  newTopic,
247242        messageIds:  event.messageIds,
248243        propagateMode:  propagateMode,
249244      );
0 commit comments