@@ -93,32 +93,43 @@ class MessageStoreImpl with MessageStore {
93
93
}
94
94
95
95
void handleUpdateMessageEvent (UpdateMessageEvent event) {
96
+ assert (event.messageIds.contains (event.messageId), "See https://github.com/zulip/zulip-flutter/pull/753#discussion_r1649463633" );
97
+ _handleUpdateMessageEventTimestamp (event);
96
98
_handleUpdateMessageEventContent (event);
97
99
// TODO(#150): Handle message moves. The views' recipient headers
98
100
// may need updating, and consequently showSender too.
101
+ for (final view in _messageListViews) {
102
+ view.notifyListenersIfAnyMessagePresent (event.messageIds);
103
+ }
99
104
}
100
105
101
- void _handleUpdateMessageEventContent (UpdateMessageEvent event) {
102
- final message = messages[event.messageId];
103
- if (message == null ) return ;
104
-
106
+ void _handleUpdateMessageEventTimestamp (UpdateMessageEvent event) {
105
107
// TODO(server-5): Cut this fallback; rely on renderingOnly from FL 114
106
108
final isRenderingOnly = event.renderingOnly ?? (event.userId == null );
107
- if (event.editTimestamp != null && ! isRenderingOnly) {
109
+ if (event.editTimestamp == null || isRenderingOnly) {
108
110
// A rendering-only update gets omitted from the message edit history,
109
111
// and [Message.lastEditTimestamp] is the last timestamp of that history.
110
112
// So on a rendering-only update, the timestamp doesn't get updated.
113
+ return ;
114
+ }
115
+
116
+ for (final messageId in event.messageIds) {
117
+ final message = messages[messageId];
118
+ if (message == null ) continue ;
111
119
message.lastEditTimestamp = event.editTimestamp;
112
120
}
121
+ }
113
122
114
- message.flags = event.flags;
123
+ void _handleUpdateMessageEventContent (UpdateMessageEvent event) {
124
+ final message = messages[event.messageId];
125
+ if (message == null ) return ;
115
126
127
+ message.flags = event.flags;
116
128
if (event.renderedContent != null ) {
117
129
assert (message.contentType == 'text/html' ,
118
130
"Message contentType was ${message .contentType }; expected text/html." );
119
131
message.content = event.renderedContent! ;
120
132
}
121
-
122
133
if (event.isMeMessage != null ) {
123
134
message.isMeMessage = event.isMeMessage! ;
124
135
}
0 commit comments