Skip to content

Commit e385983

Browse files
committed
api: Add UserSettings.twentyFourHourTime
Not because we have an immediate need to read this user setting. Rather, this demonstrates how much boilerplate it would take, with the setup from the previous commit. As I mentioned there, I think it would be better if less boilerplate were needed, particularly in the new subclass of [UserSettingsUpdateEvent]. Hmm.
1 parent afb0615 commit e385983

File tree

5 files changed

+47
-0
lines changed

5 files changed

+47
-0
lines changed

lib/api/model/events.dart

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ sealed class UserSettingsUpdateEvent extends Event {
9797

9898
factory UserSettingsUpdateEvent.fromJson(Map<String, dynamic> json) {
9999
switch (UserSettingName.fromRawString(json['property'] as String)) {
100+
case UserSettingName.twentyFourHourTime:
101+
return UserSettingsUpdateEventTwentyFourHourTime.fromJson(json);
100102
case UserSettingName.displayEmojiReactionUsers:
101103
return UserSettingsUpdateEventDisplayEmojiReactionUsers.fromJson(json);
102104
case null:
@@ -105,6 +107,26 @@ sealed class UserSettingsUpdateEvent extends Event {
105107
}
106108
}
107109

110+
@JsonSerializable(fieldRename: FieldRename.snake)
111+
class UserSettingsUpdateEventTwentyFourHourTime extends UserSettingsUpdateEvent {
112+
@override
113+
@JsonKey(includeToJson: true)
114+
UserSettingName get property => UserSettingName.twentyFourHourTime;
115+
116+
final bool value;
117+
118+
UserSettingsUpdateEventTwentyFourHourTime({
119+
required super.id,
120+
required this.value,
121+
});
122+
123+
factory UserSettingsUpdateEventTwentyFourHourTime.fromJson(Map<String, dynamic> json) =>
124+
_$UserSettingsUpdateEventTwentyFourHourTimeFromJson(json);
125+
126+
@override
127+
Map<String, dynamic> toJson() => _$UserSettingsUpdateEventTwentyFourHourTimeToJson(this);
128+
}
129+
108130
@JsonSerializable(fieldRename: FieldRename.snake)
109131
class UserSettingsUpdateEventDisplayEmojiReactionUsers extends UserSettingsUpdateEvent {
110132
@override

lib/api/model/events.g.dart

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

lib/api/model/initial_snapshot.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ class RecentDmConversation {
119119
/// in <https://zulip.com/api/register-queue>.
120120
@JsonSerializable(fieldRename: FieldRename.snake, createFieldMap: true)
121121
class UserSettings {
122+
bool twentyFourHourTime;
122123
bool? displayEmojiReactionUsers; // TODO(server-6)
123124

124125
// TODO more, as needed. When adding a setting here, please also:
@@ -127,6 +128,7 @@ class UserSettings {
127128
// (3) handle that new subclass in [PerAccountStore]
128129

129130
UserSettings({
131+
required this.twentyFourHourTime,
130132
this.displayEmojiReactionUsers,
131133
});
132134

@@ -148,6 +150,7 @@ class UserSettings {
148150
/// to ensure that every setting in [UserSettings] responds to the event.
149151
@JsonEnum(fieldRename: FieldRename.snake, alwaysCreate: true)
150152
enum UserSettingName {
153+
twentyFourHourTime,
151154
displayEmojiReactionUsers;
152155

153156
/// Get a [UserSettingName] from a raw, snake-case string we recognize, else null.

lib/api/model/initial_snapshot.g.dart

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

lib/model/store.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,8 @@ class PerAccountStore extends ChangeNotifier {
222222
} else if (event is UserSettingsUpdateEvent) {
223223
assert(debugLog("server event: user_settings/update"));
224224
switch (event) {
225+
case UserSettingsUpdateEventTwentyFourHourTime():
226+
userSettings?.twentyFourHourTime = event.value;
225227
case UserSettingsUpdateEventDisplayEmojiReactionUsers():
226228
userSettings?.displayEmojiReactionUsers = event.value;
227229
case UserSettingsUpdateEventUnknown():

0 commit comments

Comments
 (0)