1
+ import 'dart:convert' ;
1
2
import 'dart:math' ;
2
3
3
4
import 'package:zulip/api/model/events.dart' ;
@@ -343,6 +344,7 @@ StreamMessage streamMessage({
343
344
List <Reaction >? reactions,
344
345
int ? timestamp,
345
346
List <MessageFlag >? flags,
347
+ List <Submessage >? submessages,
346
348
}) {
347
349
_checkPositive (id, 'message ID' );
348
350
final effectiveStream = stream ?? _stream (streamId: defaultStreamMessageStreamId);
@@ -362,6 +364,7 @@ StreamMessage streamMessage({
362
364
'id' : id ?? _nextMessageId (),
363
365
'last_edit_timestamp' : lastEditTimestamp,
364
366
'subject' : topic ?? 'example topic' ,
367
+ 'submessages' : submessages ?? [],
365
368
'timestamp' : timestamp ?? 1678139636 ,
366
369
'type' : 'stream' ,
367
370
}) as Map <String , dynamic >);
@@ -386,6 +389,7 @@ DmMessage dmMessage({
386
389
int ? lastEditTimestamp,
387
390
int ? timestamp,
388
391
List <MessageFlag >? flags,
392
+ List <Submessage >? submessages,
389
393
}) {
390
394
_checkPositive (id, 'message ID' );
391
395
assert (! to.any ((user) => user.userId == from.userId));
@@ -401,6 +405,7 @@ DmMessage dmMessage({
401
405
'id' : id ?? _nextMessageId (),
402
406
'last_edit_timestamp' : lastEditTimestamp,
403
407
'subject' : '' ,
408
+ 'submessages' : submessages ?? [],
404
409
'timestamp' : timestamp ?? 1678139636 ,
405
410
'type' : 'private' ,
406
411
}) as Map <String , dynamic >);
@@ -414,6 +419,21 @@ PollWidgetData pollWidgetData({
414
419
extraData: PollWidgetExtraData (question: question, options: options));
415
420
}
416
421
422
+ Submessage submessage ({
423
+ SubmessageType ? msgType,
424
+ required Object ? content,
425
+ int ? senderId,
426
+ }) {
427
+ return Submessage (
428
+ msgType: msgType ?? SubmessageType .widget,
429
+ content: jsonEncode (content),
430
+ senderId: senderId ?? selfUser.userId,
431
+ );
432
+ }
433
+
434
+ PollOption pollOption ({required String text, required Iterable <int > voters}) =>
435
+ PollOption (text: text)..voters.addAll (voters);
436
+
417
437
////////////////////////////////////////////////////////////////
418
438
// Aggregate data structures.
419
439
//
@@ -627,6 +647,21 @@ UpdateMessageFlagsRemoveEvent updateMessageFlagsRemoveEvent(
627
647
})));
628
648
}
629
649
650
+ SubmessageEvent submessageEvent (
651
+ int messageId,
652
+ int senderId, {
653
+ required Object ? content,
654
+ }) {
655
+ return SubmessageEvent (
656
+ id: 0 ,
657
+ msgType: SubmessageType .widget,
658
+ content: jsonEncode (content),
659
+ messageId: messageId,
660
+ senderId: senderId,
661
+ submessageId: 1 ,
662
+ );
663
+ }
664
+
630
665
TypingEvent typingEvent (SendableNarrow narrow, TypingOp op, int senderId) {
631
666
switch (narrow) {
632
667
case TopicNarrow ():
0 commit comments