Skip to content

Commit 015130a

Browse files
committed
api: Update ZulipStream for API changes
1 parent 9cd7014 commit 015130a

File tree

5 files changed

+63
-7
lines changed

5 files changed

+63
-7
lines changed

lib/api/model/model.dart

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,17 @@ class ZulipStream {
252252
final StreamPostPolicy streamPostPolicy;
253253
// final bool isAnnouncementOnly; // deprecated for `streamPostPolicy`; ignore
254254

255-
final int? canRemoveSubscribersGroupId; // TODO(server-6)
255+
// TODO(server-6): `canRemoveSubscribersGroupId` added in FL 142
256+
// TODO(server-8): in FL 197 renamed to `canRemoveSubscribersGroup`
257+
@JsonKey(readValue: _readCanRemoveSubscribersGroup)
258+
final int? canRemoveSubscribersGroup;
259+
260+
// TODO(server-8): added in FL 199, was previously only on [Subscription] objects
261+
final int? streamWeeklyTraffic;
262+
263+
static int? _readCanRemoveSubscribersGroup(Map json, String key) {
264+
return json[key] ?? json['can_remove_subscribers_group_id'];
265+
}
256266

257267
ZulipStream({
258268
required this.streamId,
@@ -266,7 +276,8 @@ class ZulipStream {
266276
required this.historyPublicToSubscribers,
267277
required this.messageRetentionDays,
268278
required this.streamPostPolicy,
269-
required this.canRemoveSubscribersGroupId,
279+
required this.canRemoveSubscribersGroup,
280+
required this.streamWeeklyTraffic,
270281
});
271282

272283
factory ZulipStream.fromJson(Map<String, dynamic> json) =>

lib/api/model/model.g.dart

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

test/api/model/model_checks.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import 'package:checks/checks.dart';
22
import 'package:zulip/api/model/model.dart';
33

4+
extension ZulipStreamChecks on Subject<ZulipStream> {
5+
Subject<int?> get canRemoveSubscribersGroup => has((e) => e.canRemoveSubscribersGroup, 'canRemoveSubscribersGroup');
6+
}
7+
48
extension MessageChecks on Subject<Message> {
59
Subject<String> get content => has((e) => e.content, 'content');
610
Subject<bool> get isMeMessage => has((e) => e.isMeMessage, 'isMeMessage');

test/api/model/model_test.dart

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,43 @@ void main() {
6565
});
6666
});
6767

68+
group('ZulipStream.canRemoveSubscribersGroup', () {
69+
final Map<String, dynamic> baseJson = Map.unmodifiable({
70+
'stream_id': 123,
71+
'name': 'A stream',
72+
'description': 'A description',
73+
'rendered_description': '<p>A description</p>',
74+
'date_created': 1686774898,
75+
'first_message_id': null,
76+
'invite_only': false,
77+
'is_web_public': false,
78+
'history_public_to_subscribers': true,
79+
'message_retention_days': null,
80+
'stream_post_policy': StreamPostPolicy.any.apiValue,
81+
// 'can_remove_subscribers_group': null,
82+
'stream_weekly_traffic': null,
83+
});
84+
85+
test('smoke', () {
86+
check(ZulipStream.fromJson({ ...baseJson,
87+
'can_remove_subscribers_group': 123,
88+
})).canRemoveSubscribersGroup.equals(123);
89+
});
90+
91+
// TODO(server-8): field renamed in FL 197
92+
test('support old can_remove_subscribers_group_id', () {
93+
check(ZulipStream.fromJson({ ...baseJson,
94+
'can_remove_subscribers_group_id': 456,
95+
})).canRemoveSubscribersGroup.equals(456);
96+
});
97+
98+
// TODO(server-6): field added in FL 142
99+
test('support field missing', () {
100+
check(ZulipStream.fromJson({ ...baseJson,
101+
})).canRemoveSubscribersGroup.isNull();
102+
});
103+
});
104+
68105
group('Message', () {
69106
test('no crash on unrecognized flag', () {
70107
final m1 = Message.fromJson(

test/example_data.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,8 @@ ZulipStream stream({
104104
bool? historyPublicToSubscribers,
105105
int? messageRetentionDays,
106106
StreamPostPolicy? streamPostPolicy,
107-
int? canRemoveSubscribersGroupId,
107+
int? canRemoveSubscribersGroup,
108+
int? streamWeeklyTraffic,
108109
}) {
109110
return ZulipStream(
110111
streamId: streamId ?? 123, // TODO generate example IDs
@@ -118,7 +119,8 @@ ZulipStream stream({
118119
historyPublicToSubscribers: historyPublicToSubscribers ?? true,
119120
messageRetentionDays: messageRetentionDays,
120121
streamPostPolicy: streamPostPolicy ?? StreamPostPolicy.any,
121-
canRemoveSubscribersGroupId: canRemoveSubscribersGroupId ?? 123,
122+
canRemoveSubscribersGroup: canRemoveSubscribersGroup ?? 123,
123+
streamWeeklyTraffic: streamWeeklyTraffic,
122124
);
123125
}
124126
const _stream = stream;

0 commit comments

Comments
 (0)