Skip to content

Commit 7a4c229

Browse files
PIG208gnprice
authored andcommitted
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 d209cf7 commit 7a4c229

File tree

6 files changed

+15
-27
lines changed

6 files changed

+15
-27
lines changed

lib/api/model/events.dart

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

800-
final int? userId; // TODO(server-5)
801-
final bool? renderingOnly; // TODO(server-5)
800+
final int userId;
801+
final bool renderingOnly;
802802
final int messageId;
803803
final List<int> messageIds;
804804

805805
final List<MessageFlag> flags;
806-
final int? editTimestamp; // TODO(server-5)
806+
final int editTimestamp;
807807

808808
// final String? streamName; // ignore
809809

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
@@ -373,9 +373,7 @@ class MessageStoreImpl extends PerAccountStoreBase with MessageStore, _OutboxMes
373373
}
374374

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

test/api/model/events_checks.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,12 @@ extension MessageEventChecks on Subject<MessageEvent> {
4343
}
4444

4545
extension UpdateMessageEventChecks on Subject<UpdateMessageEvent> {
46-
Subject<int?> get userId => has((e) => e.userId, 'userId');
47-
Subject<bool?> get renderingOnly => has((e) => e.renderingOnly, 'renderingOnly');
46+
Subject<int> get userId => has((e) => e.userId, 'userId');
47+
Subject<bool> get renderingOnly => has((e) => e.renderingOnly, 'renderingOnly');
4848
Subject<int> get messageId => has((e) => e.messageId, 'messageId');
4949
Subject<List<int>> get messageIds => has((e) => e.messageIds, 'messageIds');
5050
Subject<List<MessageFlag>> get flags => has((e) => e.flags, 'flags');
51-
Subject<int?> get editTimestamp => has((e) => e.editTimestamp, 'editTimestamp');
51+
Subject<int> get editTimestamp => has((e) => e.editTimestamp, 'editTimestamp');
5252
Subject<UpdateMessageMoveData?> get moveData => has((e) => e.moveData, 'moveData');
5353
Subject<String?> get origContent => has((e) => e.origContent, 'origContent');
5454
Subject<String?> get origRenderedContent => has((e) => e.origRenderedContent, 'origRenderedContent');

test/example_data.dart

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

840840
UpdateMessageEvent updateMessageEditEvent(
841841
Message origMessage, {
842-
int? userId = -1, // null means null; default is [selfUser.userId]
843-
bool? renderingOnly = false,
842+
int? userId,
843+
bool renderingOnly = false,
844844
int? messageId,
845845
List<MessageFlag>? flags,
846846
int? editTimestamp,
@@ -851,7 +851,7 @@ UpdateMessageEvent updateMessageEditEvent(
851851
messageId ??= origMessage.id;
852852
return UpdateMessageEvent(
853853
id: 0,
854-
userId: userId == -1 ? selfUser.userId : userId,
854+
userId: userId ?? selfUser.userId,
855855
renderingOnly: renderingOnly,
856856
messageId: messageId,
857857
messageIds: [messageId],

test/model/message_test.dart

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

933-
// TODO(server-5): Cut legacy case for rendering-only message update
934-
Future<void> checkRenderingOnly({required bool legacy}) async {
933+
test('rendering-only update does not change timestamp', () async {
935934
final originalMessage = eg.streamMessage(
936935
lastEditTimestamp: 78492,
937936
content: "<p>Hello, world</p>");
938937
final updateEvent = eg.updateMessageEditEvent(originalMessage,
939938
renderedContent: "<p>Hello, world</p> <div>Some link preview</div>",
940939
editTimestamp: 99999,
941-
renderingOnly: legacy ? null : true,
942-
userId: null,
940+
renderingOnly: true,
943941
);
944942
await prepare();
945943
await prepareMessages([originalMessage]);
@@ -954,14 +952,6 @@ void main() {
954952
// ... edit timestamp is not.
955953
..lastEditTimestamp.equals(originalMessage.lastEditTimestamp)
956954
..lastEditTimestamp.not((it) => it.equals(updateEvent.editTimestamp));
957-
}
958-
959-
test('rendering-only update does not change timestamp', () async {
960-
await checkRenderingOnly(legacy: false);
961-
});
962-
963-
test('rendering-only update does not change timestamp (for old server versions)', () async {
964-
await checkRenderingOnly(legacy: true);
965955
});
966956

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

0 commit comments

Comments
 (0)