Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,10 @@ class MindboxAndroidPlugin : FlutterPlugin, MethodCallHandler, ActivityAware, Ne
.subscribeCustomerIfCreated(subscribeIfCreated)
.shouldCreateCustomer(shouldCreateCustomer)
.operationsDomain(operationsDomainArg)
.apply {
(args["shouldIncludeVersionCode"] as? Boolean)
?.let { shouldIncludeVersionCode(it) }
}
.build()
Mindbox.init(activity = context, config, listOf())
result.success("initialized")
Expand Down
11 changes: 11 additions & 0 deletions mindbox_platform_interface/lib/src/types/configuration.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ class Configuration {
this.previousInstallationId = '',
this.shouldCreateCustomer = true,
this.operationsDomain = '',
this.shouldIncludeVersionCode,
});

/// Used for generating baseurl for REST.
Expand Down Expand Up @@ -38,6 +39,14 @@ class Configuration {
/// first initialisation. Default is `true`.
final bool shouldCreateCustomer;

/// Specifies whether the app versionCode is included in the app version
/// reported to Mindbox. When `false`, only versionName is reported.
/// Android only, ignored on iOS.
///
/// When not provided, the key is not sent to the native SDK and its
/// default is used (`true` — versionCode is reported).
final bool? shouldIncludeVersionCode;

/// Returns map of parameters
Map<String, dynamic> toMap() => {
'domain': domain,
Expand All @@ -48,5 +57,7 @@ class Configuration {
'subscribeCustomerIfCreated': subscribeCustomerIfCreated,
'shouldCreateCustomer': shouldCreateCustomer,
'operationsDomain': operationsDomain,
if (shouldIncludeVersionCode != null)
'shouldIncludeVersionCode': shouldIncludeVersionCode,
};
}
44 changes: 44 additions & 0 deletions mindbox_platform_interface/test/src/types/configuration_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,48 @@ void main() {

expect(configuration.toMap()['operationsDomain'], '');
});

test('shouldIncludeVersionCode defaults to null when not provided', () {
final Configuration configuration = Configuration(
domain: 'domain',
endpointIos: 'iOSEndpoint',
endpointAndroid: 'androidEndpoint',
);

expect(configuration.shouldIncludeVersionCode, isNull);
});

test('toMap includes shouldIncludeVersionCode when set to false', () {
final Configuration configuration = Configuration(
domain: 'domain',
endpointIos: 'iOSEndpoint',
endpointAndroid: 'androidEndpoint',
shouldIncludeVersionCode: false,
);

expect(configuration.toMap()['shouldIncludeVersionCode'], false);
});

test('toMap includes shouldIncludeVersionCode when set to true', () {
final Configuration configuration = Configuration(
domain: 'domain',
endpointIos: 'iOSEndpoint',
endpointAndroid: 'androidEndpoint',
shouldIncludeVersionCode: true,
);

expect(configuration.toMap()['shouldIncludeVersionCode'], true);
});

test('toMap does not contain shouldIncludeVersionCode when not provided',
() {
final Configuration configuration = Configuration(
domain: 'domain',
endpointIos: 'iOSEndpoint',
endpointAndroid: 'androidEndpoint',
);

expect(
configuration.toMap().containsKey('shouldIncludeVersionCode'), false);
});
}
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,55 @@ void main() {
},
);

test(
'init() forwards shouldIncludeVersionCode to native channel when set',
() async {
final capturedArgs = <String, dynamic>{};
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
.setMockMethodCallHandler(channel, (call) async {
if (call.method == 'init') {
capturedArgs.addAll(Map<String, dynamic>.from(call.arguments));
}
return mindboxMockMethodCallHandler(call);
});

await handler.init(
configuration: Configuration(
domain: 'domain',
endpointIos: 'endpointIos',
endpointAndroid: 'endpointAndroid',
shouldIncludeVersionCode: false,
),
);

expect(capturedArgs['shouldIncludeVersionCode'], false);
},
);

test(
'init() does not forward shouldIncludeVersionCode when not provided',
() async {
final capturedArgs = <String, dynamic>{};
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
.setMockMethodCallHandler(channel, (call) async {
if (call.method == 'init') {
capturedArgs.addAll(Map<String, dynamic>.from(call.arguments));
}
return mindboxMockMethodCallHandler(call);
});

await handler.init(
configuration: Configuration(
domain: 'domain',
endpointIos: 'endpointIos',
endpointAndroid: 'endpointAndroid',
),
);

expect(capturedArgs.containsKey('shouldIncludeVersionCode'), isFalse);
},
);

test(
'When config is invalid, init() calling should throws MindboxException',
() async {
Expand Down