From a8afc780082aa491f65d95f1e18ee657c8e71e44 Mon Sep 17 00:00:00 2001 From: Kamo Spertsyan Date: Tue, 7 May 2024 16:13:01 +0300 Subject: [PATCH 1/3] Added returning promise to identify method (#317) --- android/build.gradle | 2 +- .../sdk/qonversion_flutter_sdk/QonversionPlugin.kt | 3 +-- ios/Classes/SwiftQonversionPlugin.swift | 3 +-- ios/qonversion_flutter.podspec | 2 +- lib/src/internal/qonversion_internal.dart | 11 +++++++++-- lib/src/qonversion.dart | 2 +- macos/Classes/SwiftQonversionPlugin.swift | 3 +-- macos/qonversion_flutter.podspec | 2 +- 8 files changed, 16 insertions(+), 12 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 5fac5bb..0b759d4 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -51,6 +51,6 @@ android { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation "io.qonversion.sandwich:sandwich:4.3.2" + implementation "io.qonversion.sandwich:sandwich:4.4.1" implementation 'com.google.code.gson:gson:2.9.0' } diff --git a/android/src/main/kotlin/com/qonversion/flutter/sdk/qonversion_flutter_sdk/QonversionPlugin.kt b/android/src/main/kotlin/com/qonversion/flutter/sdk/qonversion_flutter_sdk/QonversionPlugin.kt index 7094d58..5b62e11 100644 --- a/android/src/main/kotlin/com/qonversion/flutter/sdk/qonversion_flutter_sdk/QonversionPlugin.kt +++ b/android/src/main/kotlin/com/qonversion/flutter/sdk/qonversion_flutter_sdk/QonversionPlugin.kt @@ -173,8 +173,7 @@ class QonversionPlugin : MethodCallHandler, FlutterPlugin, ActivityAware { return } - qonversionSandwich.identify(userId) - result.success(null) + qonversionSandwich.identify(userId, result.toResultListener()) } private fun purchase(args: Map, result: Result) { diff --git a/ios/Classes/SwiftQonversionPlugin.swift b/ios/Classes/SwiftQonversionPlugin.swift index 40c4a35..4cb5cc4 100644 --- a/ios/Classes/SwiftQonversionPlugin.swift +++ b/ios/Classes/SwiftQonversionPlugin.swift @@ -198,8 +198,7 @@ public class SwiftQonversionPlugin: NSObject, FlutterPlugin { return } - qonversionSandwich?.identify(userId) - result(nil) + qonversionSandwich?.identify(userId, getDefaultCompletion(result)) } private func products(_ result: @escaping FlutterResult) { diff --git a/ios/qonversion_flutter.podspec b/ios/qonversion_flutter.podspec index 6ccd772..4208ed6 100644 --- a/ios/qonversion_flutter.podspec +++ b/ios/qonversion_flutter.podspec @@ -16,7 +16,7 @@ Pod::Spec.new do |s| s.source_files = 'Classes/**/*' s.dependency 'Flutter' s.platform = :ios, '9.0' - s.dependency "QonversionSandwich", "4.3.2" + s.dependency "QonversionSandwich", "4.4.1" # Flutter.framework does not contain a i386 slice. Only x86_64 simulators are supported. s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'VALID_ARCHS[sdk=iphonesimulator*]' => 'x86_64' } diff --git a/lib/src/internal/qonversion_internal.dart b/lib/src/internal/qonversion_internal.dart index 41e7b19..2ecee20 100644 --- a/lib/src/internal/qonversion_internal.dart +++ b/lib/src/internal/qonversion_internal.dart @@ -153,8 +153,15 @@ class QonversionInternal implements Qonversion { } @override - Future identify(String userId) => - _channel.invokeMethod(Constants.mIdentify, {Constants.kUserId: userId}); + Future identify(String userId) async { + final rawResult = await _channel.invokeMethod(Constants.mIdentify, {Constants.kUserId: userId}); + + final result = QMapper.userFromJson(rawResult); + if (result == null) { + throw new Exception("User deserialization failed"); + } + return result; + } @override Future logout() => _channel.invokeMethod(Constants.mLogout); diff --git a/lib/src/qonversion.dart b/lib/src/qonversion.dart index fcda2ad..bb50299 100644 --- a/lib/src/qonversion.dart +++ b/lib/src/qonversion.dart @@ -113,7 +113,7 @@ abstract class Qonversion { /// Call this function to link a user to his unique ID in your system and share purchase data. /// [userId] unique user ID in your system - Future identify(String userId); + Future identify(String userId); /// Call this function to unlink a user from his unique ID in your system and his purchase data. Future logout(); diff --git a/macos/Classes/SwiftQonversionPlugin.swift b/macos/Classes/SwiftQonversionPlugin.swift index 442bc72..0887e55 100644 --- a/macos/Classes/SwiftQonversionPlugin.swift +++ b/macos/Classes/SwiftQonversionPlugin.swift @@ -156,8 +156,7 @@ public class SwiftQonversionPlugin: NSObject, FlutterPlugin { return } - qonversionSandwich?.identify(userId) - result(nil) + qonversionSandwich?.identify(userId, getDefaultCompletion(result)) } private func products(_ result: @escaping FlutterResult) { diff --git a/macos/qonversion_flutter.podspec b/macos/qonversion_flutter.podspec index 7552ce6..9843963 100644 --- a/macos/qonversion_flutter.podspec +++ b/macos/qonversion_flutter.podspec @@ -16,7 +16,7 @@ Pod::Spec.new do |s| s.source_files = 'Classes/**/*' s.dependency 'FlutterMacOS' s.platform = :osx, '10.12' - s.dependency "QonversionSandwich", "4.3.2" + s.dependency "QonversionSandwich", "4.4.1" s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } s.swift_version = '5.0' From d27037e814016403745c825d5ed94cc126617773 Mon Sep 17 00:00:00 2001 From: SpertsyanKM Date: Tue, 7 May 2024 13:14:05 +0000 Subject: [PATCH 2/3] [create-pull-request] automated change --- CHANGELOG.md | 3 +++ lib/src/internal/qonversion_internal.dart | 2 +- pubspec.yaml | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 83f8f41..6a359e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 8.4.0 +* // Update changelog here + ## 8.3.1 * Fixed privacy manifest file diff --git a/lib/src/internal/qonversion_internal.dart b/lib/src/internal/qonversion_internal.dart index 2ecee20..4f36acd 100644 --- a/lib/src/internal/qonversion_internal.dart +++ b/lib/src/internal/qonversion_internal.dart @@ -11,7 +11,7 @@ import 'package:qonversion_flutter/src/internal/utils/string.dart'; import 'constants.dart'; class QonversionInternal implements Qonversion { - static const String _sdkVersion = "8.3.1"; + static const String _sdkVersion = "8.4.0"; final MethodChannel _channel = MethodChannel('qonversion_plugin'); diff --git a/pubspec.yaml b/pubspec.yaml index eada6af..e0f35ed 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: qonversion_flutter description: Flutter plugin to implement in-app subscriptions and purchases. Validate user receipts and manage cross-platform access to paid content on your app. Android & iOS. -version: 8.3.1 +version: 8.4.0 homepage: 'https://qonversion.io' repository: 'https://github.com/qonversion/flutter-sdk' From 9a287a19685c94d895dcdde1aa8967f6c348a2d6 Mon Sep 17 00:00:00 2001 From: Kamo Spertsyan Date: Tue, 7 May 2024 16:14:42 +0300 Subject: [PATCH 3/3] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a359e5..6e6fec6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ ## 8.4.0 -* // Update changelog here +* Added returning promise to the `identify` method. You may see warnings for ignoring the returned promise after updating to this version until you update the usage to asynchronous. If you don't need to know the identification result, simply ignore it. ## 8.3.1 * Fixed privacy manifest file