11package co.paystack.flutterpaystack
22
3- import android.annotation.SuppressLint
4- import android.content.Context
5- import android.os.Build
6- import android.provider.Settings
7- import io.flutter.plugin.common.MethodCall
8- import io.flutter.plugin.common.MethodChannel
9- import io.flutter.plugin.common.MethodChannel.MethodCallHandler
10- import io.flutter.plugin.common.MethodChannel.Result
11- import io.flutter.plugin.common.PluginRegistry.Registrar
12-
13- class FlutterPaystackPlugin (val appContext : Context , val authDelegate : AuthDelegate ) : MethodCallHandler {
14- companion object {
15- @JvmStatic
16- fun registerWith (registrar : Registrar ) {
17- val activity = registrar.activity() ? : return
18- val channel = MethodChannel (registrar.messenger(), " flutter_paystack" )
19- val authDelegate = AuthDelegate (activity = activity)
20- val plugin = FlutterPaystackPlugin (appContext = registrar.context(), authDelegate = authDelegate)
21- channel.setMethodCallHandler(plugin)
3+ import android.app.Activity
4+ import io.flutter.embedding.engine.plugins.FlutterPlugin
5+ import io.flutter.embedding.engine.plugins.activity.ActivityAware
6+ import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding
7+ import io.flutter.plugin.common.BinaryMessenger
8+ import io.flutter.plugin.common.PluginRegistry
9+
10+
11+ class FlutterPaystackPlugin : FlutterPlugin , ActivityAware {
12+
13+ private var pluginBinding: FlutterPlugin .FlutterPluginBinding ? = null
14+ private var methodCallHandler: MethodCallHandlerImpl ? = null
15+
16+ override fun onAttachedToEngine (binding : FlutterPlugin .FlutterPluginBinding ) {
17+ pluginBinding = binding
2218 }
23- }
24-
25- @SuppressLint(" HardwareIds" )
26- override fun onMethodCall (call : MethodCall , result : Result ) {
27-
28- when (call.method) {
29- " getDeviceId" -> {
30- result.success(" androidsdk_" + Settings .Secure .getString(appContext.contentResolver,
31- Settings .Secure .ANDROID_ID ))
32- }
33- " getUserAgent" -> {
34- result.success(" Android_" + Build .VERSION .SDK_INT + " _Paystack_" + BuildConfig .VERSION_NAME )
35- }
36-
37- " getVersionCode" -> {
38- result.success(BuildConfig .VERSION_CODE .toString())
39- }
40-
41- " getAuthorization" -> {
42- authDelegate.handleAuthorization(result, call)
43- }
44- " getEncryptedData" -> {
45- val encryptedData = Crypto .encrypt(call.argument<String >(" stringData" ).toString())
46- result.success(encryptedData)
47- }
48-
49- else -> result.notImplemented()
19+
20+ override fun onDetachedFromEngine (binding : FlutterPlugin .FlutterPluginBinding ) {
21+ pluginBinding = null
5022 }
5123
52- }
24+ private fun setupMethodHandler (messenger : BinaryMessenger ? , activity : Activity ) {
25+ methodCallHandler = MethodCallHandlerImpl (messenger, activity)
26+ }
27+
28+
29+ override fun onDetachedFromActivity () {
30+ methodCallHandler?.disposeHandler()
31+ methodCallHandler = null
32+ }
33+
34+
35+ override fun onAttachedToActivity (binding : ActivityPluginBinding ) {
36+ setupMethodHandler(pluginBinding?.binaryMessenger, binding.activity)
37+ }
38+
39+ override fun onDetachedFromActivityForConfigChanges () = onDetachedFromActivity()
40+
41+ override fun onReattachedToActivityForConfigChanges (binding : ActivityPluginBinding ) = onAttachedToActivity(binding)
42+
43+ companion object {
44+
45+ @JvmStatic
46+ fun registerWith (registrar : PluginRegistry .Registrar ) {
47+ val plugin = FlutterPaystackPlugin ()
48+ plugin.setupMethodHandler(registrar.messenger(), registrar.activity())
49+ }
50+ }
5351
5452}
0 commit comments