@@ -44,8 +44,8 @@ class Mixpanel {
44
44
allProperties['optOutTrackingDefault' ] = optOutTrackingDefault;
45
45
allProperties['trackAutomaticEvents' ] = trackAutomaticEvents;
46
46
allProperties['mixpanelProperties' ] = _mixpanelProperties;
47
- allProperties['superProperties' ] = _MixpanelHelper .convertPropertiesForWeb (superProperties);
48
- allProperties['config' ] = _MixpanelHelper .convertPropertiesForWeb (config);
47
+ allProperties['superProperties' ] = _MixpanelHelper .ensureSerializableProperties (superProperties);
48
+ allProperties['config' ] = _MixpanelHelper .ensureSerializableProperties (config);
49
49
await _channel.invokeMethod <void >('initialize' , allProperties);
50
50
return Mixpanel (token);
51
51
}
@@ -198,7 +198,7 @@ class Mixpanel {
198
198
}) async {
199
199
if (_MixpanelHelper .isValidString (eventName)) {
200
200
await _channel.invokeMethod <void >('track' ,
201
- < String , dynamic > {'eventName' : eventName, 'properties' : _MixpanelHelper .convertPropertiesForWeb (properties)});
201
+ < String , dynamic > {'eventName' : eventName, 'properties' : _MixpanelHelper .ensureSerializableProperties (properties)});
202
202
} else {
203
203
developer.log ('`track` failed: eventName cannot be blank' ,
204
204
name: 'Mixpanel' );
@@ -231,8 +231,8 @@ class Mixpanel {
231
231
if (_MixpanelHelper .isValidString (eventName)) {
232
232
await _channel.invokeMethod <void >('trackWithGroups' , < String , dynamic > {
233
233
'eventName' : eventName,
234
- 'properties' : _MixpanelHelper .convertPropertiesForWeb (properties),
235
- 'groups' : _MixpanelHelper .convertPropertiesForWeb (groups)
234
+ 'properties' : _MixpanelHelper .ensureSerializableProperties (properties),
235
+ 'groups' : _MixpanelHelper .ensureSerializableProperties (groups)
236
236
});
237
237
} else {
238
238
developer.log ('`trackWithGroups` failed: eventName cannot be blank' ,
@@ -247,7 +247,7 @@ class Mixpanel {
247
247
void setGroup (String groupKey, dynamic groupID) {
248
248
if (_MixpanelHelper .isValidString (groupKey)) {
249
249
_channel.invokeMethod <void >('setGroup' ,
250
- < String , dynamic > {'groupKey' : groupKey, 'groupID' : _MixpanelHelper .convertValueForWeb (groupID)});
250
+ < String , dynamic > {'groupKey' : groupKey, 'groupID' : _MixpanelHelper .ensureSerializableValue (groupID)});
251
251
} else {
252
252
developer.log ('`setGroup` failed: groupKey cannot be blank' ,
253
253
name: 'Mixpanel' );
@@ -262,7 +262,7 @@ class Mixpanel {
262
262
/// return an instance of MixpanelGroup that you can use to update
263
263
/// records in Mixpanel Group Analytics
264
264
MixpanelGroup getGroup (String groupKey, dynamic groupID) {
265
- return new MixpanelGroup (this ._token, groupKey, _MixpanelHelper .convertValueForWeb (groupID));
265
+ return new MixpanelGroup (this ._token, groupKey, _MixpanelHelper .ensureSerializableValue (groupID));
266
266
}
267
267
268
268
/// Add a group to this user's membership for a particular group key
@@ -272,7 +272,7 @@ class Mixpanel {
272
272
void addGroup (String groupKey, dynamic groupID) {
273
273
if (_MixpanelHelper .isValidString (groupKey)) {
274
274
_channel.invokeMethod <void >('addGroup' ,
275
- < String , dynamic > {'groupKey' : groupKey, 'groupID' : _MixpanelHelper .convertValueForWeb (groupID)});
275
+ < String , dynamic > {'groupKey' : groupKey, 'groupID' : _MixpanelHelper .ensureSerializableValue (groupID)});
276
276
} else {
277
277
developer.log ('`addGroup` failed: groupKey cannot be blank' ,
278
278
name: 'Mixpanel' );
@@ -286,7 +286,7 @@ class Mixpanel {
286
286
void removeGroup (String groupKey, dynamic groupID) {
287
287
if (_MixpanelHelper .isValidString (groupKey)) {
288
288
_channel.invokeMethod <void >('removeGroup' ,
289
- < String , dynamic > {'groupKey' : groupKey, 'groupID' : _MixpanelHelper .convertValueForWeb (groupID)});
289
+ < String , dynamic > {'groupKey' : groupKey, 'groupID' : _MixpanelHelper .ensureSerializableValue (groupID)});
290
290
} else {
291
291
developer.log ('`removeGroup` failed: groupKey cannot be blank' ,
292
292
name: 'Mixpanel' );
@@ -303,7 +303,7 @@ class Mixpanel {
303
303
void deleteGroup (String groupKey, dynamic groupID) {
304
304
if (_MixpanelHelper .isValidString (groupKey)) {
305
305
_channel.invokeMethod <void >('deleteGroup' ,
306
- < String , dynamic > {'groupKey' : groupKey, 'groupID' : _MixpanelHelper .convertValueForWeb (groupID)});
306
+ < String , dynamic > {'groupKey' : groupKey, 'groupID' : _MixpanelHelper .ensureSerializableValue (groupID)});
307
307
} else {
308
308
developer.log ('`deleteGroup` failed: groupKey cannot be blank' ,
309
309
name: 'Mixpanel' );
@@ -325,7 +325,7 @@ class Mixpanel {
325
325
/// * [properties] A Map containing super properties to register
326
326
Future <void > registerSuperProperties (Map <String , dynamic > properties) async {
327
327
await _channel.invokeMethod <void >(
328
- 'registerSuperProperties' , < String , dynamic > {'properties' : _MixpanelHelper .convertPropertiesForWeb (properties)});
328
+ 'registerSuperProperties' , < String , dynamic > {'properties' : _MixpanelHelper .ensureSerializableProperties (properties)});
329
329
}
330
330
331
331
/// Register super properties for events, only if no other super property with the
@@ -338,7 +338,7 @@ class Mixpanel {
338
338
Map <String , dynamic > properties,
339
339
) async {
340
340
await _channel.invokeMethod <void >('registerSuperPropertiesOnce' ,
341
- < String , dynamic > {'properties' : _MixpanelHelper .convertPropertiesForWeb (properties)});
341
+ < String , dynamic > {'properties' : _MixpanelHelper .ensureSerializableProperties (properties)});
342
342
}
343
343
344
344
/// Remove a single superProperty, so that it will not be sent with future calls to track().
@@ -472,7 +472,7 @@ class People {
472
472
if (_MixpanelHelper .isValidString (prop)) {
473
473
Map <String , dynamic > properties = {prop: to};
474
474
_channel.invokeMethod <void >('set' ,
475
- < String , dynamic > {'token' : this ._token, 'properties' : _MixpanelHelper .convertPropertiesForWeb (properties)});
475
+ < String , dynamic > {'token' : this ._token, 'properties' : _MixpanelHelper .ensureSerializableProperties (properties)});
476
476
} else {
477
477
developer.log ('`people set` failed: prop cannot be blank' ,
478
478
name: 'Mixpanel' );
@@ -487,7 +487,7 @@ class People {
487
487
if (_MixpanelHelper .isValidString (prop)) {
488
488
Map <String , dynamic > properties = {prop: to};
489
489
_channel.invokeMethod <void >('setOnce' ,
490
- < String , dynamic > {'token' : this ._token, 'properties' : _MixpanelHelper .convertPropertiesForWeb (properties)});
490
+ < String , dynamic > {'token' : this ._token, 'properties' : _MixpanelHelper .ensureSerializableProperties (properties)});
491
491
} else {
492
492
developer.log ('`people setOnce` failed: prop cannot be blank' ,
493
493
name: 'Mixpanel' );
@@ -504,7 +504,7 @@ class People {
504
504
Map <String , dynamic > properties = {prop: by};
505
505
if (_MixpanelHelper .isValidString (prop)) {
506
506
_channel.invokeMethod <void >('increment' ,
507
- < String , dynamic > {'token' : this ._token, 'properties' : _MixpanelHelper .convertPropertiesForWeb (properties)});
507
+ < String , dynamic > {'token' : this ._token, 'properties' : _MixpanelHelper .ensureSerializableProperties (properties)});
508
508
} else {
509
509
developer.log ('`people increment` failed: prop cannot be blank' ,
510
510
name: 'Mixpanel' );
@@ -521,12 +521,12 @@ class People {
521
521
if (kIsWeb || Platform .isIOS) {
522
522
Map <String , dynamic > properties = {name: value};
523
523
_channel.invokeMethod <void >('append' ,
524
- < String , dynamic > {'token' : this ._token, 'properties' : _MixpanelHelper .convertPropertiesForWeb (properties)});
524
+ < String , dynamic > {'token' : this ._token, 'properties' : _MixpanelHelper .ensureSerializableProperties (properties)});
525
525
} else {
526
526
_channel.invokeMethod <void >('append' , < String , dynamic > {
527
527
'token' : this ._token,
528
528
'name' : name,
529
- 'value' : _MixpanelHelper .convertValueForWeb (value)
529
+ 'value' : _MixpanelHelper .ensureSerializableValue (value)
530
530
});
531
531
}
532
532
} else {
@@ -546,12 +546,12 @@ class People {
546
546
if (kIsWeb || Platform .isIOS) {
547
547
Map <String , dynamic > properties = {name: value};
548
548
_channel.invokeMethod <void >('union' ,
549
- < String , dynamic > {'token' : this ._token, 'properties' : _MixpanelHelper .convertPropertiesForWeb (properties)});
549
+ < String , dynamic > {'token' : this ._token, 'properties' : _MixpanelHelper .ensureSerializableProperties (properties)});
550
550
} else {
551
551
_channel.invokeMethod <void >('union' , < String , dynamic > {
552
552
'token' : this ._token,
553
553
'name' : name,
554
- 'value' : _MixpanelHelper .convertValueForWeb (value)
554
+ 'value' : _MixpanelHelper .ensureSerializableValue (value)
555
555
});
556
556
}
557
557
} else {
@@ -571,12 +571,12 @@ class People {
571
571
if (kIsWeb || Platform .isIOS) {
572
572
Map <String , dynamic > properties = {name: value};
573
573
_channel.invokeMethod <void >('remove' ,
574
- < String , dynamic > {'token' : this ._token, 'properties' : _MixpanelHelper .convertPropertiesForWeb (properties)});
574
+ < String , dynamic > {'token' : this ._token, 'properties' : _MixpanelHelper .ensureSerializableProperties (properties)});
575
575
} else {
576
576
_channel.invokeMethod <void >('remove' , < String , dynamic > {
577
577
'token' : this ._token,
578
578
'name' : name,
579
- 'value' : _MixpanelHelper .convertValueForWeb (value)
579
+ 'value' : _MixpanelHelper .ensureSerializableValue (value)
580
580
});
581
581
}
582
582
} else {
@@ -608,7 +608,7 @@ class People {
608
608
_channel.invokeMethod <void >('trackCharge' , < String , dynamic > {
609
609
'token' : this ._token,
610
610
'amount' : amount,
611
- 'properties' : _MixpanelHelper .convertPropertiesForWeb (properties)
611
+ 'properties' : _MixpanelHelper .ensureSerializableProperties (properties)
612
612
});
613
613
} else {
614
614
developer.log ('`people trackCharge` failed: amount cannot be blank' ,
@@ -664,7 +664,7 @@ class MixpanelGroup {
664
664
'token' : this ._token,
665
665
'groupKey' : this ._groupKey,
666
666
'groupID' : this ._groupID,
667
- 'properties' : _MixpanelHelper .convertPropertiesForWeb (properties)
667
+ 'properties' : _MixpanelHelper .ensureSerializableProperties (properties)
668
668
});
669
669
} else {
670
670
developer.log ('`group set` failed: prop cannot be blank' ,
@@ -684,7 +684,7 @@ class MixpanelGroup {
684
684
'token' : this ._token,
685
685
'groupKey' : this ._groupKey,
686
686
'groupID' : this ._groupID,
687
- 'properties' : _MixpanelHelper .convertPropertiesForWeb (properties)
687
+ 'properties' : _MixpanelHelper .ensureSerializableProperties (properties)
688
688
});
689
689
} else {
690
690
developer.log ('`group setOnce` failed: prop cannot be blank' ,
@@ -722,7 +722,7 @@ class MixpanelGroup {
722
722
'groupKey' : this ._groupKey,
723
723
'groupID' : this ._groupID,
724
724
'name' : name,
725
- 'value' : _MixpanelHelper .convertValueForWeb (value)
725
+ 'value' : _MixpanelHelper .ensureSerializableValue (value)
726
726
});
727
727
} else {
728
728
developer.log ('`group remove` failed: name cannot be blank' ,
@@ -753,7 +753,7 @@ class MixpanelGroup {
753
753
'groupKey' : this ._groupKey,
754
754
'groupID' : this ._groupID,
755
755
'name' : name,
756
- 'value' : _MixpanelHelper .convertValueForWeb (value)
756
+ 'value' : _MixpanelHelper .ensureSerializableValue (value)
757
757
});
758
758
}
759
759
}
@@ -765,7 +765,7 @@ class _MixpanelHelper {
765
765
}
766
766
767
767
/// Converts complex types to basic types for web platform
768
- static dynamic convertValueForWeb (dynamic value) {
768
+ static dynamic ensureSerializableValue (dynamic value) {
769
769
if (! kIsWeb) {
770
770
return value;
771
771
}
@@ -776,19 +776,19 @@ class _MixpanelHelper {
776
776
} else if (value is Uri ) {
777
777
return value.toString ();
778
778
} else if (value is Map ) {
779
- return value.map ((k, v) => MapEntry (k, convertValueForWeb (v)));
779
+ return value.map ((k, v) => MapEntry (k, ensureSerializableValue (v)));
780
780
} else if (value is List ) {
781
- return value.map ((v) => convertValueForWeb (v)).toList ();
781
+ return value.map ((v) => ensureSerializableValue (v)).toList ();
782
782
} else {
783
783
return value;
784
784
}
785
785
}
786
786
787
787
/// Converts properties map for web platform
788
- static Map <String , dynamic >? convertPropertiesForWeb (Map <String , dynamic >? properties) {
788
+ static Map <String , dynamic >? ensureSerializableProperties (Map <String , dynamic >? properties) {
789
789
if (! kIsWeb || properties == null ) {
790
790
return properties;
791
791
}
792
- return properties.map ((k, v) => MapEntry (k, convertValueForWeb (v)));
792
+ return properties.map ((k, v) => MapEntry (k, ensureSerializableValue (v)));
793
793
}
794
794
}
0 commit comments