Skip to content

Commit 133d347

Browse files
committed
api: Add emailAddressVisibility to InitialSnapshot
Also add `emailAddressVisibility` to `PerAccountStore`. This is for backward compatibility to the Zulip server versions prior to Zulip 7.0 (FL 163) where there was realm-level `email_address_visibility` policy for which a user can see other user's real email address. Search for "email_address_visibility" in https://zulip.com/api/register-queue. This will become handy in the next commit(s) where the user's real email is shown in it's profile page. Note: This field is removed in Zulip 7.0 (FL 163) and replaced with: * https://zulip.com/api/update-settings#parameter-email_address_visibility * https://zulip.com/api/update-realm-user-settings-defaults#parameter-email_address_visibility
1 parent 1964388 commit 133d347

File tree

4 files changed

+36
-0
lines changed

4 files changed

+36
-0
lines changed

lib/api/model/initial_snapshot.dart

+18
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,15 @@ class InitialSnapshot {
2424

2525
final List<CustomProfileField> customProfileFields;
2626

27+
/// The realm-level policy for which a user can see other user's real email address.
28+
///
29+
/// Search for "email_address_visibility" in https://zulip.com/api/register-queue.
30+
///
31+
/// **Note:** This field is removed in Zulip 7.0 (FL 163) and replaced with:
32+
/// * https://zulip.com/api/update-settings#parameter-email_address_visibility
33+
/// * https://zulip.com/api/update-realm-user-settings-defaults#parameter-email_address_visibility
34+
final EmailAddressVisibility? emailAddressVisibility;
35+
2736
// TODO(server-8): Remove the default values.
2837
@JsonKey(defaultValue: 15000)
2938
final int serverTypingStartedExpiryPeriodMilliseconds;
@@ -94,6 +103,7 @@ class InitialSnapshot {
94103
required this.zulipMergeBase,
95104
required this.alertWords,
96105
required this.customProfileFields,
106+
required this.emailAddressVisibility,
97107
required this.serverTypingStartedExpiryPeriodMilliseconds,
98108
required this.serverTypingStoppedWaitPeriodMilliseconds,
99109
required this.serverTypingStartedWaitPeriodMilliseconds,
@@ -117,6 +127,14 @@ class InitialSnapshot {
117127
Map<String, dynamic> toJson() => _$InitialSnapshotToJson(this);
118128
}
119129

130+
enum EmailAddressVisibility {
131+
@JsonValue(1) everyone,
132+
@JsonValue(2) members,
133+
@JsonValue(3) admins,
134+
@JsonValue(4) nobody,
135+
@JsonValue(5) moderators,
136+
}
137+
120138
/// An item in `realm_default_external_accounts`.
121139
///
122140
/// For docs, search for "realm_default_external_accounts:"

lib/api/model/initial_snapshot.g.dart

+12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/model/store.dart

+4
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,7 @@ class PerAccountStore extends ChangeNotifier with ChannelStore, MessageStore {
236236
realmDefaultExternalAccounts: initialSnapshot.realmDefaultExternalAccounts,
237237
realmEmoji: initialSnapshot.realmEmoji,
238238
customProfileFields: _sortCustomProfileFields(initialSnapshot.customProfileFields),
239+
emailAddressVisibility: initialSnapshot.emailAddressVisibility,
239240
accountId: accountId,
240241
selfUserId: account.userId,
241242
userSettings: initialSnapshot.userSettings,
@@ -269,6 +270,7 @@ class PerAccountStore extends ChangeNotifier with ChannelStore, MessageStore {
269270
required this.realmDefaultExternalAccounts,
270271
required this.realmEmoji,
271272
required this.customProfileFields,
273+
required this.emailAddressVisibility,
272274
required this.accountId,
273275
required this.selfUserId,
274276
required this.userSettings,
@@ -311,6 +313,8 @@ class PerAccountStore extends ChangeNotifier with ChannelStore, MessageStore {
311313
final Map<String, RealmDefaultExternalAccount> realmDefaultExternalAccounts;
312314
Map<String, RealmEmojiItem> realmEmoji;
313315
List<CustomProfileField> customProfileFields;
316+
/// For docs, please see [InitialSnapshot.emailAddressVisibility].
317+
final EmailAddressVisibility? emailAddressVisibility;
314318

315319
////////////////////////////////
316320
// Data attached to the self-account on the realm.

test/example_data.dart

+2
Original file line numberDiff line numberDiff line change
@@ -575,6 +575,7 @@ InitialSnapshot initialSnapshot({
575575
String? zulipMergeBase,
576576
List<String>? alertWords,
577577
List<CustomProfileField>? customProfileFields,
578+
EmailAddressVisibility? emailAddressVisibility,
578579
int? serverTypingStartedExpiryPeriodMilliseconds,
579580
int? serverTypingStoppedWaitPeriodMilliseconds,
580581
int? serverTypingStartedWaitPeriodMilliseconds,
@@ -599,6 +600,7 @@ InitialSnapshot initialSnapshot({
599600
zulipMergeBase: zulipMergeBase ?? recentZulipVersion,
600601
alertWords: alertWords ?? ['klaxon'],
601602
customProfileFields: customProfileFields ?? [],
603+
emailAddressVisibility: EmailAddressVisibility.everyone,
602604
serverTypingStartedExpiryPeriodMilliseconds:
603605
serverTypingStartedExpiryPeriodMilliseconds ?? 15000,
604606
serverTypingStoppedWaitPeriodMilliseconds:

0 commit comments

Comments
 (0)