@@ -71,6 +71,13 @@ sealed class Event {
71
71
case 'peer_remove' : return SubscriptionPeerRemoveEvent .fromJson (json);
72
72
default : return UnexpectedEvent .fromJson (json);
73
73
}
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
+ }
74
81
// case 'muted_topics': … // TODO(#422) we ignore this feature on older servers
75
82
case 'user_status' : return UserStatusEvent .fromJson (json);
76
83
case 'user_topic' : return UserTopicEvent .fromJson (json);
@@ -883,6 +890,103 @@ class SubscriptionPeerRemoveEvent extends SubscriptionEvent {
883
890
Map <String , dynamic > toJson () => _$SubscriptionPeerRemoveEventToJson (this );
884
891
}
885
892
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
+
886
990
/// A Zulip event of type `user_status` : https://zulip.com/api/get-events#user_status
887
991
@JsonSerializable (fieldRename: FieldRename .snake, createToJson: false )
888
992
class UserStatusEvent extends Event {
0 commit comments