Skip to content

Commit b0a9fe3

Browse files
committed
api: Mark UpdateMessageEvent fields as required, relying on server 5+, FL 114+
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 bdb6529 commit b0a9fe3

File tree

6 files changed

+15
-27
lines changed

6 files changed

+15
-27
lines changed

lib/api/model/events.dart

+3-3
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

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/model/message.dart

+1-3
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,7 @@ class MessageStoreImpl with MessageStore {
120120
}
121121

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

test/api/model/events_checks.dart

+3-3
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,12 @@ extension MessageEventChecks on Subject<MessageEvent> {
4242
}
4343

4444
extension UpdateMessageEventChecks on Subject<UpdateMessageEvent> {
45-
Subject<int?> get userId => has((e) => e.userId, 'userId');
46-
Subject<bool?> get renderingOnly => has((e) => e.renderingOnly, 'renderingOnly');
45+
Subject<int> get userId => has((e) => e.userId, 'userId');
46+
Subject<bool> get renderingOnly => has((e) => e.renderingOnly, 'renderingOnly');
4747
Subject<int> get messageId => has((e) => e.messageId, 'messageId');
4848
Subject<List<int>> get messageIds => has((e) => e.messageIds, 'messageIds');
4949
Subject<List<MessageFlag>> get flags => has((e) => e.flags, 'flags');
50-
Subject<int?> get editTimestamp => has((e) => e.editTimestamp, 'editTimestamp');
50+
Subject<int> get editTimestamp => has((e) => e.editTimestamp, 'editTimestamp');
5151
Subject<int?> get origStreamId => has((e) => e.origStreamId, 'origStreamId');
5252
Subject<int?> get newStreamId => has((e) => e.newStreamId, 'newStreamId');
5353
Subject<PropagateMode?> get propagateMode => has((e) => e.propagateMode, 'propagateMode');

test/example_data.dart

+3-3
Original file line numberDiff line numberDiff line change
@@ -529,8 +529,8 @@ DeleteMessageEvent deleteMessageEvent(List<StreamMessage> messages) {
529529

530530
UpdateMessageEvent updateMessageEditEvent(
531531
Message origMessage, {
532-
int? userId = -1, // null means null; default is [selfUser.userId]
533-
bool? renderingOnly = false,
532+
int? userId,
533+
bool renderingOnly = false,
534534
int? messageId,
535535
List<MessageFlag>? flags,
536536
int? editTimestamp,
@@ -541,7 +541,7 @@ UpdateMessageEvent updateMessageEditEvent(
541541
messageId ??= origMessage.id;
542542
return UpdateMessageEvent(
543543
id: 0,
544-
userId: userId == -1 ? selfUser.userId : userId,
544+
userId: userId ?? selfUser.userId,
545545
renderingOnly: renderingOnly,
546546
messageId: messageId,
547547
messageIds: [messageId],

test/model/message_test.dart

+2-12
Original file line numberDiff line numberDiff line change
@@ -258,16 +258,14 @@ void main() {
258258
..content.not((it) => it.equals(updateEvent.renderedContent!));
259259
});
260260

261-
// TODO(server-5): Cut legacy case for rendering-only message update
262-
Future<void> checkRenderingOnly({required bool legacy}) async {
261+
test('rendering-only update does not change timestamp', () async {
263262
final originalMessage = eg.streamMessage(
264263
lastEditTimestamp: 78492,
265264
content: "<p>Hello, world</p>");
266265
final updateEvent = eg.updateMessageEditEvent(originalMessage,
267266
renderedContent: "<p>Hello, world</p> <div>Some link preview</div>",
268267
editTimestamp: 99999,
269-
renderingOnly: legacy ? null : true,
270-
userId: null,
268+
renderingOnly: true,
271269
);
272270
await prepare();
273271
await prepareMessages([originalMessage]);
@@ -282,14 +280,6 @@ void main() {
282280
// ... edit timestamp is not.
283281
..lastEditTimestamp.equals(originalMessage.lastEditTimestamp)
284282
..lastEditTimestamp.not((it) => it.equals(updateEvent.editTimestamp));
285-
}
286-
287-
test('rendering-only update does not change timestamp', () async {
288-
await checkRenderingOnly(legacy: false);
289-
});
290-
291-
test('rendering-only update does not change timestamp (for old server versions)', () async {
292-
await checkRenderingOnly(legacy: true);
293283
});
294284

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

0 commit comments

Comments
 (0)