@@ -69,6 +69,20 @@ ZulipApiException apiExceptionUnauthorized({String routeName = 'someRoute'}) {
69
69
data: {}, message: 'Invalid API key' );
70
70
}
71
71
72
+ ////////////////////////////////////////////////////////////////
73
+ // Time values.
74
+ //
75
+
76
+ final timeInPast = DateTime .utc (2025 , 4 , 1 , 8 , 30 , 0 );
77
+
78
+ /// The UNIX timestamp, in UTC seconds.
79
+ ///
80
+ /// This is the commonly used format in the Zulip API for timestamps.
81
+ int utcTimestamp ([DateTime ? dateTime]) {
82
+ dateTime ?? = timeInPast;
83
+ return dateTime.toUtc ().millisecondsSinceEpoch ~ / 1000 ;
84
+ }
85
+
72
86
////////////////////////////////////////////////////////////////
73
87
// Realm-wide (or server-wide) metadata.
74
88
//
@@ -470,7 +484,7 @@ StreamMessage streamMessage({
470
484
'last_edit_timestamp' : lastEditTimestamp,
471
485
'subject' : topic ?? _defaultTopic,
472
486
'submessages' : submessages ?? [],
473
- 'timestamp' : timestamp ?? 1678139636 ,
487
+ 'timestamp' : timestamp ?? utcTimestamp () ,
474
488
'type' : 'stream' ,
475
489
}) as Map <String , dynamic >);
476
490
}
@@ -511,7 +525,7 @@ DmMessage dmMessage({
511
525
'last_edit_timestamp' : lastEditTimestamp,
512
526
'subject' : '' ,
513
527
'submessages' : submessages ?? [],
514
- 'timestamp' : timestamp ?? 1678139636 ,
528
+ 'timestamp' : timestamp ?? utcTimestamp () ,
515
529
'type' : 'private' ,
516
530
}) as Map <String , dynamic >);
517
531
}
@@ -660,7 +674,7 @@ UpdateMessageEvent updateMessageEditEvent(
660
674
messageId: messageId,
661
675
messageIds: [messageId],
662
676
flags: flags ?? origMessage.flags,
663
- editTimestamp: editTimestamp ?? 1234567890 , // TODO generate timestamp
677
+ editTimestamp: editTimestamp ?? utcTimestamp (),
664
678
moveData: null ,
665
679
origContent: 'some probably-mismatched old Markdown' ,
666
680
origRenderedContent: origMessage.content,
@@ -691,7 +705,7 @@ UpdateMessageEvent _updateMessageMoveEvent(
691
705
messageId: messageIds.first,
692
706
messageIds: messageIds,
693
707
flags: flags,
694
- editTimestamp: 1234567890 , // TODO generate timestamp
708
+ editTimestamp: utcTimestamp (),
695
709
moveData: UpdateMessageMoveData (
696
710
origStreamId: origStreamId,
697
711
newStreamId: newStreamId ?? origStreamId,
0 commit comments