@@ -34,7 +34,7 @@ class MessageListDateSeparatorItem extends MessageListItem {
34
34
/// A message to show in the message list.
35
35
class MessageListMessageItem extends MessageListItem {
36
36
final Message message;
37
- ZulipContent content;
37
+ ZulipMessageContent content;
38
38
bool showSender;
39
39
bool isLastInBlock;
40
40
@@ -94,7 +94,7 @@ mixin _MessageSequence {
94
94
///
95
95
/// This information is completely derived from [messages] .
96
96
/// It exists as an optimization, to memoize the work of parsing.
97
- final List <ZulipContent > contents = [];
97
+ final List <ZulipMessageContent > contents = [];
98
98
99
99
/// The messages and their siblings in the UI, in order.
100
100
///
@@ -130,10 +130,18 @@ mixin _MessageSequence {
130
130
}
131
131
}
132
132
133
+ ZulipMessageContent _parseMessage (Message message) {
134
+ if (message.poll != null ) {
135
+ return PollContent ();
136
+ } else {
137
+ return parseContent (message.content);
138
+ }
139
+ }
140
+
133
141
/// Update data derived from the content of the index-th message.
134
142
void _reparseContent (int index) {
135
143
final message = messages[index];
136
- final content = parseContent (message.content );
144
+ final content = _parseMessage (message);
137
145
contents[index] = content;
138
146
139
147
final itemIndex = findItemWithMessageId (message.id);
@@ -150,7 +158,7 @@ mixin _MessageSequence {
150
158
void _addMessage (Message message) {
151
159
assert (contents.length == messages.length);
152
160
messages.add (message);
153
- contents.add (parseContent (message.content ));
161
+ contents.add (_parseMessage (message));
154
162
assert (contents.length == messages.length);
155
163
_processMessage (messages.length - 1 );
156
164
}
@@ -161,7 +169,7 @@ mixin _MessageSequence {
161
169
/// If none of [messageIds] are found, this is a no-op.
162
170
bool _removeMessagesById (Iterable <int > messageIds) {
163
171
final messagesToRemoveById = < int > {};
164
- final contentToRemove = Set <ZulipContent >.identity ();
172
+ final contentToRemove = Set <ZulipMessageContent >.identity ();
165
173
for (final messageId in messageIds) {
166
174
final index = _findMessageWithId (messageId);
167
175
if (index == - 1 ) continue ;
@@ -187,7 +195,7 @@ mixin _MessageSequence {
187
195
assert (contents.length == messages.length);
188
196
messages.insertAll (index, toInsert);
189
197
contents.insertAll (index, toInsert.map (
190
- (message) => parseContent (message.content )));
198
+ (message) => _parseMessage (message)));
191
199
assert (contents.length == messages.length);
192
200
_reprocessAll ();
193
201
}
@@ -196,7 +204,7 @@ mixin _MessageSequence {
196
204
void _recompute () {
197
205
assert (contents.length == messages.length);
198
206
contents.clear ();
199
- contents.addAll (messages.map ((message) => parseContent (message.content )));
207
+ contents.addAll (messages.map ((message) => _parseMessage (message)));
200
208
assert (contents.length == messages.length);
201
209
_reprocessAll ();
202
210
}
0 commit comments