Skip to content

Commit

Permalink
fix(firebase_analytics): allow null values for `setDefaultEventPara…
Browse files Browse the repository at this point in the history
…meters()` which removes defaults. Permissible on android and iOS. (#9135)

Co-authored-by: Russell Wheatley <russellwheatley85@gmail.com>
  • Loading branch information
ueman and russellwheatley committed Jul 21, 2022
1 parent 9da7cc3 commit dff46a3
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 6 deletions.
Expand Up @@ -302,8 +302,7 @@ private Task<Void> setDefaultEventParameters(final Map<String, Object> arguments
cachedThreadPool.execute(
() -> {
try {
Map<String, Object> parameters = Objects.requireNonNull(arguments);
analytics.setDefaultEventParameters(createBundleFromMap(parameters));
analytics.setDefaultEventParameters(createBundleFromMap(arguments));
taskCompletionSource.setResult(null);
} catch (Exception e) {
taskCompletionSource.setException(e);
Expand Down
Expand Up @@ -120,7 +120,7 @@ class FirebaseAnalytics extends FirebasePluginPlatform {

/// Adds parameters that will be set on every event logged from the SDK, including automatic ones.
Future<void> setDefaultEventParameters(
Map<String, Object> defaultParameters,
Map<String, Object?>? defaultParameters,
) async {
await _delegate.setDefaultEventParameters(defaultParameters);
}
Expand Down
Expand Up @@ -82,7 +82,7 @@ class MethodChannelFirebaseAnalytics extends FirebaseAnalyticsPlatform {

@override
Future<void> setDefaultEventParameters(
Map<String, Object> defaultParameters,
Map<String, Object?>? defaultParameters,
) async {
try {
return channel.invokeMethod<void>(
Expand Down
Expand Up @@ -139,7 +139,7 @@ abstract class FirebaseAnalyticsPlatform extends PlatformInterface {

/// Adds parameters that will be set on every event logged from the SDK, including automatic ones.
Future<void> setDefaultEventParameters(
Map<String, Object> defaultParameters,
Map<String, Object?>? defaultParameters,
) {
throw UnimplementedError('setDefaultEventParameters() is not implemented');
}
Expand Down
Expand Up @@ -129,7 +129,7 @@ class FirebaseAnalyticsWeb extends FirebaseAnalyticsPlatform {

@override
Future<void> setDefaultEventParameters(
Map<String, Object> defaultParameters,
Map<String, Object?>? defaultParameters,
) async {
throw UnimplementedError(
'setDefaultEventParameters() is not supported on web',
Expand Down
22 changes: 22 additions & 0 deletions tests/test_driver/firebase_analytics/firebase_analytics_e2e.dart
Expand Up @@ -189,12 +189,34 @@ void setupTests() {
.setDefaultEventParameters({'default': 'parameters'}),
throwsA(isA<UnimplementedError>()),
);
// reset a single default parameter
await expectLater(
FirebaseAnalytics.instance
.setDefaultEventParameters({'default': null}),
throwsA(isA<UnimplementedError>()),
);
// reset all default parameters
await expectLater(
FirebaseAnalytics.instance.setDefaultEventParameters(null),
throwsA(isA<UnimplementedError>()),
);
} else {
await expectLater(
FirebaseAnalytics.instance
.setDefaultEventParameters({'default': 'parameters'}),
completes,
);
// reset a single default parameter
await expectLater(
FirebaseAnalytics.instance
.setDefaultEventParameters({'default': null}),
completes,
);
// reset all default parameters
await expectLater(
FirebaseAnalytics.instance.setDefaultEventParameters(null),
completes,
);
}
},
);
Expand Down

0 comments on commit dff46a3

Please sign in to comment.