@@ -173,44 +173,23 @@ 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+       if  (propagateMode !=  null ) {
183+         throw  FormatException (
184+           'UpdateMessageEvent: incoherent message-move fields; ' 
185+           'propagate_mode present but no new channel or topic' );
186+       }
182187      // 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-       return ;
193-     }
194- 
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-     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) 
204-       return ;
205-     }
206-     if  (propagateMode ==  null ) {
207-       // The `propagate_mode` field (aka propagateMode) is documented to be present on moves. 
208-       assert (debugLog ('Malformed UpdateMessageEvent: move but no propagateMode' )); // TODO(log) 
209188      return ;
210189    }
211190
212-     final  wasResolveOrUnresolve =  (newStreamId  ==  null 
213-       &&  MessageEditState .topicMoveWasResolveOrUnresolve (origTopic, newTopic! ) );
191+     final  wasResolveOrUnresolve =  origStreamId  ==  newStreamId 
192+       &&  MessageEditState .topicMoveWasResolveOrUnresolve (origTopic! , newTopic! );
214193
215194    for  (final  messageId in  event.messageIds) {
216195      final  message =  messages[messageId];
@@ -221,15 +200,15 @@ class MessageStoreImpl with MessageStore {
221200        continue ;
222201      }
223202
224-       if  (newStreamId  !=  null ) {
225-         message.streamId =  newStreamId;
203+       if  (origStreamId  !=  newStreamId ) {
204+         message.streamId =  newStreamId! ;
226205        // See [StreamMessage.displayRecipient] on why the invalidation is 
227206        // needed. 
228207        message.displayRecipient =  null ;
229208      }
230209
231-       if  (newTopic  !=  null ) {
232-         message.topic =  newTopic;
210+       if  (origTopic  !=  newTopic ) {
211+         message.topic =  newTopic! ;
233212      }
234213
235214      if  (! wasResolveOrUnresolve
@@ -240,12 +219,12 @@ class MessageStoreImpl with MessageStore {
240219
241220    for  (final  view in  _messageListViews) {
242221      view.messagesMoved (
243-         origStreamId:  origStreamId,
244-         newStreamId:  newStreamId  ??  origStreamId ,
245-         origTopic:  origTopic,
246-         newTopic:  newTopic  ??  origTopic ,
222+         origStreamId:  origStreamId! ,
223+         newStreamId:  newStreamId! ,
224+         origTopic:  origTopic! ,
225+         newTopic:  newTopic! ,
247226        messageIds:  event.messageIds,
248-         propagateMode:  propagateMode,
227+         propagateMode:  propagateMode! ,
249228      );
250229    }
251230  }
0 commit comments