MyIdPlugin.kt 2.97 KB
Newer Older
Javokhir's avatar
1.1.8    
Javokhir committed
1
package uz.uzinfocom.myid
Javohir Savriy's avatar
Javohir Savriy committed
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

import android.content.Context
import androidx.annotation.NonNull
import io.flutter.embedding.engine.plugins.FlutterPlugin
import io.flutter.embedding.engine.plugins.activity.ActivityAware
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding
import io.flutter.plugin.common.BinaryMessenger
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugin.common.MethodChannel.MethodCallHandler
import io.flutter.plugin.common.MethodChannel.Result
import io.flutter.plugin.common.PluginRegistry.Registrar
import uz.myid.android.sdk.capture.MyIdClient

class MyIdPlugin : FlutterPlugin, MethodCallHandler, ActivityAware {

    private lateinit var myIdSdk: MyIdSdk
    private lateinit var activityListener: MyIdSdkActivityListener
    private lateinit var methodChannel: MethodChannel
    private lateinit var applicationContext: Context
    private lateinit var pluginBinding: ActivityPluginBinding

    private val myIdClient = MyIdClient()

Javohir Savriy's avatar
Javohir Savriy committed
26
    override fun onAttachedToEngine(flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
Javohir Savriy's avatar
Javohir Savriy committed
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
        onAttachedToEngine(
            flutterPluginBinding.applicationContext,
            flutterPluginBinding.binaryMessenger
        )
    }

    companion object {
        @JvmStatic
        fun registerWith(registrar: Registrar) {
            val instance = MyIdPlugin()
            instance.onAttachedToEngine(registrar.context(), registrar.messenger())
            instance.myIdSdk.setActivity(registrar.activity())
            registrar.addActivityResultListener(instance.activityListener)
        }
    }

    override fun onMethodCall(call: MethodCall, result: Result) {
        if (call.method == "startSdk") {
            val config = call.arguments as HashMap<*, *>
            @Suppress("UNCHECKED_CAST")
            myIdSdk.start(config["config"] as? HashMap<String, Any?>, result)
        } else {
            result.notImplemented()
        }
    }

    private fun onAttachedToEngine(context: Context, messenger: BinaryMessenger) {
        applicationContext = context
Javokhir's avatar
1.1.9    
Javokhir committed
55
        methodChannel = MethodChannel(messenger, "myid_uz")
Javohir Savriy's avatar
Javohir Savriy committed
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
        methodChannel.setMethodCallHandler(this)
        activityListener = MyIdSdkActivityListener(myIdClient)
        myIdSdk = MyIdSdk(myIdClient, activityListener)
    }

    override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {
        methodChannel.setMethodCallHandler(null)
    }

    override fun onDetachedFromActivity() {
        myIdSdk.setActivity(null)
        pluginBinding.removeActivityResultListener(activityListener)
    }

    override fun onReattachedToActivityForConfigChanges(binding: ActivityPluginBinding) {
    }

    override fun onAttachedToActivity(binding: ActivityPluginBinding) {
        myIdSdk.setActivity(binding.activity)
        pluginBinding = binding
        pluginBinding.addActivityResultListener(activityListener)
    }

    override fun onDetachedFromActivityForConfigChanges() {
    }
}