Skip to content

Commit 815a347

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 f662a01 commit 815a347

File tree

5 files changed

+43
-0
lines changed

5 files changed

+43
-0
lines changed

lib/api/model/events.dart

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

9696
factory UserSettingsUpdateEvent.fromJson(Map<String, dynamic> json) {
9797
switch (UserSettingName.fromRawString(json['property'] as String)) {
98+
case UserSettingName.twentyFourHourTime:
99+
return UserSettingsUpdateEventTwentyFourHourTime.fromJson(json);
98100
case UserSettingName.displayEmojiReactionUsers:
99101
return UserSettingsUpdateEventDisplayEmojiReactionUsers.fromJson(json);
100102
case null:
@@ -103,6 +105,22 @@ sealed class UserSettingsUpdateEvent extends Event {
103105
}
104106
}
105107

108+
@JsonSerializable(fieldRename: FieldRename.snake)
109+
class UserSettingsUpdateEventTwentyFourHourTime extends UserSettingsUpdateEvent {
110+
final bool value;
111+
112+
UserSettingsUpdateEventTwentyFourHourTime({
113+
required super.id,
114+
required this.value,
115+
});
116+
117+
factory UserSettingsUpdateEventTwentyFourHourTime.fromJson(Map<String, dynamic> json) =>
118+
_$UserSettingsUpdateEventTwentyFourHourTimeFromJson(json);
119+
120+
@override
121+
Map<String, dynamic> toJson() => _$UserSettingsUpdateEventTwentyFourHourTimeToJson(this);
122+
}
123+
106124
@JsonSerializable(fieldRename: FieldRename.snake)
107125
class UserSettingsUpdateEventDisplayEmojiReactionUsers extends UserSettingsUpdateEvent {
108126
final bool value;

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

@@ -143,6 +145,7 @@ class UserSettings {
143145
/// to ensure that every setting in [UserSettings] responds to the event.
144146
@JsonEnum(fieldRename: FieldRename.snake, alwaysCreate: true)
145147
enum UserSettingName {
148+
twentyFourHourTime,
146149
displayEmojiReactionUsers;
147150

148151
/// 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)