@@ -40,6 +40,12 @@ sealed class Event {
4040 case 'message' : return MessageEvent .fromJson (json);
4141 case 'update_message' : return UpdateMessageEvent .fromJson (json);
4242 case 'delete_message' : return DeleteMessageEvent .fromJson (json);
43+ case 'update_message_flags' :
44+ switch (json['op' ] as String ) {
45+ case 'add' : return UpdateMessageFlagsAddEvent .fromJson (json);
46+ case 'remove' : return UpdateMessageFlagsRemoveEvent .fromJson (json);
47+ default : return UnexpectedEvent .fromJson (json);
48+ }
4349 case 'reaction' : return ReactionEvent .fromJson (json);
4450 case 'heartbeat' : return HeartbeatEvent .fromJson (json);
4551 // TODO add many more event types
@@ -439,13 +445,103 @@ class DeleteMessageEvent extends Event {
439445 Map <String , dynamic > toJson () => _$DeleteMessageEventToJson (this );
440446}
441447
442- /// As in [DeleteMessageEvent.messageType] .
448+ /// As in [DeleteMessageEvent.messageType]
449+ /// or [UpdateMessageFlagsMessageDetail.type] .
443450@JsonEnum (fieldRename: FieldRename .snake)
444451enum MessageType {
445452 stream,
446453 private;
447454}
448455
456+ /// A Zulip event of type `update_message_flags` .
457+ ///
458+ /// For the corresponding API docs, see subclasses.
459+ abstract class UpdateMessageFlagsEvent extends Event {
460+ @override
461+ @JsonKey (includeToJson: true )
462+ String get type => 'update_message_flags' ;
463+
464+ String get op;
465+
466+ @JsonKey (unknownEnumValue: MessageFlag .unknown)
467+ final MessageFlag flag;
468+ final List <int > messages;
469+ final bool all;
470+
471+ UpdateMessageFlagsEvent ({
472+ required super .id,
473+ required this .flag,
474+ required this .messages,
475+ required this .all,
476+ });
477+ }
478+
479+ /// An [UpdateMessageFlagsEvent] with op `add` : https://zulip.com/api/get-events#update_message_flags-add
480+ @JsonSerializable (fieldRename: FieldRename .snake)
481+ class UpdateMessageFlagsAddEvent extends UpdateMessageFlagsEvent {
482+ @override
483+ String get op => 'add' ;
484+
485+ UpdateMessageFlagsAddEvent ({
486+ required super .id,
487+ required super .flag,
488+ required super .messages,
489+ required super .all,
490+ });
491+
492+ factory UpdateMessageFlagsAddEvent .fromJson (Map <String , dynamic > json) =>
493+ _$UpdateMessageFlagsAddEventFromJson (json);
494+
495+ @override
496+ Map <String , dynamic > toJson () => _$UpdateMessageFlagsAddEventToJson (this );
497+ }
498+
499+ /// An [UpdateMessageFlagsEvent] with op `remove` : https://zulip.com/api/get-events#update_message_flags-remove
500+ @JsonSerializable (fieldRename: FieldRename .snake)
501+ class UpdateMessageFlagsRemoveEvent extends UpdateMessageFlagsEvent {
502+ @override
503+ String get op => 'remove' ;
504+
505+ final Map <int , UpdateMessageFlagsMessageDetail >? messageDetails;
506+
507+ UpdateMessageFlagsRemoveEvent ({
508+ required super .id,
509+ required super .flag,
510+ required super .messages,
511+ required super .all,
512+ required this .messageDetails,
513+ });
514+
515+ factory UpdateMessageFlagsRemoveEvent .fromJson (Map <String , dynamic > json) =>
516+ _$UpdateMessageFlagsRemoveEventFromJson (json);
517+
518+ @override
519+ Map <String , dynamic > toJson () => _$UpdateMessageFlagsRemoveEventToJson (this );
520+ }
521+
522+ /// As in [UpdateMessageFlagsRemoveEvent.messageDetails] .
523+ @JsonSerializable (fieldRename: FieldRename .snake)
524+ class UpdateMessageFlagsMessageDetail {
525+ final MessageType type;
526+ final bool ? mentioned;
527+ final List <int >? userIds;
528+ final int ? streamId;
529+ final String ? topic;
530+
531+ UpdateMessageFlagsMessageDetail ({
532+ required this .type,
533+ required this .mentioned,
534+ required this .userIds,
535+ required this .streamId,
536+ required this .topic,
537+ });
538+
539+ factory UpdateMessageFlagsMessageDetail .fromJson (Map <String , dynamic > json) =>
540+ _$UpdateMessageFlagsMessageDetailFromJson (json);
541+
542+ Map <String , dynamic > toJson () => _$UpdateMessageFlagsMessageDetailToJson (this );
543+ }
544+
449545/// A Zulip event of type `reaction` , with op `add` or `remove` .
450546///
451547/// See:
0 commit comments