@@ -71,6 +71,13 @@ sealed class Event {
7171 case 'peer_remove' : return SubscriptionPeerRemoveEvent .fromJson (json);
7272 default : return UnexpectedEvent .fromJson (json);
7373 }
74+ case 'channel_folder' :
75+ switch (json['op' ] as String ) {
76+ case 'add' : return ChannelFolderAddEvent .fromJson (json);
77+ case 'reorder' : return ChannelFolderReorderEvent .fromJson (json);
78+ case 'update' : return ChannelFolderUpdateEvent .fromJson (json);
79+ default : return UnexpectedEvent .fromJson (json);
80+ }
7481 // case 'muted_topics': … // TODO(#422) we ignore this feature on older servers
7582 case 'user_status' : return UserStatusEvent .fromJson (json);
7683 case 'user_topic' : return UserTopicEvent .fromJson (json);
@@ -883,6 +890,103 @@ class SubscriptionPeerRemoveEvent extends SubscriptionEvent {
883890 Map <String , dynamic > toJson () => _$SubscriptionPeerRemoveEventToJson (this );
884891}
885892
893+ /// A Zulip event of type `channel_folder` .
894+ ///
895+ /// The corresponding API docs are in several places for
896+ /// different values of `op` ; see subclasses.
897+ sealed class ChannelFolderEvent extends Event {
898+ @override
899+ @JsonKey (includeToJson: true )
900+ String get type => 'channel_folder' ;
901+
902+ String get op;
903+
904+ ChannelFolderEvent ({required super .id});
905+ }
906+
907+ /// A [ChannelFolderEvent] with op `add` :
908+ /// https://zulip.com/api/get-events#channel_folder-add
909+ @JsonSerializable (fieldRename: FieldRename .snake)
910+ class ChannelFolderAddEvent extends ChannelFolderEvent {
911+ @override
912+ @JsonKey (includeToJson: true )
913+ String get op => 'add' ;
914+
915+ final ChannelFolder channelFolder;
916+
917+ ChannelFolderAddEvent ({required super .id, required this .channelFolder});
918+
919+ factory ChannelFolderAddEvent .fromJson (Map <String , dynamic > json) =>
920+ _$ChannelFolderAddEventFromJson (json);
921+
922+ @override
923+ Map <String , dynamic > toJson () => _$ChannelFolderAddEventToJson (this );
924+ }
925+
926+ /// A [ChannelFolderEvent] with op `update` :
927+ /// https://zulip.com/api/get-events#channel_folder-update
928+ @JsonSerializable (fieldRename: FieldRename .snake)
929+ class ChannelFolderUpdateEvent extends ChannelFolderEvent {
930+ @override
931+ @JsonKey (includeToJson: true )
932+ String get op => 'update' ;
933+
934+ final int channelFolderId;
935+ final ChannelFolderChange data;
936+
937+ ChannelFolderUpdateEvent ({
938+ required super .id,
939+ required this .channelFolderId,
940+ required this .data,
941+ });
942+
943+ factory ChannelFolderUpdateEvent .fromJson (Map <String , dynamic > json) =>
944+ _$ChannelFolderUpdateEventFromJson (json);
945+
946+ @override
947+ Map <String , dynamic > toJson () => _$ChannelFolderUpdateEventToJson (this );
948+ }
949+
950+ /// Details of a channel-folder change, as in [ChannelFolderUpdateEvent.data] .
951+ @JsonSerializable (fieldRename: FieldRename .snake)
952+ class ChannelFolderChange {
953+ final String ? name;
954+ final String ? description;
955+ final String ? renderedDescription;
956+ final bool ? isArchived;
957+
958+ ChannelFolderChange ({
959+ required this .name,
960+ required this .description,
961+ required this .renderedDescription,
962+ required this .isArchived,
963+ });
964+
965+ factory ChannelFolderChange .fromJson (Map <String , dynamic > json) =>
966+ _$ChannelFolderChangeFromJson (json);
967+
968+ Map <String , dynamic > toJson () => _$ChannelFolderChangeToJson (this );
969+ }
970+
971+ /// A [ChannelFolderEvent] with op `update` :
972+ /// https://zulip.com/api/get-events#channel_folder-update
973+ @JsonSerializable (fieldRename: FieldRename .snake)
974+ class ChannelFolderReorderEvent extends ChannelFolderEvent {
975+ @override
976+ @JsonKey (includeToJson: true )
977+ String get op => 'reorder' ;
978+
979+ final List <int > order;
980+
981+ ChannelFolderReorderEvent ({required super .id, required this .order});
982+
983+ factory ChannelFolderReorderEvent .fromJson (Map <String , dynamic > json) =>
984+ _$ChannelFolderReorderEventFromJson (json);
985+
986+ @override
987+ Map <String , dynamic > toJson () => _$ChannelFolderReorderEventToJson (this );
988+ }
989+
886990/// A Zulip event of type `user_status` : https://zulip.com/api/get-events#user_status
887991@JsonSerializable (fieldRename: FieldRename .snake, createToJson: false )
888992class UserStatusEvent extends Event {
0 commit comments