Skip to content

Commit c3be229

Browse files
committed
api: Add channel fields canSubscribeGroup, canAddSubscribersGroup
1 parent 8c3b11f commit c3be229

File tree

6 files changed

+46
-3
lines changed

6 files changed

+46
-3
lines changed

lib/api/model/events.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -674,6 +674,9 @@ class ChannelUpdateEvent extends ChannelEvent {
674674
return value as int?;
675675
case ChannelPropertyName.channelPostPolicy:
676676
return ChannelPostPolicy.fromApiValue(value as int);
677+
case ChannelPropertyName.canAddSubscribersGroup:
678+
case ChannelPropertyName.canSubscribeGroup:
679+
return GroupSettingValue.fromJson(value);
677680
case ChannelPropertyName.streamWeeklyTraffic:
678681
return value as int?;
679682
case null:

lib/api/model/events.g.dart

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/api/model/model.dart

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -641,7 +641,8 @@ class ZulipStream {
641641
ChannelPostPolicy channelPostPolicy;
642642
// final bool isAnnouncementOnly; // deprecated for `channelPostPolicy`; ignore
643643

644-
// GroupSettingsValue canRemoveSubscribersGroup; // TODO(#814)
644+
GroupSettingValue? canAddSubscribersGroup; // TODO(server-10)
645+
GroupSettingValue? canSubscribeGroup; // TODO(server-10)
645646

646647
// TODO(server-8): added in FL 199, was previously only on [Subscription] objects
647648
int? streamWeeklyTraffic;
@@ -658,6 +659,8 @@ class ZulipStream {
658659
required this.historyPublicToSubscribers,
659660
required this.messageRetentionDays,
660661
required this.channelPostPolicy,
662+
required this.canAddSubscribersGroup,
663+
required this.canSubscribeGroup,
661664
required this.streamWeeklyTraffic,
662665
});
663666

@@ -675,6 +678,8 @@ class ZulipStream {
675678
historyPublicToSubscribers: subscription.historyPublicToSubscribers,
676679
messageRetentionDays: subscription.messageRetentionDays,
677680
channelPostPolicy: subscription.channelPostPolicy,
681+
canAddSubscribersGroup: subscription.canAddSubscribersGroup,
682+
canSubscribeGroup: subscription.canSubscribeGroup,
678683
streamWeeklyTraffic: subscription.streamWeeklyTraffic,
679684
);
680685
}
@@ -705,8 +710,8 @@ enum ChannelPropertyName {
705710
messageRetentionDays,
706711
@JsonValue('stream_post_policy')
707712
channelPostPolicy,
708-
// canRemoveSubscribersGroup, // TODO(#814)
709-
// canRemoveSubscribersGroupId, // TODO(#814) handle // TODO(server-8) remove
713+
canAddSubscribersGroup,
714+
canSubscribeGroup,
710715
streamWeeklyTraffic;
711716

712717
/// Get a [ChannelPropertyName] from a raw, snake-case string we recognize, else null.
@@ -786,6 +791,8 @@ class Subscription extends ZulipStream {
786791
required super.historyPublicToSubscribers,
787792
required super.messageRetentionDays,
788793
required super.channelPostPolicy,
794+
required super.canAddSubscribersGroup,
795+
required super.canSubscribeGroup,
789796
required super.streamWeeklyTraffic,
790797
required this.desktopNotifications,
791798
required this.emailNotifications,

lib/api/model/model.g.dart

Lines changed: 18 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/model/channel.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,10 @@ class ChannelStoreImpl extends HasUserStore with ChannelStore {
337337
stream.messageRetentionDays = event.value as int?;
338338
case ChannelPropertyName.channelPostPolicy:
339339
stream.channelPostPolicy = event.value as ChannelPostPolicy;
340+
case ChannelPropertyName.canAddSubscribersGroup:
341+
stream.canAddSubscribersGroup = event.value as GroupSettingValue;
342+
case ChannelPropertyName.canSubscribeGroup:
343+
stream.canSubscribeGroup = event.value as GroupSettingValue;
340344
case ChannelPropertyName.streamWeeklyTraffic:
341345
stream.streamWeeklyTraffic = event.value as int?;
342346
}

test/example_data.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,8 @@ ZulipStream stream({
443443
bool? historyPublicToSubscribers,
444444
int? messageRetentionDays,
445445
ChannelPostPolicy? channelPostPolicy,
446+
GroupSettingValue? canAddSubscribersGroup,
447+
GroupSettingValue? canSubscribeGroup,
446448
int? streamWeeklyTraffic,
447449
}) {
448450
_checkPositive(streamId, 'stream ID');
@@ -462,6 +464,8 @@ ZulipStream stream({
462464
historyPublicToSubscribers: historyPublicToSubscribers ?? true,
463465
messageRetentionDays: messageRetentionDays,
464466
channelPostPolicy: channelPostPolicy ?? ChannelPostPolicy.any,
467+
canAddSubscribersGroup: canAddSubscribersGroup ?? GroupSettingValueNamed(nobodyGroup.id),
468+
canSubscribeGroup: canSubscribeGroup ?? GroupSettingValueNamed(nobodyGroup.id),
465469
streamWeeklyTraffic: streamWeeklyTraffic,
466470
);
467471
}
@@ -500,6 +504,8 @@ Subscription subscription(
500504
historyPublicToSubscribers: stream.historyPublicToSubscribers,
501505
messageRetentionDays: stream.messageRetentionDays,
502506
channelPostPolicy: stream.channelPostPolicy,
507+
canAddSubscribersGroup: stream.canAddSubscribersGroup,
508+
canSubscribeGroup: stream.canSubscribeGroup,
503509
streamWeeklyTraffic: stream.streamWeeklyTraffic,
504510
desktopNotifications: desktopNotifications ?? false,
505511
emailNotifications: emailNotifications ?? false,
@@ -1171,6 +1177,9 @@ ChannelUpdateEvent channelUpdateEvent(
11711177
assert(value is int?);
11721178
case ChannelPropertyName.channelPostPolicy:
11731179
assert(value is ChannelPostPolicy);
1180+
case ChannelPropertyName.canAddSubscribersGroup:
1181+
case ChannelPropertyName.canSubscribeGroup:
1182+
assert(value is GroupSettingValue);
11741183
case ChannelPropertyName.streamWeeklyTraffic:
11751184
assert(value is int?);
11761185
}

0 commit comments

Comments
 (0)