@@ -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 'user_status' : return UserStatusEvent .fromJson (json);
7582 case 'user_topic' : return UserTopicEvent .fromJson (json);
7683 case 'muted_users' : return MutedUsersEvent .fromJson (json);
@@ -887,6 +894,103 @@ class SubscriptionPeerRemoveEvent extends SubscriptionEvent {
887894 Map <String , dynamic > toJson () => _$SubscriptionPeerRemoveEventToJson (this );
888895}
889896
897+ /// A Zulip event of type `channel_folder` .
898+ ///
899+ /// The corresponding API docs are in several places for
900+ /// different values of `op` ; see subclasses.
901+ sealed class ChannelFolderEvent extends Event {
902+ @override
903+ @JsonKey (includeToJson: true )
904+ String get type => 'channel_folder' ;
905+
906+ String get op;
907+
908+ ChannelFolderEvent ({required super .id});
909+ }
910+
911+ /// A [ChannelFolderEvent] with op `add` :
912+ /// https://zulip.com/api/get-events#channel_folder-add
913+ @JsonSerializable (fieldRename: FieldRename .snake)
914+ class ChannelFolderAddEvent extends ChannelFolderEvent {
915+ @override
916+ @JsonKey (includeToJson: true )
917+ String get op => 'add' ;
918+
919+ final ChannelFolder channelFolder;
920+
921+ ChannelFolderAddEvent ({required super .id, required this .channelFolder});
922+
923+ factory ChannelFolderAddEvent .fromJson (Map <String , dynamic > json) =>
924+ _$ChannelFolderAddEventFromJson (json);
925+
926+ @override
927+ Map <String , dynamic > toJson () => _$ChannelFolderAddEventToJson (this );
928+ }
929+
930+ /// A [ChannelFolderEvent] with op `update` :
931+ /// https://zulip.com/api/get-events#channel_folder-update
932+ @JsonSerializable (fieldRename: FieldRename .snake)
933+ class ChannelFolderUpdateEvent extends ChannelFolderEvent {
934+ @override
935+ @JsonKey (includeToJson: true )
936+ String get op => 'update' ;
937+
938+ final int channelFolderId;
939+ final ChannelFolderChange data;
940+
941+ ChannelFolderUpdateEvent ({
942+ required super .id,
943+ required this .channelFolderId,
944+ required this .data,
945+ });
946+
947+ factory ChannelFolderUpdateEvent .fromJson (Map <String , dynamic > json) =>
948+ _$ChannelFolderUpdateEventFromJson (json);
949+
950+ @override
951+ Map <String , dynamic > toJson () => _$ChannelFolderUpdateEventToJson (this );
952+ }
953+
954+ /// Details of a channel-folder change, as in [ChannelFolderUpdateEvent.data] .
955+ @JsonSerializable (fieldRename: FieldRename .snake)
956+ class ChannelFolderChange {
957+ final String ? name;
958+ final String ? description;
959+ final String ? renderedDescription;
960+ final bool ? isArchived;
961+
962+ ChannelFolderChange ({
963+ required this .name,
964+ required this .description,
965+ required this .renderedDescription,
966+ required this .isArchived,
967+ });
968+
969+ factory ChannelFolderChange .fromJson (Map <String , dynamic > json) =>
970+ _$ChannelFolderChangeFromJson (json);
971+
972+ Map <String , dynamic > toJson () => _$ChannelFolderChangeToJson (this );
973+ }
974+
975+ /// A [ChannelFolderEvent] with op `update` :
976+ /// https://zulip.com/api/get-events#channel_folder-update
977+ @JsonSerializable (fieldRename: FieldRename .snake)
978+ class ChannelFolderReorderEvent extends ChannelFolderEvent {
979+ @override
980+ @JsonKey (includeToJson: true )
981+ String get op => 'reorder' ;
982+
983+ final List <int > order;
984+
985+ ChannelFolderReorderEvent ({required super .id, required this .order});
986+
987+ factory ChannelFolderReorderEvent .fromJson (Map <String , dynamic > json) =>
988+ _$ChannelFolderReorderEventFromJson (json);
989+
990+ @override
991+ Map <String , dynamic > toJson () => _$ChannelFolderReorderEventToJson (this );
992+ }
993+
890994/// A Zulip event of type `user_status` : https://zulip.com/api/get-events#user_status
891995@JsonSerializable (fieldRename: FieldRename .snake, createToJson: false )
892996class UserStatusEvent extends Event {
0 commit comments