diff --git a/CHANGELOG.md b/CHANGELOG.md index 9cd67d5..17df2d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,31 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 2023-12-05 + +### Changes + +--- + +Packages with breaking changes: + + - There are no breaking changes in this release. + +Packages with other changes: + + - [`flutter_google_wallet` - `v0.1.2`](#flutter_google_wallet---v012) + +--- + +#### `flutter_google_wallet` - `v0.1.2` + + - **FEAT**(flutter_google_wallet_plugin): add method to add jwt signed wallet. + +## 0.1.2 + + - **FEAT**(flutter_google_wallet_plugin): add method to add jwt signed wallet. + + ## 2023-06-06 ### Changes diff --git a/android/src/main/kotlin/sncf/connect/tech/flutter_google_wallet/FlutterGoogleWalletPlugin.kt b/android/src/main/kotlin/sncf/connect/tech/flutter_google_wallet/FlutterGoogleWalletPlugin.kt index c9eb314..eb0873b 100644 --- a/android/src/main/kotlin/sncf/connect/tech/flutter_google_wallet/FlutterGoogleWalletPlugin.kt +++ b/android/src/main/kotlin/sncf/connect/tech/flutter_google_wallet/FlutterGoogleWalletPlugin.kt @@ -16,7 +16,7 @@ class FlutterGoogleWalletPlugin: FlutterPlugin, GoogleWalletApi, ActivityAware, private lateinit var context: Context private var activity: Activity? = null private lateinit var walletClient: PayClient - + override fun onAttachedToEngine(flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) { GoogleWalletApi.setUp(flutterPluginBinding.binaryMessenger, this) context = flutterPluginBinding.applicationContext @@ -44,6 +44,12 @@ class FlutterGoogleWalletPlugin: FlutterPlugin, GoogleWalletApi, ActivityAware, } } + override fun savePassesJwt(jsonPass: String, addToGoogleWalletRequestCode: Long) { + if(activity != null){ + walletClient.savePassesJwt(jsonPass, activity!!, addToGoogleWalletRequestCode.toInt()) + } + } + override fun onAttachedToActivity(binding: ActivityPluginBinding) { activity = binding.activity binding.addActivityResultListener(this) diff --git a/android/src/main/kotlin/sncf/connect/tech/flutter_google_wallet/Messages.kt b/android/src/main/kotlin/sncf/connect/tech/flutter_google_wallet/Messages.kt index a4d5adc..aa5602b 100644 --- a/android/src/main/kotlin/sncf/connect/tech/flutter_google_wallet/Messages.kt +++ b/android/src/main/kotlin/sncf/connect/tech/flutter_google_wallet/Messages.kt @@ -47,6 +47,7 @@ interface GoogleWalletApi { fun initWalletClient() fun getWalletApiAvailabilityStatus(): Boolean fun savePasses(jsonPass: String, addToGoogleWalletRequestCode: Long) + fun savePassesJwt(jsonPass: String, addToGoogleWalletRequestCode: Long) companion object { /** The codec used by GoogleWalletApi. */ @@ -110,6 +111,26 @@ interface GoogleWalletApi { channel.setMessageHandler(null) } } + run { + val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.GoogleWalletApi.savePassesJwt", codec) + if (api != null) { + channel.setMessageHandler { message, reply -> + val args = message as List + val jsonPassArg = args[0] as String + val addToGoogleWalletRequestCodeArg = args[1].let { if (it is Int) it.toLong() else it as Long } + var wrapped: List + try { + api.savePassesJwt(jsonPassArg, addToGoogleWalletRequestCodeArg) + wrapped = listOf(null) + } catch (exception: Throwable) { + wrapped = wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } } } } diff --git a/lib/flutter_google_wallet_pigeon.dart b/lib/flutter_google_wallet_pigeon.dart index 911e0d7..8b4e42b 100644 --- a/lib/flutter_google_wallet_pigeon.dart +++ b/lib/flutter_google_wallet_pigeon.dart @@ -21,4 +21,11 @@ class PigeonFlutterGoogleWallet extends FlutterGoogleWalletPlatform { required int addToGoogleWalletRequestCode}) async { await _api.savePasses(jsonPass, addToGoogleWalletRequestCode); } + + @override + Future savePassesJwt( + {required String jsonPass, + required int addToGoogleWalletRequestCode}) async { + await _api.savePassesJwt(jsonPass, addToGoogleWalletRequestCode); + } } diff --git a/lib/flutter_google_wallet_platform_interface.dart b/lib/flutter_google_wallet_platform_interface.dart index 7178c6a..b78b9fb 100644 --- a/lib/flutter_google_wallet_platform_interface.dart +++ b/lib/flutter_google_wallet_platform_interface.dart @@ -36,4 +36,10 @@ abstract class FlutterGoogleWalletPlatform extends PlatformInterface { required int addToGoogleWalletRequestCode}) async { throw UnimplementedError('savePasses() has not been implemented.'); } + + Future savePassesJwt( + {required String jsonPass, + required int addToGoogleWalletRequestCode}) async { + throw UnimplementedError('savePasses() has not been implemented.'); + } } diff --git a/lib/flutter_google_wallet_plugin.dart b/lib/flutter_google_wallet_plugin.dart index 8fe9017..cdbfd1e 100644 --- a/lib/flutter_google_wallet_plugin.dart +++ b/lib/flutter_google_wallet_plugin.dart @@ -17,4 +17,12 @@ class FlutterGoogleWalletPlugin { jsonPass: jsonPass, addToGoogleWalletRequestCode: addToGoogleWalletRequestCode); } + + Future savePassesJwt( + {required String jsonPass, + required int addToGoogleWalletRequestCode}) async { + await FlutterGoogleWalletPlatform.instance.savePassesJwt( + jsonPass: jsonPass, + addToGoogleWalletRequestCode: addToGoogleWalletRequestCode); + } } diff --git a/lib/messages.dart b/lib/messages.dart index 76129dc..2bda25b 100644 --- a/lib/messages.dart +++ b/lib/messages.dart @@ -89,4 +89,28 @@ class GoogleWalletApi { return; } } + + Future savePassesJwt( + String arg_jsonPass, int arg_addToGoogleWalletRequestCode) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.GoogleWalletApi.savePassesJwt', codec, + binaryMessenger: _binaryMessenger); + final List? replyList = await channel + .send([arg_jsonPass, arg_addToGoogleWalletRequestCode]) + as List?; + if (replyList == null) { + throw PlatformException( + code: 'channel-error', + message: 'Unable to establish connection on channel.', + ); + } else if (replyList.length > 1) { + throw PlatformException( + code: replyList[0]! as String, + message: replyList[1] as String?, + details: replyList[2], + ); + } else { + return; + } + } } diff --git a/pigeons/messages.dart b/pigeons/messages.dart index 293b97a..a0f32a8 100644 --- a/pigeons/messages.dart +++ b/pigeons/messages.dart @@ -3,7 +3,11 @@ import 'package:pigeon/pigeon.dart'; @HostApi() abstract class GoogleWalletApi { void initWalletClient(); + @TaskQueue(type: TaskQueueType.serialBackgroundThread) bool getWalletApiAvailabilityStatus(); + void savePasses(String jsonPass, int addToGoogleWalletRequestCode); + + void savePassesJwt(String jsonPass, int addToGoogleWalletRequestCode); } diff --git a/pubspec.yaml b/pubspec.yaml index 608dda9..8e053b6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_google_wallet description: A Flutter Google Wallet Plugin -version: 0.1.1 +version: 0.1.2 homepage: https://github.com/voyages-sncf-technologies/flutter_google_wallet environment: diff --git a/test/flutter_google_wallet_test.dart b/test/flutter_google_wallet_test.dart index 7e328e4..f5e2985 100644 --- a/test/flutter_google_wallet_test.dart +++ b/test/flutter_google_wallet_test.dart @@ -18,6 +18,12 @@ class MockFlutterGoogleWalletPlatform {required String jsonPass, required int addToGoogleWalletRequestCode}) => Future.value(); + + @override + Future savePassesJwt( + {required String jsonPass, + required int addToGoogleWalletRequestCode}) => + Future.value(); } void main() {