From ab052abcf861ae4d783d7076774b453a7e78f23f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gast=C3=B3n=20Thea?= Date: Mon, 22 May 2023 16:48:13 -0300 Subject: [PATCH 1/9] UC methods in platform (#72) --- .../lib/method_channel_platform.dart | 18 ++++++++++++ .../lib/splitio_platform_interface.dart | 8 +++++ .../test/method_channel_platform_test.dart | 29 +++++++++++++++++-- 3 files changed, 53 insertions(+), 2 deletions(-) diff --git a/splitio_platform_interface/lib/method_channel_platform.dart b/splitio_platform_interface/lib/method_channel_platform.dart index b499305..8132d28 100644 --- a/splitio_platform_interface/lib/method_channel_platform.dart +++ b/splitio_platform_interface/lib/method_channel_platform.dart @@ -324,6 +324,24 @@ class MethodChannelPlatform extends SplitioPlatform { return _impressionsMethodCallHandler.stream(); } + @override + Future getUserConsent() async { + String invokeMethod = + (await _methodChannel.invokeMethod('getUserConsent')) as String; + if (invokeMethod == 'granted') { + return UserConsent.granted; + } else if (invokeMethod == 'declined') { + return UserConsent.declined; + } else { + return UserConsent.unknown; + } + } + + @override + Future setUserConsent(bool enabled) async { + await _methodChannel.invokeMethod('setUserConsent', {'value': enabled}); + } + String _buildMapKey(String matchingKey, String? bucketingKey) { return '${matchingKey}_$bucketingKey'; } diff --git a/splitio_platform_interface/lib/splitio_platform_interface.dart b/splitio_platform_interface/lib/splitio_platform_interface.dart index 729e001..3e71adb 100644 --- a/splitio_platform_interface/lib/splitio_platform_interface.dart +++ b/splitio_platform_interface/lib/splitio_platform_interface.dart @@ -47,6 +47,14 @@ abstract class _FactoryPlatform { Stream impressionsStream() { throw UnimplementedError(); } + + Future getUserConsent() { + throw UnimplementedError(); + } + + Future setUserConsent(bool enabled) { + throw UnimplementedError(); + } } abstract class _ClientPlatform { diff --git a/splitio_platform_interface/test/method_channel_platform_test.dart b/splitio_platform_interface/test/method_channel_platform_test.dart index 72cb4ed..21ed1e2 100644 --- a/splitio_platform_interface/test/method_channel_platform_test.dart +++ b/splitio_platform_interface/test/method_channel_platform_test.dart @@ -54,6 +54,8 @@ void main() { case 'removeAttribute': case 'clearAttributes': return true; + case 'getUserConsent': + return 'declined'; } return null; }); @@ -372,8 +374,8 @@ void main() { apiKey: 'api-key', matchingKey: 'matching-key', bucketingKey: 'bucketing-key', - sdkConfiguration: - SplitConfiguration(logLevel: SplitLogLevel.debug, streamingEnabled: false)); + sdkConfiguration: SplitConfiguration( + logLevel: SplitLogLevel.debug, streamingEnabled: false)); expect(methodName, 'init'); expect(methodArguments, { 'apiKey': 'api-key', @@ -514,4 +516,27 @@ void main() { 'attributes': {} }); }); + + group('userConsent', () { + test('get user consent', () async { + UserConsent userConsent = await _platform.getUserConsent(); + + expect(methodName, 'getUserConsent'); + expect(userConsent, UserConsent.declined); + }); + + test('set user consent enabled', () { + _platform.setUserConsent(true); + + expect(methodName, 'setUserConsent'); + expect(methodArguments, {'value': true}); + }); + + test('set user consent disabled', () { + _platform.setUserConsent(false); + + expect(methodName, 'setUserConsent'); + expect(methodArguments, {'value': false}); + }); + }); } From f09bd8dead4940c23f89313d7cdf51a8e3f875a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gast=C3=B3n=20Thea?= Date: Mon, 22 May 2023 20:12:01 -0300 Subject: [PATCH 2/9] UC in splitio (#73) --- splitio/lib/splitio.dart | 8 ++++++++ splitio/pubspec.yaml | 12 +++++++++--- splitio/test/splitio_platform_stub.dart | 15 +++++++++++++++ splitio/test/splitio_test.dart | 22 ++++++++++++++++++++++ splitio_android/pubspec.yaml | 4 +++- splitio_ios/pubspec.yaml | 4 +++- 6 files changed, 60 insertions(+), 5 deletions(-) diff --git a/splitio/lib/splitio.dart b/splitio/lib/splitio.dart index 3db1151..f20b066 100644 --- a/splitio/lib/splitio.dart +++ b/splitio/lib/splitio.dart @@ -121,6 +121,14 @@ class Splitio { return _platform.split(splitName: splitName); } + Future getUserConsent() async { + return _platform.getUserConsent(); + } + + Future setUserConsent(bool enabled) async { + return _platform.setUserConsent(enabled); + } + Future _init() { return _platform.init( apiKey: _sdkKey, diff --git a/splitio/pubspec.yaml b/splitio/pubspec.yaml index 650fcbc..1437b31 100644 --- a/splitio/pubspec.yaml +++ b/splitio/pubspec.yaml @@ -19,9 +19,15 @@ flutter: dependencies: flutter: sdk: flutter - splitio_android: ^0.1.3 - splitio_ios: ^0.1.3 - splitio_platform_interface: ^1.1.0 +# splitio_android: ^0.1.3 + splitio_android: + path: ../splitio_android +# splitio_ios: ^0.1.3 + splitio_ios: + path: ../splitio_ios +# splitio_platform_interface: ^1.1.0 + splitio_platform_interface: + path: ../splitio_platform_interface dev_dependencies: flutter_test: diff --git a/splitio/test/splitio_platform_stub.dart b/splitio/test/splitio_platform_stub.dart index 29f1526..369cc83 100644 --- a/splitio/test/splitio_platform_stub.dart +++ b/splitio/test/splitio_platform_stub.dart @@ -339,4 +339,19 @@ class SplitioPlatformStub return Future.value(true); } + + @override + Future getUserConsent() { + methodName = 'getUserConsent'; + + return Future.value(UserConsent.granted); + } + + @override + Future setUserConsent(bool enabled) { + methodName = 'setUserConsent'; + methodArguments['value'] = enabled; + + return Future.value(null); + } } diff --git a/splitio/test/splitio_test.dart b/splitio/test/splitio_test.dart index ac227f2..87ad6e4 100644 --- a/splitio/test/splitio_test.dart +++ b/splitio/test/splitio_test.dart @@ -101,4 +101,26 @@ void main() { expect(_platform.methodArguments, {'splitName': 'my_split'}); }); }); + + group('userConsent', () { + test('get user consent', () async { + var splitio = Splitio('api-key', 'matching-key'); + splitio.getUserConsent(); + + expect(_platform.methodName, 'getUserConsent'); + }); + + test('set user consent', () async { + var splitio = Splitio('api-key', 'matching-key'); + splitio.setUserConsent(true); + + expect(_platform.methodName, 'setUserConsent'); + expect(_platform.methodArguments, { + 'matchingKey': 'matching-key', + 'apiKey': 'api-key', + 'sdkConfiguration': {}, + 'value': true, + }); + }); + }); } diff --git a/splitio_android/pubspec.yaml b/splitio_android/pubspec.yaml index 33d267c..33684f1 100644 --- a/splitio_android/pubspec.yaml +++ b/splitio_android/pubspec.yaml @@ -19,7 +19,9 @@ flutter: dependencies: flutter: sdk: flutter - splitio_platform_interface: ^1.1.0 +# splitio_platform_interface: ^1.1.0 + splitio_platform_interface: + path: ../splitio_platform_interface dev_dependencies: flutter_test: diff --git a/splitio_ios/pubspec.yaml b/splitio_ios/pubspec.yaml index 4481a13..a2dd2b9 100644 --- a/splitio_ios/pubspec.yaml +++ b/splitio_ios/pubspec.yaml @@ -18,7 +18,9 @@ flutter: dependencies: flutter: sdk: flutter - splitio_platform_interface: ^1.1.0 +# splitio_platform_interface: ^1.1.0 + splitio_platform_interface: + path: ../splitio_platform_interface dev_dependencies: flutter_test: From 8a42b5fb00506105fa4f44ae0d8b8be7773c6192 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gast=C3=B3n=20Thea?= Date: Mon, 22 May 2023 20:12:32 -0300 Subject: [PATCH 3/9] UC in splitio_ios (#74) --- .../SplitTests/SplitMethodParserTests.swift | 35 +++++++++++++++++++ .../example/ios/SplitTests/SplitTests.swift | 20 +++++++++++ splitio_ios/ios/Classes/Constants.swift | 2 ++ .../ios/Classes/SplitMethodParser.swift | 6 ++++ splitio_ios/ios/Classes/SplitWrapper.swift | 26 ++++++++++++++ 5 files changed, 89 insertions(+) diff --git a/splitio_ios/example/ios/SplitTests/SplitMethodParserTests.swift b/splitio_ios/example/ios/SplitTests/SplitMethodParserTests.swift index 12fa488..e2d96a2 100644 --- a/splitio_ios/example/ios/SplitTests/SplitMethodParserTests.swift +++ b/splitio_ios/example/ios/SplitTests/SplitMethodParserTests.swift @@ -297,6 +297,28 @@ class SplitMethodParserTests: XCTestCase { XCTAssert(providerHelper.splitClientConfigValue?.impressionListener != nil) XCTAssert(providerHelper.splitClientConfigValue?.streamingEnabled == false) } + + func testGetUserConsent() { + methodParser?.onMethodCall(methodName: "getUserConsent", arguments: [], result: { (_: Any?) in }) + + guard let wrapper = splitWrapper as? SplitWrapperStub else { + XCTFail() + return + } + + XCTAssert(wrapper.userConsent == "unknown") + } + + func testSetUserConsent() { + methodParser?.onMethodCall(methodName: "setUserConsent", arguments: [], result: { (_: Any?) in }) + + guard let wrapper = splitWrapper as? SplitWrapperStub else { + XCTFail() + return + } + + XCTAssert(wrapper.userConsent == "declined") + } } class SplitWrapperStub: SplitWrapper { @@ -316,6 +338,7 @@ class SplitWrapperStub: SplitWrapper { var attributeNameValue: String = "" var splitsCalled = false var splitNamesCalled = false + var userConsent = "unknown" func getClient(matchingKey: String, bucketingKey: String?) -> SplitClient? { matchingKeyValue = matchingKey @@ -440,6 +463,18 @@ class SplitWrapperStub: SplitWrapper { splitNameValue = splitName return nil } + + func getUserConsent() -> String { + return userConsent + } + + func setUserConsent(enabled: Bool) { + if (enabled) { + userConsent = "granted" + } else { + userConsent = "declined" + } + } } class SplitProviderHelperStub: SplitProviderHelper { diff --git a/splitio_ios/example/ios/SplitTests/SplitTests.swift b/splitio_ios/example/ios/SplitTests/SplitTests.swift index 7853301..e4c02ad 100644 --- a/splitio_ios/example/ios/SplitTests/SplitTests.swift +++ b/splitio_ios/example/ios/SplitTests/SplitTests.swift @@ -181,6 +181,26 @@ class SplitTests: XCTestCase { let split = splitWrapper.split(splitName: "my-split") XCTAssert(manager.splitNameValue == "my-split") } + + func testGetUserConsent() { + let manager = SplitManagerStub() + let factoryProvider = SplitFactoryProviderStub(manager: manager) + splitWrapper = DefaultSplitWrapper(splitFactoryProvider: factoryProvider) + let userConsent = splitWrapper.getUserConsent() + XCTAssert(userConsent == "unknown") + } + + func testSetUserConsent() { + let manager = SplitManagerStub() + let factoryProvider = SplitFactoryProviderStub(manager: manager) + splitWrapper = DefaultSplitWrapper(splitFactoryProvider: factoryProvider) + splitWrapper.setUserConsent(enabled: true) + let grantedUserConsent = splitWrapper.getUserConsent() + splitWrapper.setUserConsent(enabled: false) + let declinedUserConsent = splitWrapper.getUserConsent() + XCTAssert(grantedUserConsent == "granted") + XCTAssert(declinedUserConsent == "declined") + } } class SplitFactoryProviderStub: SplitFactoryProvider { diff --git a/splitio_ios/ios/Classes/Constants.swift b/splitio_ios/ios/Classes/Constants.swift index c5e6cce..bea9d65 100644 --- a/splitio_ios/ios/Classes/Constants.swift +++ b/splitio_ios/ios/Classes/Constants.swift @@ -24,6 +24,8 @@ enum Method: String { case splits = "splits" case split = "split" case impressionLog = "impressionLog" + case getUserConsent = "getUserConsent" + case setUserConsent = "setUserConsent" } enum Argument: String { diff --git a/splitio_ios/ios/Classes/SplitMethodParser.swift b/splitio_ios/ios/Classes/SplitMethodParser.swift index d4c6aba..6c8a216 100644 --- a/splitio_ios/ios/Classes/SplitMethodParser.swift +++ b/splitio_ios/ios/Classes/SplitMethodParser.swift @@ -133,6 +133,12 @@ class DefaultSplitMethodParser: SplitMethodParser { case .split: result(SplitView.asMap(splitView: splitWrapper?.split(splitName: argumentParser.getStringArgument(argumentName: .splitName, arguments: arguments) ?? ""))) break + case .getUserConsent: + result(splitWrapper?.getUserConsent()) + break + case .setUserConsent: + splitWrapper?.setUserConsent(enabled: argumentParser.getBooleanArgument(argumentName: .value, arguments: arguments)) + result(nil) default: result(FlutterMethodNotImplemented) break diff --git a/splitio_ios/ios/Classes/SplitWrapper.swift b/splitio_ios/ios/Classes/SplitWrapper.swift index f9b65d9..69e764f 100644 --- a/splitio_ios/ios/Classes/SplitWrapper.swift +++ b/splitio_ios/ios/Classes/SplitWrapper.swift @@ -16,6 +16,10 @@ protocol SplitWrapper: EvaluationWrapper, AttributesWrapper { func splits() -> [SplitView] func split(splitName: String) -> SplitView? + + func getUserConsent() -> String + + func setUserConsent(enabled: Bool) } protocol EvaluationWrapper { @@ -227,4 +231,26 @@ class DefaultSplitWrapper: SplitWrapper { return nil } } + + func getUserConsent() -> String { + if let splitFactory = splitFactory { + let userConsent: UserConsent = splitFactory.userConsent + + if (userConsent == .granted) { + return "granted" + } else if (userConsent == .declined) { + return "declined" + } else { + return "unknown" + } + } else { + return "unknown" + } + } + + func setUserConsent(enabled: Bool) { + if let splitFactory = splitFactory { + splitFactory.setUserConsent(enabled: enabled) + } + } } From b293ea078fad0138fbbe8167da25460f0b05eaf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gast=C3=B3n=20Thea?= Date: Mon, 22 May 2023 20:12:55 -0300 Subject: [PATCH 4/9] UC in splitio_android (#75) --- .../main/java/io/split/splitio/Constants.java | 2 ++ .../split/splitio/SplitMethodParserImpl.java | 9 ++++++ .../java/io/split/splitio/SplitWrapper.java | 4 +++ .../io/split/splitio/SplitWrapperImpl.java | 18 ++++++++++++ .../splitio/SplitMethodParserImplTest.java | 29 +++++++++++++++++++ .../split/splitio/SplitWrapperImplTest.java | 16 ++++++++++ .../test/splitio_android_test.dart | 23 +++++++++++++++ 7 files changed, 101 insertions(+) diff --git a/splitio_android/android/src/main/java/io/split/splitio/Constants.java b/splitio_android/android/src/main/java/io/split/splitio/Constants.java index 461a553..35ceb63 100644 --- a/splitio_android/android/src/main/java/io/split/splitio/Constants.java +++ b/splitio_android/android/src/main/java/io/split/splitio/Constants.java @@ -26,6 +26,8 @@ static class Method { static final String SPLIT_NAMES = "splitNames"; static final String SPLIT = "split"; static final String IMPRESSION_LOG = "impressionLog"; + static final String GET_USER_CONSENT = "getUserConsent"; + static final String SET_USER_CONSENT = "setUserConsent"; } static class Argument { diff --git a/splitio_android/android/src/main/java/io/split/splitio/SplitMethodParserImpl.java b/splitio_android/android/src/main/java/io/split/splitio/SplitMethodParserImpl.java index d3c7f1a..fb3ad5d 100644 --- a/splitio_android/android/src/main/java/io/split/splitio/SplitMethodParserImpl.java +++ b/splitio_android/android/src/main/java/io/split/splitio/SplitMethodParserImpl.java @@ -27,10 +27,12 @@ import static io.split.splitio.Constants.Method.GET_TREATMENTS; import static io.split.splitio.Constants.Method.GET_TREATMENTS_WITH_CONFIG; import static io.split.splitio.Constants.Method.GET_TREATMENT_WITH_CONFIG; +import static io.split.splitio.Constants.Method.GET_USER_CONSENT; import static io.split.splitio.Constants.Method.INIT; import static io.split.splitio.Constants.Method.REMOVE_ATTRIBUTE; import static io.split.splitio.Constants.Method.SET_ATTRIBUTE; import static io.split.splitio.Constants.Method.SET_ATTRIBUTES; +import static io.split.splitio.Constants.Method.SET_USER_CONSENT; import static io.split.splitio.Constants.Method.SPLIT; import static io.split.splitio.Constants.Method.SPLITS; import static io.split.splitio.Constants.Method.SPLIT_NAMES; @@ -195,6 +197,13 @@ public void onMethodCall(String methodName, Object arguments, @NonNull MethodCha case SPLIT: result.success(getSplitViewAsMap(mSplitWrapper.split(mArgumentParser.getStringArgument(SPLIT_NAME, arguments)))); break; + case GET_USER_CONSENT: + result.success(mSplitWrapper.getUserConsent()); + break; + case SET_USER_CONSENT: + mSplitWrapper.setUserConsent(mArgumentParser.getBooleanArgument(VALUE, arguments)); + result.success(null); + break; default: result.notImplemented(); break; diff --git a/splitio_android/android/src/main/java/io/split/splitio/SplitWrapper.java b/splitio_android/android/src/main/java/io/split/splitio/SplitWrapper.java index f1b9d4b..54faa28 100644 --- a/splitio_android/android/src/main/java/io/split/splitio/SplitWrapper.java +++ b/splitio_android/android/src/main/java/io/split/splitio/SplitWrapper.java @@ -24,4 +24,8 @@ interface SplitWrapper extends EvaluationWrapper, AttributesWrapper { @Nullable SplitView split(String splitName); + + String getUserConsent(); + + void setUserConsent(boolean enabled); } diff --git a/splitio_android/android/src/main/java/io/split/splitio/SplitWrapperImpl.java b/splitio_android/android/src/main/java/io/split/splitio/SplitWrapperImpl.java index ec90e0b..b445908 100644 --- a/splitio_android/android/src/main/java/io/split/splitio/SplitWrapperImpl.java +++ b/splitio_android/android/src/main/java/io/split/splitio/SplitWrapperImpl.java @@ -15,6 +15,7 @@ import io.split.android.client.SplitResult; import io.split.android.client.api.Key; import io.split.android.client.api.SplitView; +import io.split.android.client.shared.UserConsent; import io.split.android.client.utils.ConcurrentSet; import io.split.android.grammar.Treatments; @@ -222,4 +223,21 @@ public List splits() { public SplitView split(String splitName) { return mSplitFactory.manager().split(splitName); } + + @Override + public String getUserConsent() { + UserConsent userConsent = mSplitFactory.getUserConsent(); + if (userConsent == UserConsent.GRANTED) { + return "granted"; + } else if (userConsent == UserConsent.DECLINED) { + return "declined"; + } else { + return "unknown"; + } + } + + @Override + public void setUserConsent(boolean enabled) { + mSplitFactory.setUserConsent(enabled); + } } diff --git a/splitio_android/android/src/test/java/io/split/splitio/SplitMethodParserImplTest.java b/splitio_android/android/src/test/java/io/split/splitio/SplitMethodParserImplTest.java index 3245c38..538ea0e 100644 --- a/splitio_android/android/src/test/java/io/split/splitio/SplitMethodParserImplTest.java +++ b/splitio_android/android/src/test/java/io/split/splitio/SplitMethodParserImplTest.java @@ -475,4 +475,33 @@ public void initialization() { eq("bucketing-key"), argThat(splitClientConfig -> splitClientConfig.impressionListener() != null && !splitClientConfig.streamingEnabled())); } + + @Test + public void getUserConsent() { + when(mSplitWrapper.getUserConsent()).thenReturn("granted"); + mMethodParser.onMethodCall("getUserConsent", Collections.emptyMap(), mResult); + + verify(mResult).success("granted"); + verify(mSplitWrapper).getUserConsent(); + } + + @Test + public void setUserConsentEnabled() { + when(mArgumentParser.getBooleanArgument("value", Collections.singletonMap("value", true))).thenReturn(true); + when(mArgumentParser.getBooleanArgument("value", Collections.singletonMap("value", false))).thenReturn(false); + mMethodParser.onMethodCall("setUserConsent", Collections.singletonMap("value", true), mResult); + + verify(mResult).success(null); + verify(mSplitWrapper).setUserConsent(true); + } + + @Test + public void setUserConsentDisabled() { + when(mArgumentParser.getBooleanArgument("value", Collections.singletonMap("value", true))).thenReturn(true); + when(mArgumentParser.getBooleanArgument("value", Collections.singletonMap("value", false))).thenReturn(false); + mMethodParser.onMethodCall("setUserConsent", Collections.singletonMap("value", false), mResult); + + verify(mResult).success(null); + verify(mSplitWrapper).setUserConsent(false); + } } diff --git a/splitio_android/android/src/test/java/io/split/splitio/SplitWrapperImplTest.java b/splitio_android/android/src/test/java/io/split/splitio/SplitWrapperImplTest.java index ceb5572..200f785 100644 --- a/splitio_android/android/src/test/java/io/split/splitio/SplitWrapperImplTest.java +++ b/splitio_android/android/src/test/java/io/split/splitio/SplitWrapperImplTest.java @@ -22,6 +22,7 @@ import io.split.android.client.SplitFactory; import io.split.android.client.SplitManager; import io.split.android.client.api.Key; +import io.split.android.client.shared.UserConsent; public class SplitWrapperImplTest { @@ -277,4 +278,19 @@ public void testSplit() { verify(managerMock).split("my_split"); } + + @Test + public void testGetUserConsent() { + when(mSplitFactory.getUserConsent()).thenReturn(UserConsent.DECLINED); + String userConsent = mSplitWrapper.getUserConsent(); + + verify(mSplitFactory).getUserConsent(); + assertEquals("declined", userConsent); + } + + @Test + public void testSetUserConsent() { + mSplitWrapper.setUserConsent(true); + verify(mSplitFactory).setUserConsent(true); + } } diff --git a/splitio_android/test/splitio_android_test.dart b/splitio_android/test/splitio_android_test.dart index a2def3f..34d65a4 100644 --- a/splitio_android/test/splitio_android_test.dart +++ b/splitio_android/test/splitio_android_test.dart @@ -514,4 +514,27 @@ void main() { 'attributes': {} }); }); + + group('userConsent', () { + test('get user consent', () async { + UserConsent userConsent = await _platform.getUserConsent(); + + expect(methodName, 'getUserConsent'); + expect(userConsent, UserConsent.declined); + }); + + test('set user consent enabled', () { + _platform.setUserConsent(true); + + expect(methodName, 'setUserConsent'); + expect(methodArguments, {'enabled': true}); + }); + + test('set user consent disabled', () { + _platform.setUserConsent(false); + + expect(methodName, 'setUserConsent'); + expect(methodArguments, {'enabled': false}); + }); + }); } From cb730c7ebce366d177b0343708df2ac5b71988af Mon Sep 17 00:00:00 2001 From: Gaston Thea Date: Tue, 23 May 2023 09:16:52 -0300 Subject: [PATCH 5/9] Fix reference --- .../lib/method_channel_platform.dart | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/splitio_platform_interface/lib/method_channel_platform.dart b/splitio_platform_interface/lib/method_channel_platform.dart index 8132d28..7199c5b 100644 --- a/splitio_platform_interface/lib/method_channel_platform.dart +++ b/splitio_platform_interface/lib/method_channel_platform.dart @@ -326,11 +326,11 @@ class MethodChannelPlatform extends SplitioPlatform { @override Future getUserConsent() async { - String invokeMethod = - (await _methodChannel.invokeMethod('getUserConsent')) as String; - if (invokeMethod == 'granted') { + String userConsent = + (await methodChannel.invokeMethod('getUserConsent')) as String; + if (userConsent == 'granted') { return UserConsent.granted; - } else if (invokeMethod == 'declined') { + } else if (userConsent == 'declined') { return UserConsent.declined; } else { return UserConsent.unknown; @@ -339,7 +339,7 @@ class MethodChannelPlatform extends SplitioPlatform { @override Future setUserConsent(bool enabled) async { - await _methodChannel.invokeMethod('setUserConsent', {'value': enabled}); + await methodChannel.invokeMethod('setUserConsent', {'value': enabled}); } String _buildMapKey(String matchingKey, String? bucketingKey) { From 3e426065d67a7cc387446bd124f8537ace6bc0a0 Mon Sep 17 00:00:00 2001 From: Gaston Thea Date: Tue, 23 May 2023 09:33:40 -0300 Subject: [PATCH 6/9] rc.1 --- splitio/pubspec.yaml | 14 ++++---------- splitio_android/pubspec.yaml | 6 ++---- splitio_ios/pubspec.yaml | 6 ++---- splitio_platform_interface/pubspec.yaml | 2 +- 4 files changed, 9 insertions(+), 19 deletions(-) diff --git a/splitio/pubspec.yaml b/splitio/pubspec.yaml index 1437b31..4989b76 100644 --- a/splitio/pubspec.yaml +++ b/splitio/pubspec.yaml @@ -1,6 +1,6 @@ name: splitio description: Official plugin for split.io, the platform for controlled rollouts, which serves features to your users via feature flags to manage your complete customer experience. -version: 0.1.3 +version: 0.1.4-rc.1 homepage: https://split.io/ repository: https://github.com/splitio/flutter-sdk-plugin/tree/main/splitio/ @@ -19,15 +19,9 @@ flutter: dependencies: flutter: sdk: flutter -# splitio_android: ^0.1.3 - splitio_android: - path: ../splitio_android -# splitio_ios: ^0.1.3 - splitio_ios: - path: ../splitio_ios -# splitio_platform_interface: ^1.1.0 - splitio_platform_interface: - path: ../splitio_platform_interface + splitio_android: ^0.1.4-rc.1 + splitio_ios: ^0.1.4-rc.1 + splitio_platform_interface: ^1.2.0-rc.1 dev_dependencies: flutter_test: diff --git a/splitio_android/pubspec.yaml b/splitio_android/pubspec.yaml index 33684f1..ef302ad 100644 --- a/splitio_android/pubspec.yaml +++ b/splitio_android/pubspec.yaml @@ -1,7 +1,7 @@ name: splitio_android description: The official Android implementation of splitio Flutter plugin. repository: https://github.com/splitio/flutter-sdk-plugin/tree/main/splitio_android -version: 0.1.3 +version: 0.1.4-rc.1 environment: sdk: ">=2.16.2 <4.0.0" @@ -19,9 +19,7 @@ flutter: dependencies: flutter: sdk: flutter -# splitio_platform_interface: ^1.1.0 - splitio_platform_interface: - path: ../splitio_platform_interface + splitio_platform_interface: ^1.2.0-rc.1 dev_dependencies: flutter_test: diff --git a/splitio_ios/pubspec.yaml b/splitio_ios/pubspec.yaml index a2dd2b9..207570d 100644 --- a/splitio_ios/pubspec.yaml +++ b/splitio_ios/pubspec.yaml @@ -1,7 +1,7 @@ name: splitio_ios description: The official iOS implementation of splitio Flutter plugin. repository: https://github.com/splitio/flutter-sdk-plugin/tree/main/splitio_ios -version: 0.1.3 +version: 0.1.4-rc.1 environment: sdk: ">=2.16.2 <4.0.0" @@ -18,9 +18,7 @@ flutter: dependencies: flutter: sdk: flutter -# splitio_platform_interface: ^1.1.0 - splitio_platform_interface: - path: ../splitio_platform_interface + splitio_platform_interface: ^1.2.0-rc.1 dev_dependencies: flutter_test: diff --git a/splitio_platform_interface/pubspec.yaml b/splitio_platform_interface/pubspec.yaml index 1947654..ce92b0e 100644 --- a/splitio_platform_interface/pubspec.yaml +++ b/splitio_platform_interface/pubspec.yaml @@ -2,7 +2,7 @@ name: splitio_platform_interface description: A common platform interface for the splitio plugin. # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 1.1.0 +version: 1.2.0-rc.1 repository: https://github.com/splitio/flutter-sdk-plugin/tree/main/splitio_platform_interface environment: From 3810bd8bdb1149d8cd7260cd2bbca33fe8d98775 Mon Sep 17 00:00:00 2001 From: Gaston Thea Date: Tue, 23 May 2023 09:33:51 -0300 Subject: [PATCH 7/9] Changelog --- splitio/CHANGELOG.md | 2 ++ splitio_android/CHANGELOG.md | 2 ++ splitio_ios/CHANGELOG.md | 2 ++ splitio_platform_interface/CHANGELOG.md | 2 ++ 4 files changed, 8 insertions(+) diff --git a/splitio/CHANGELOG.md b/splitio/CHANGELOG.md index 84e0b1f..a93fa63 100644 --- a/splitio/CHANGELOG.md +++ b/splitio/CHANGELOG.md @@ -1,3 +1,5 @@ +# 0.1.4-rc.1 (May 23, 2023) + # 0.1.3 (May 18, 2023) * Updated iOS SDK to `2.20.1` & Android SDK to `3.2.1` diff --git a/splitio_android/CHANGELOG.md b/splitio_android/CHANGELOG.md index 09abe36..a83e4f1 100644 --- a/splitio_android/CHANGELOG.md +++ b/splitio_android/CHANGELOG.md @@ -1,3 +1,5 @@ +# 0.1.4-rc.1 (May 23, 2023) + # 0.1.3 (May 18, 2023) * Updated Android SDK to `3.2.1` * Added support for new configuration options: diff --git a/splitio_ios/CHANGELOG.md b/splitio_ios/CHANGELOG.md index 0c8fcb4..17d77a2 100644 --- a/splitio_ios/CHANGELOG.md +++ b/splitio_ios/CHANGELOG.md @@ -1,3 +1,5 @@ +# 0.1.4-rc.1 (May 23, 2023) + # 0.1.3 (May 18, 2023) * Updated iOS SDK to `2.20.1` * Added support for new configuration options: diff --git a/splitio_platform_interface/CHANGELOG.md b/splitio_platform_interface/CHANGELOG.md index ab885ce..1e32507 100644 --- a/splitio_platform_interface/CHANGELOG.md +++ b/splitio_platform_interface/CHANGELOG.md @@ -1,3 +1,5 @@ +# 0.1.4-rc.1 (May 23, 2023) + # 1.1.0 (May 18, 2023) * Added support for new configuration options: * `impressionsMode` From 57bca8a801b6553d8633f41be45bfd108d735e82 Mon Sep 17 00:00:00 2001 From: Gaston Thea Date: Tue, 23 May 2023 09:37:11 -0300 Subject: [PATCH 8/9] Fix changelog version; --- splitio_platform_interface/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/splitio_platform_interface/CHANGELOG.md b/splitio_platform_interface/CHANGELOG.md index 1e32507..41761d8 100644 --- a/splitio_platform_interface/CHANGELOG.md +++ b/splitio_platform_interface/CHANGELOG.md @@ -1,4 +1,4 @@ -# 0.1.4-rc.1 (May 23, 2023) +# 1.2.0-rc.1 (May 23, 2023) # 1.1.0 (May 18, 2023) * Added support for new configuration options: From 3af606bc82b5b5d2f03fe9e5416c86e218e8d6e8 Mon Sep 17 00:00:00 2001 From: Gaston Thea Date: Tue, 23 May 2023 14:28:01 -0300 Subject: [PATCH 9/9] 0.1.4 --- splitio/CHANGELOG.md | 5 +++++ splitio/pubspec.yaml | 8 ++++---- splitio_android/CHANGELOG.md | 5 +++++ splitio_android/pubspec.yaml | 4 ++-- splitio_ios/CHANGELOG.md | 5 +++++ splitio_ios/pubspec.yaml | 4 ++-- splitio_platform_interface/CHANGELOG.md | 5 +++++ splitio_platform_interface/pubspec.yaml | 2 +- 8 files changed, 29 insertions(+), 9 deletions(-) diff --git a/splitio/CHANGELOG.md b/splitio/CHANGELOG.md index a93fa63..e1f5189 100644 --- a/splitio/CHANGELOG.md +++ b/splitio/CHANGELOG.md @@ -1,3 +1,8 @@ +# 0.1.4 (May 23, 2023) + +* Added `setUserConsent` method. +* Added `getUserConsent` method. + # 0.1.4-rc.1 (May 23, 2023) # 0.1.3 (May 18, 2023) diff --git a/splitio/pubspec.yaml b/splitio/pubspec.yaml index 4989b76..da1effe 100644 --- a/splitio/pubspec.yaml +++ b/splitio/pubspec.yaml @@ -1,6 +1,6 @@ name: splitio description: Official plugin for split.io, the platform for controlled rollouts, which serves features to your users via feature flags to manage your complete customer experience. -version: 0.1.4-rc.1 +version: 0.1.4 homepage: https://split.io/ repository: https://github.com/splitio/flutter-sdk-plugin/tree/main/splitio/ @@ -19,9 +19,9 @@ flutter: dependencies: flutter: sdk: flutter - splitio_android: ^0.1.4-rc.1 - splitio_ios: ^0.1.4-rc.1 - splitio_platform_interface: ^1.2.0-rc.1 + splitio_android: ^0.1.4 + splitio_ios: ^0.1.4 + splitio_platform_interface: ^1.2.0 dev_dependencies: flutter_test: diff --git a/splitio_android/CHANGELOG.md b/splitio_android/CHANGELOG.md index a83e4f1..0fe1e38 100644 --- a/splitio_android/CHANGELOG.md +++ b/splitio_android/CHANGELOG.md @@ -1,3 +1,8 @@ +# 0.1.4 (May 23, 2023) + +* Added `setUserConsent` method. +* Added `getUserConsent` method. + # 0.1.4-rc.1 (May 23, 2023) # 0.1.3 (May 18, 2023) diff --git a/splitio_android/pubspec.yaml b/splitio_android/pubspec.yaml index ef302ad..a26b6df 100644 --- a/splitio_android/pubspec.yaml +++ b/splitio_android/pubspec.yaml @@ -1,7 +1,7 @@ name: splitio_android description: The official Android implementation of splitio Flutter plugin. repository: https://github.com/splitio/flutter-sdk-plugin/tree/main/splitio_android -version: 0.1.4-rc.1 +version: 0.1.4 environment: sdk: ">=2.16.2 <4.0.0" @@ -19,7 +19,7 @@ flutter: dependencies: flutter: sdk: flutter - splitio_platform_interface: ^1.2.0-rc.1 + splitio_platform_interface: ^1.2.0 dev_dependencies: flutter_test: diff --git a/splitio_ios/CHANGELOG.md b/splitio_ios/CHANGELOG.md index 17d77a2..28f9030 100644 --- a/splitio_ios/CHANGELOG.md +++ b/splitio_ios/CHANGELOG.md @@ -1,3 +1,8 @@ +# 0.1.4 (May 23, 2023) + +* Added `setUserConsent` method. +* Added `getUserConsent` method. + # 0.1.4-rc.1 (May 23, 2023) # 0.1.3 (May 18, 2023) diff --git a/splitio_ios/pubspec.yaml b/splitio_ios/pubspec.yaml index 207570d..0203f9d 100644 --- a/splitio_ios/pubspec.yaml +++ b/splitio_ios/pubspec.yaml @@ -1,7 +1,7 @@ name: splitio_ios description: The official iOS implementation of splitio Flutter plugin. repository: https://github.com/splitio/flutter-sdk-plugin/tree/main/splitio_ios -version: 0.1.4-rc.1 +version: 0.1.4 environment: sdk: ">=2.16.2 <4.0.0" @@ -18,7 +18,7 @@ flutter: dependencies: flutter: sdk: flutter - splitio_platform_interface: ^1.2.0-rc.1 + splitio_platform_interface: ^1.2.0 dev_dependencies: flutter_test: diff --git a/splitio_platform_interface/CHANGELOG.md b/splitio_platform_interface/CHANGELOG.md index 41761d8..3c2e709 100644 --- a/splitio_platform_interface/CHANGELOG.md +++ b/splitio_platform_interface/CHANGELOG.md @@ -1,3 +1,8 @@ +# 1.2.0 (May 23, 2023) + +* Added `setUserConsent` method. +* Added `getUserConsent` method. + # 1.2.0-rc.1 (May 23, 2023) # 1.1.0 (May 18, 2023) diff --git a/splitio_platform_interface/pubspec.yaml b/splitio_platform_interface/pubspec.yaml index ce92b0e..710ce64 100644 --- a/splitio_platform_interface/pubspec.yaml +++ b/splitio_platform_interface/pubspec.yaml @@ -2,7 +2,7 @@ name: splitio_platform_interface description: A common platform interface for the splitio plugin. # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 1.2.0-rc.1 +version: 1.2.0 repository: https://github.com/splitio/flutter-sdk-plugin/tree/main/splitio_platform_interface environment: