Skip to content

Commit 8c260bb

Browse files
feat: update native plugin code for event handling
1 parent d8ed179 commit 8c260bb

File tree

4 files changed

+49
-18
lines changed

4 files changed

+49
-18
lines changed

loans/android/src/main/kotlin/com/example/scloans/ScLoanFlutterPlugin.kt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,14 @@ import io.flutter.embedding.engine.plugins.FlutterPlugin
1111
import com.google.gson.Gson
1212
import com.smallcase.loans.core.external.*
1313
import com.smallcase.loans.core.external.ScLoanEnvironment
14+
import com.smallcase.loans.core.external.ScLoan
15+
import com.smallcase.loans.core.external.ScLoanNotification
16+
import com.smallcase.loans.data.listeners.Notification
17+
import com.smallcase.loans.data.listeners.NotificationCenter
1418
import io.flutter.plugin.common.MethodCall
1519
import io.flutter.plugin.common.MethodChannel
1620
import io.flutter.plugin.common.MethodChannel.MethodCallHandler
21+
import io.flutter.plugin.common.EventChannel
1722
import io.flutter.embedding.engine.plugins.activity.ActivityAware
1823
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding
1924
import org.json.JSONObject
@@ -26,20 +31,26 @@ class ScLoanFlutterPlugin: FlutterPlugin, MethodCallHandler, ActivityAware {
2631
private lateinit var activity: Activity
2732
private lateinit var scLoansChannel: MethodChannel
2833
private val uiThreadHandler: Handler = Handler(Looper.getMainLooper())
34+
private var scLoanEventsHandler: ScLoanEventsHandler? = null
2935

3036

3137
override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
3238
this.context = flutterPluginBinding.applicationContext
3339

3440
scLoansChannel = MethodChannel(flutterPluginBinding.binaryMessenger, "scloans")
3541
scLoansChannel.setMethodCallHandler(this)
36-
// scLoansChannel.setMethodCallHandler(ScLoanFlutterPlugin(getActivity = {
37-
// activity
38-
// }))
42+
43+
44+
scLoanEventsHandler = ScLoanEventsHandler()
45+
scLoanEventsHandler?.onAttachedToEngine(flutterPluginBinding)
46+
3947
}
4048

4149
override fun onDetachedFromEngine(@NonNull binding: FlutterPlugin.FlutterPluginBinding) {
4250
scLoansChannel.setMethodCallHandler(null)
51+
52+
scLoanEventsHandler?.onDetachedFromEngine(binding)
53+
scLoanEventsHandler = null
4354
}
4455

4556
override fun onAttachedToActivity(binding: ActivityPluginBinding) {

loans/ios/Classes/ScLoanFlutterPlugin.swift

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,19 @@ public class SwiftScLoanFlutterPlugin: NSObject, FlutterPlugin {
1414
@MainActor
1515
let currentViewController: UIViewController = (UIApplication.shared.delegate?.window??.rootViewController)!
1616

17+
private var eventsHandler: ScLoanEventsHandler?
18+
1719
public static func register(with registrar: FlutterPluginRegistrar) {
1820
let channel = FlutterMethodChannel(name: "scloans", binaryMessenger: registrar.messenger())
1921
let instance = SwiftScLoanFlutterPlugin()
2022
registrar.addMethodCallDelegate(instance, channel: channel)
23+
24+
instance.eventsHandler = ScLoanEventsHandler()
25+
instance.eventsHandler?.setup(with: registrar)
26+
27+
print("SwiftScLoansFlutterPlugin with events handler registered successfully")
2128
}
22-
29+
2330
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
2431

2532
guard let args = call.arguments as? Dictionary<String, Any> else { return }
@@ -148,7 +155,7 @@ public class SwiftScLoanFlutterPlugin: NSObject, FlutterPlugin {
148155
result("Flutter method not implemented on iOS")
149156
}
150157
}
151-
158+
152159
// This conversion is vital because only by passing a FlutterError object to the result:FlutterResult call will the error be thrown in the catch block on the dart side
153160
private func convertErrorToFlutterError(error: ScLoanError) -> FlutterError {
154161

@@ -196,7 +203,7 @@ extension Dictionary {
196203

197204
} catch let dictionaryError as NSError {
198205

199-
print("Unable to convert dictionary to json String :\(dictionaryError)")
206+
print("Unable to convert dictionary to json String :\(dictionaryError)")
200207

201208
return nil
202209
}

scgateway/android/src/main/kotlin/com/example/scgateway_flutter_plugin/ScgatewayFlutterPlugin.kt

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.scgateway_flutter_plugin
1+
package com.example.scgateway_flutter_plugin //native side ka like we had .kt file in RN
22

33
import android.app.Activity
44
import android.content.Context
@@ -13,6 +13,9 @@ import com.smallcase.gateway.data.listeners.*
1313
import com.smallcase.gateway.data.models.*
1414
import com.smallcase.gateway.data.requests.InitRequest
1515
import com.smallcase.gateway.portal.SmallcaseGatewaySdk
16+
import com.smallcase.gateway.portal.ScgNotification
17+
import com.smallcase.gateway.data.listeners.Notification
18+
import com.smallcase.gateway.data.listeners.NotificationCenter
1619
import com.smallcase.gateway.portal.SmallplugPartnerProps
1720
import io.flutter.embedding.engine.plugins.FlutterPlugin
1821
import io.flutter.embedding.engine.plugins.activity.ActivityAware
@@ -21,6 +24,7 @@ import io.flutter.plugin.common.MethodCall
2124
import io.flutter.plugin.common.MethodChannel
2225
import io.flutter.plugin.common.MethodChannel.MethodCallHandler
2326
import io.flutter.plugin.common.MethodChannel.Result
27+
import io.flutter.plugin.common.EventChannel
2428
import org.json.JSONObject
2529

2630
/** ScgatewayFlutterPlugin */
@@ -36,7 +40,7 @@ class ScgatewayFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
3640
private var replySubmitted = false
3741

3842
internal var txnResult: String? = ""
39-
43+
private var scGatewayEventsHandler: ScgatewayEventsHandler? = null
4044
private val leadGenMap by lazy {
4145
HashMap<String, String>()
4246
}
@@ -53,6 +57,9 @@ class ScgatewayFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
5357

5458
channel = MethodChannel(flutterPluginBinding.binaryMessenger, "scgateway_flutter_plugin")
5559
channel.setMethodCallHandler(this)
60+
61+
scGatewayEventsHandler = ScgatewayEventsHandler()
62+
scGatewayEventsHandler?.onAttachedToEngine(flutterPluginBinding)
5663
}
5764

5865
override fun onMethodCall(@NonNull call: MethodCall, @NonNull rawResult: Result) {
@@ -441,6 +448,9 @@ class ScgatewayFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
441448

442449
override fun onDetachedFromEngine(@NonNull binding: FlutterPlugin.FlutterPluginBinding) {
443450
channel.setMethodCallHandler(null)
451+
452+
scGatewayEventsHandler?.onDetachedFromEngine(binding)
453+
scGatewayEventsHandler = null
444454
}
445455

446456
override fun onAttachedToActivity(binding: ActivityPluginBinding) {

scgateway/ios/Classes/SwiftScgatewayFlutterPlugin.swift

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,19 @@ public class SwiftScgatewayFlutterPlugin: NSObject, FlutterPlugin {
1616
@MainActor
1717
let currentViewController: UIViewController = (UIApplication.shared.delegate?.window??.rootViewController)!
1818

19-
public static func register(with registrar: FlutterPluginRegistrar) {
20-
let channel = FlutterMethodChannel(name: "scgateway_flutter_plugin", binaryMessenger: registrar.messenger())
21-
let instance = SwiftScgatewayFlutterPlugin()
22-
23-
// let scLoansChannel = FlutterMethodChannel(name: "scloans", binaryMessenger: registrar.messenger())
24-
// let scLoansInstance = ScLoanFlutterPlugin()
25-
26-
registrar.addMethodCallDelegate(instance, channel: channel)
27-
// registrar.addMethodCallDelegate(scLoansInstance, channel: scLoansChannel)
28-
}
19+
private var eventsHandler: ScgatewayEventsHandler?
20+
21+
public static func register(with registrar: FlutterPluginRegistrar) {
22+
let channel = FlutterMethodChannel(name: "scgateway_flutter_plugin", binaryMessenger: registrar.messenger())
23+
let instance = SwiftScgatewayFlutterPlugin()
24+
registrar.addMethodCallDelegate(instance, channel: channel)
25+
26+
// Setup events handler with same registrar
27+
instance.eventsHandler = ScgatewayEventsHandler()
28+
instance.eventsHandler?.setup(with: registrar)
29+
30+
print("SwiftScgatewayFlutterPlugin with events handler registered successfully")
31+
}
2932

3033
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
3134

0 commit comments

Comments
 (0)