@@ -21,6 +21,7 @@ class Contexts extends MapView<String, dynamic> {
21
21
SentryTraceContext ? trace,
22
22
SentryResponse ? response,
23
23
SentryFeedback ? feedback,
24
+ SentryFeatureFlags ? flags,
24
25
}) : super ({
25
26
SentryDevice .type: device,
26
27
SentryOperatingSystem .type: operatingSystem,
@@ -32,6 +33,7 @@ class Contexts extends MapView<String, dynamic> {
32
33
SentryTraceContext .type: trace,
33
34
SentryResponse .type: response,
34
35
SentryFeedback .type: feedback,
36
+ SentryFeatureFlags .type: flags,
35
37
});
36
38
37
39
/// Deserializes [Contexts] from JSON [Map] .
@@ -68,6 +70,9 @@ class Contexts extends MapView<String, dynamic> {
68
70
feedback: data[SentryFeedback .type] != null
69
71
? SentryFeedback .fromJson (Map .from (data[SentryFeedback .type]))
70
72
: null ,
73
+ flags: data[SentryFeatureFlags .type] != null
74
+ ? SentryFeatureFlags .fromJson (Map .from (data[SentryFeatureFlags .type]))
75
+ : null ,
71
76
);
72
77
73
78
data.keys
@@ -151,6 +156,11 @@ class Contexts extends MapView<String, dynamic> {
151
156
152
157
set feedback (SentryFeedback ? value) => this [SentryFeedback .type] = value;
153
158
159
+ /// Feature flags context for a feature flag event.
160
+ SentryFeatureFlags ? get flags => this [SentryFeatureFlags .type];
161
+
162
+ set flags (SentryFeatureFlags ? value) => this [SentryFeatureFlags .type] = value;
163
+
154
164
/// Produces a [Map] that can be serialized to JSON.
155
165
Map <String , dynamic > toJson () {
156
166
final json = < String , dynamic > {};
@@ -250,6 +260,13 @@ class Contexts extends MapView<String, dynamic> {
250
260
251
261
break ;
252
262
263
+ case SentryFeatureFlags .type:
264
+ final flagsMap = flags? .toJson ();
265
+ if (flagsMap? .isNotEmpty ?? false ) {
266
+ json[SentryFeatureFlags .type] = flagsMap;
267
+ }
268
+ break ;
269
+
253
270
default :
254
271
if (value != null ) {
255
272
json[key] = value;
@@ -273,6 +290,7 @@ class Contexts extends MapView<String, dynamic> {
273
290
response: response? .clone (),
274
291
runtimes: runtimes.map ((runtime) => runtime.clone ()).toList (),
275
292
feedback: feedback? .clone (),
293
+ flags: flags? .clone (),
276
294
)..addEntries (
277
295
entries.where ((element) => ! _defaultFields.contains (element.key)),
278
296
);
@@ -293,6 +311,7 @@ class Contexts extends MapView<String, dynamic> {
293
311
SentryTraceContext ? trace,
294
312
SentryResponse ? response,
295
313
SentryFeedback ? feedback,
314
+ SentryFeatureFlags ? flags,
296
315
}) =>
297
316
Contexts (
298
317
device: device ?? this .device,
@@ -306,6 +325,7 @@ class Contexts extends MapView<String, dynamic> {
306
325
trace: trace ?? this .trace,
307
326
response: response ?? this .response,
308
327
feedback: feedback ?? this .feedback,
328
+ flags: flags ?? this .flags,
309
329
)..addEntries (
310
330
entries.where ((element) => ! _defaultFields.contains (element.key)),
311
331
);
@@ -322,5 +342,6 @@ class Contexts extends MapView<String, dynamic> {
322
342
SentryTraceContext .type,
323
343
SentryResponse .type,
324
344
SentryFeedback .type,
345
+ SentryFeatureFlags .type,
325
346
];
326
347
}
0 commit comments