Skip to content

Commit 6855e18

Browse files
committed
api: Mark UpdateMessageEvent fields as required, relying on server 5+, FL 114+
Fields including `userId` and `editTimestamp` are optional and act as alternatives to `renderingOnly` for older server versions. See "Feature level 114" from Zulip API changelog: https://zulip.com/api/changelog See also: https://zulip.com/api/get-events#update_message Signed-off-by: Zixuan James Li <[email protected]>
1 parent 8037c2d commit 6855e18

File tree

5 files changed

+12
-24
lines changed

5 files changed

+12
-24
lines changed

lib/api/model/events.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -704,13 +704,13 @@ class UpdateMessageEvent extends Event {
704704
@JsonKey(includeToJson: true)
705705
String get type => 'update_message';
706706

707-
final int? userId; // TODO(server-5)
708-
final bool? renderingOnly; // TODO(server-5)
707+
final int userId;
708+
final bool renderingOnly;
709709
final int messageId;
710710
final List<int> messageIds;
711711

712712
final List<MessageFlag> flags;
713-
final int? editTimestamp; // TODO(server-5)
713+
final int editTimestamp;
714714

715715
// final String? streamName; // ignore
716716

lib/api/model/events.g.dart

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/model/message.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,7 @@ class MessageStoreImpl with MessageStore {
112112
}
113113

114114
void _handleUpdateMessageEventTimestamp(UpdateMessageEvent event) {
115-
// TODO(server-5): Cut this fallback; rely on renderingOnly from FL 114
116-
final isRenderingOnly = event.renderingOnly ?? (event.userId == null);
117-
if (event.editTimestamp == null || isRenderingOnly) {
115+
if (event.renderingOnly) {
118116
// A rendering-only update gets omitted from the message edit history,
119117
// and [Message.lastEditTimestamp] is the last timestamp of that history.
120118
// So on a rendering-only update, the timestamp doesn't get updated.

test/example_data.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -502,8 +502,8 @@ DeleteMessageEvent deleteMessageEvent(List<StreamMessage> messages) {
502502

503503
UpdateMessageEvent updateMessageEditEvent(
504504
Message origMessage, {
505-
int? userId = -1, // null means null; default is [selfUser.userId]
506-
bool? renderingOnly = false,
505+
int? userId,
506+
bool renderingOnly = false,
507507
int? messageId,
508508
List<MessageFlag>? flags,
509509
int? editTimestamp,
@@ -514,7 +514,7 @@ UpdateMessageEvent updateMessageEditEvent(
514514
messageId ??= origMessage.id;
515515
return UpdateMessageEvent(
516516
id: 0,
517-
userId: userId == -1 ? selfUser.userId : userId,
517+
userId: userId ?? selfUser.userId,
518518
renderingOnly: renderingOnly,
519519
messageId: messageId,
520520
messageIds: [messageId],

test/model/message_test.dart

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -246,16 +246,14 @@ void main() {
246246
..content.not((it) => it.equals(updateEvent.renderedContent!));
247247
});
248248

249-
// TODO(server-5): Cut legacy case for rendering-only message update
250-
Future<void> checkRenderingOnly({required bool legacy}) async {
249+
test('rendering-only update does not change timestamp', () async {
251250
final originalMessage = eg.streamMessage(
252251
lastEditTimestamp: 78492,
253252
content: "<p>Hello, world</p>");
254253
final updateEvent = eg.updateMessageEditEvent(originalMessage,
255254
renderedContent: "<p>Hello, world</p> <div>Some link preview</div>",
256255
editTimestamp: 99999,
257-
renderingOnly: legacy ? null : true,
258-
userId: null,
256+
renderingOnly: true,
259257
);
260258
await prepare();
261259
await prepareMessages([originalMessage]);
@@ -270,14 +268,6 @@ void main() {
270268
// ... edit timestamp is not.
271269
..lastEditTimestamp.equals(originalMessage.lastEditTimestamp)
272270
..lastEditTimestamp.not((it) => it.equals(updateEvent.editTimestamp));
273-
}
274-
275-
test('rendering-only update does not change timestamp', () async {
276-
await checkRenderingOnly(legacy: false);
277-
});
278-
279-
test('rendering-only update does not change timestamp (for old server versions)', () async {
280-
await checkRenderingOnly(legacy: true);
281271
});
282272

283273
group('Handle message edit state update', () {

0 commit comments

Comments
 (0)