This commit is contained in:
Mikhail Dolmatov 2025-03-21 21:10:18 +05:00
parent 3a9355aff4
commit 424a96c3fc

View File

@ -1,21 +1,16 @@
package ru.yoomoney.sdk.kassa.payments.flutter
import android.graphics.Color;
import android.graphics.Color
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.widget.Toast
import androidx.annotation.NonNull
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.embedding.engine.plugins.FlutterPlugin
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
import io.flutter.plugin.common.PluginRegistry.Registrar
import io.flutter.embedding.engine.plugins.activity.ActivityAware
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding
import java.io.StringReader
@ -24,7 +19,7 @@ import java.util.Currency
import ru.yoomoney.sdk.kassa.payments.checkoutParameters.Amount
import ru.yoomoney.sdk.kassa.payments.Checkout
import ru.yoomoney.sdk.kassa.payments.ui.color.ColorScheme
import ru.yoomoney.sdk.kassa.payments.checkoutParameters.HostParameters;
import ru.yoomoney.sdk.kassa.payments.checkoutParameters.HostParameters
import ru.yoomoney.sdk.kassa.payments.checkoutParameters.GooglePayParameters
import ru.yoomoney.sdk.kassa.payments.checkoutParameters.GooglePayCardNetwork
import ru.yoomoney.sdk.kassa.payments.checkoutParameters.MockConfiguration
@ -39,7 +34,7 @@ import ru.yoomoney.sdk.kassa.payments.checkoutParameters.UiParameters
private const val CANCELED_RESULT = "{\"status\":\"canceled\"}"
private const val ERROR_RESULT = "{\"status\":\"error\"}"
class YookassaPaymentsFlutterPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, PluginRegistry.ActivityResultListener {
class YookassaPaymentsFlutterPlugin: FlutterPlugin, MethodCallHandler, ActivityAware {
private lateinit var flutterResult: Result
private lateinit var channel : MethodChannel
@ -129,7 +124,19 @@ class YookassaPaymentsFlutterPlugin: FlutterPlugin, MethodCallHandler, ActivityA
activity.startActivityForResult(intent, REQUEST_CODE_TOKENIZE)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?): Boolean {
override fun onDetachedFromEngine(@NonNull binding: FlutterPlugin.FlutterPluginBinding) {
channel.setMethodCallHandler(null)
}
override fun onAttachedToActivity(binding: ActivityPluginBinding) {
activity = binding.activity
binding.addActivityResultListener { requestCode, resultCode, data ->
handleActivityResult(requestCode, resultCode, data)
}
this.binding = binding
}
private fun handleActivityResult(requestCode: Int, resultCode: Int, data: Intent?): Boolean {
if (requestCode == REQUEST_CODE_TOKENIZE) {
if (resultCode == Activity.RESULT_CANCELED) {
flutterResult.success(CANCELED_RESULT)
@ -142,33 +149,27 @@ class YookassaPaymentsFlutterPlugin: FlutterPlugin, MethodCallHandler, ActivityA
} else if (requestCode == REQUEST_CODE_CONFIRMATION) {
flutterResult.success(resultCode)
}
return false
}
override fun onDetachedFromEngine(@NonNull binding: FlutterPlugin.FlutterPluginBinding) {
channel.setMethodCallHandler(null)
}
override fun onAttachedToActivity(binding: ActivityPluginBinding) {
activity = binding.activity
binding.addActivityResultListener(this)
this.binding = binding
return true
}
override fun onDetachedFromActivity() {
binding?.removeActivityResultListener(this)
binding?.removeActivityResultListener { requestCode, resultCode, data ->
handleActivityResult(requestCode, resultCode, data)
}
binding = null
}
override fun onReattachedToActivityForConfigChanges(binding: ActivityPluginBinding) {
this.binding?.removeActivityResultListener(this)
this.binding = binding
binding.addActivityResultListener(this)
binding.addActivityResultListener { requestCode, resultCode, data ->
handleActivityResult(requestCode, resultCode, data)
}
}
override fun onDetachedFromActivityForConfigChanges() {
binding?.removeActivityResultListener(this)
binding?.removeActivityResultListener { requestCode, resultCode, data ->
handleActivityResult(requestCode, resultCode, data)
}
binding = null
}
}