1414import com .fasterxml .jackson .annotation .Nulls ;
1515import com .fasterxml .jackson .databind .annotation .JsonDeserialize ;
1616import so .trophy .core .ObjectMappers ;
17+ import java .lang .Boolean ;
1718import java .lang .Object ;
1819import java .lang .String ;
1920import java .util .HashMap ;
2728 builder = StreakPreferences .Builder .class
2829)
2930public final class StreakPreferences {
31+ private final Optional <Boolean > enabled ;
32+
3033 private final Optional <StreakEvaluationModePreference > evaluationMode ;
3134
3235 private final Optional <List <StreakMetricPreference >> metrics ;
3336
3437 private final Map <String , Object > additionalProperties ;
3538
36- private StreakPreferences (Optional <StreakEvaluationModePreference > evaluationMode ,
39+ private StreakPreferences (Optional <Boolean > enabled ,
40+ Optional <StreakEvaluationModePreference > evaluationMode ,
3741 Optional <List <StreakMetricPreference >> metrics , Map <String , Object > additionalProperties ) {
42+ this .enabled = enabled ;
3843 this .evaluationMode = evaluationMode ;
3944 this .metrics = metrics ;
4045 this .additionalProperties = additionalProperties ;
4146 }
4247
48+ /**
49+ * @return Whether streaks are calculated for this user. When false, the user's streak is always 0 and streak webhooks and notifications are not sent.
50+ */
51+ @ JsonProperty ("enabled" )
52+ public Optional <Boolean > getEnabled () {
53+ return enabled ;
54+ }
55+
4356 @ JsonProperty ("evaluationMode" )
4457 public Optional <StreakEvaluationModePreference > getEvaluationMode () {
4558 return evaluationMode ;
@@ -65,12 +78,12 @@ public Map<String, Object> getAdditionalProperties() {
6578 }
6679
6780 private boolean equalTo (StreakPreferences other ) {
68- return evaluationMode .equals (other .evaluationMode ) && metrics .equals (other .metrics );
81+ return enabled . equals ( other . enabled ) && evaluationMode .equals (other .evaluationMode ) && metrics .equals (other .metrics );
6982 }
7083
7184 @ java .lang .Override
7285 public int hashCode () {
73- return Objects .hash (this .evaluationMode , this .metrics );
86+ return Objects .hash (this .enabled , this . evaluationMode , this .metrics );
7487 }
7588
7689 @ java .lang .Override
@@ -86,6 +99,8 @@ public static Builder builder() {
8699 ignoreUnknown = true
87100 )
88101 public static final class Builder {
102+ private Optional <Boolean > enabled = Optional .empty ();
103+
89104 private Optional <StreakEvaluationModePreference > evaluationMode = Optional .empty ();
90105
91106 private Optional <List <StreakMetricPreference >> metrics = Optional .empty ();
@@ -97,11 +112,29 @@ private Builder() {
97112 }
98113
99114 public Builder from (StreakPreferences other ) {
115+ enabled (other .getEnabled ());
100116 evaluationMode (other .getEvaluationMode ());
101117 metrics (other .getMetrics ());
102118 return this ;
103119 }
104120
121+ /**
122+ * <p>Whether streaks are calculated for this user. When false, the user's streak is always 0 and streak webhooks and notifications are not sent.</p>
123+ */
124+ @ JsonSetter (
125+ value = "enabled" ,
126+ nulls = Nulls .SKIP
127+ )
128+ public Builder enabled (Optional <Boolean > enabled ) {
129+ this .enabled = enabled ;
130+ return this ;
131+ }
132+
133+ public Builder enabled (Boolean enabled ) {
134+ this .enabled = Optional .ofNullable (enabled );
135+ return this ;
136+ }
137+
105138 @ JsonSetter (
106139 value = "evaluationMode" ,
107140 nulls = Nulls .SKIP
@@ -134,7 +167,7 @@ public Builder metrics(List<StreakMetricPreference> metrics) {
134167 }
135168
136169 public StreakPreferences build () {
137- return new StreakPreferences (evaluationMode , metrics , additionalProperties );
170+ return new StreakPreferences (enabled , evaluationMode , metrics , additionalProperties );
138171 }
139172 }
140173}
0 commit comments