Fix minor bugs

This commit is contained in:
problematicconsumer
2023-09-21 21:47:38 +03:30
parent 8958c72fe6
commit 1ed278fc8c
5 changed files with 33 additions and 28 deletions

View File

@@ -15,17 +15,17 @@ class EventHandler : FlutterPlugin {
const val SERVICE_ALERTS = "com.hiddify.app/service.alerts"
}
private lateinit var statusChannel: EventChannel
private lateinit var alertsChannel: EventChannel
private var statusChannel: EventChannel? = null
private var alertsChannel: EventChannel? = null
private lateinit var statusObserver: Observer<Status>
private lateinit var alertsObserver: Observer<ServiceEvent?>
private var statusObserver: Observer<Status>? = null
private var alertsObserver: Observer<ServiceEvent?>? = null
override fun onAttachedToEngine(flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
statusChannel = EventChannel(flutterPluginBinding.binaryMessenger, SERVICE_STATUS)
alertsChannel = EventChannel(flutterPluginBinding.binaryMessenger, SERVICE_ALERTS)
statusChannel.setStreamHandler(object : EventChannel.StreamHandler {
statusChannel!!.setStreamHandler(object : EventChannel.StreamHandler {
override fun onListen(arguments: Any?, events: EventChannel.EventSink?) {
statusObserver = Observer {
Log.d(TAG, "new status: $it")
@@ -35,15 +35,16 @@ class EventHandler : FlutterPlugin {
.toMap()
events?.success(map)
}
MainActivity.instance.serviceStatus.observeForever(statusObserver)
MainActivity.instance.serviceStatus.observeForever(statusObserver!!)
}
override fun onCancel(arguments: Any?) {
MainActivity.instance.serviceStatus.removeObserver(statusObserver)
if (statusObserver != null)
MainActivity.instance.serviceStatus.removeObserver(statusObserver!!)
}
})
alertsChannel.setStreamHandler(object : EventChannel.StreamHandler {
alertsChannel!!.setStreamHandler(object : EventChannel.StreamHandler {
override fun onListen(arguments: Any?, events: EventChannel.EventSink?) {
alertsObserver = Observer {
if (it == null) return@Observer
@@ -57,20 +58,23 @@ class EventHandler : FlutterPlugin {
.toMap()
events?.success(map)
}
MainActivity.instance.serviceAlerts.observeForever(alertsObserver)
MainActivity.instance.serviceAlerts.observeForever(alertsObserver!!)
}
override fun onCancel(arguments: Any?) {
MainActivity.instance.serviceAlerts.removeObserver(alertsObserver)
if (alertsObserver != null)
MainActivity.instance.serviceAlerts.removeObserver(alertsObserver!!)
}
})
}
override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {
MainActivity.instance.serviceStatus.removeObserver(statusObserver)
statusChannel.setStreamHandler(null)
MainActivity.instance.serviceAlerts.removeObserver(alertsObserver)
alertsChannel.setStreamHandler(null)
if (statusObserver != null)
MainActivity.instance.serviceStatus.removeObserver(statusObserver!!)
statusChannel?.setStreamHandler(null)
if (alertsObserver != null)
MainActivity.instance.serviceAlerts.removeObserver(alertsObserver!!)
alertsChannel?.setStreamHandler(null)
}
}

View File

@@ -20,7 +20,7 @@ class GroupsChannel(private val scope: CoroutineScope) : FlutterPlugin, CommandC
private val commandClient =
CommandClient(scope, CommandClient.ConnectionType.Groups, this)
private lateinit var groupsChannel: EventChannel
private var groupsChannel: EventChannel? = null
private var groupsEvent: EventChannel.EventSink? = null
@@ -37,7 +37,7 @@ class GroupsChannel(private val scope: CoroutineScope) : FlutterPlugin, CommandC
GROUP_CHANNEL
)
groupsChannel.setStreamHandler(object : EventChannel.StreamHandler {
groupsChannel!!.setStreamHandler(object : EventChannel.StreamHandler {
override fun onListen(arguments: Any?, events: EventChannel.EventSink?) {
groupsEvent = events
Log.d(TAG, "connecting groups command client")
@@ -55,6 +55,7 @@ class GroupsChannel(private val scope: CoroutineScope) : FlutterPlugin, CommandC
override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {
groupsEvent = null
commandClient.disconnect()
groupsChannel?.setStreamHandler(null)
}
data class KOutboundGroup(

View File

@@ -13,7 +13,7 @@ import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
class MethodHandler : FlutterPlugin, MethodChannel.MethodCallHandler {
private lateinit var channel: MethodChannel
private var channel: MethodChannel? = null
companion object {
const val channelName = "com.hiddify.app/method"
@@ -37,11 +37,11 @@ class MethodHandler : FlutterPlugin, MethodChannel.MethodCallHandler {
StandardMethodCodec.INSTANCE,
taskQueue
)
channel.setMethodCallHandler(this)
channel!!.setMethodCallHandler(this)
}
override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {
channel.setMethodCallHandler(null)
channel?.setMethodCallHandler(null)
}
override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) {

View File

@@ -30,7 +30,7 @@ import java.io.ByteArrayOutputStream
class PlatformSettingsHandler : FlutterPlugin, MethodChannel.MethodCallHandler, ActivityAware,
PluginRegistry.ActivityResultListener {
private lateinit var channel: MethodChannel
private var channel: MethodChannel? = null
private var activity: Activity? = null
private lateinit var ignoreRequestResult: MethodChannel.Result
@@ -56,11 +56,11 @@ class PlatformSettingsHandler : FlutterPlugin, MethodChannel.MethodCallHandler,
StandardMethodCodec.INSTANCE,
taskQueue
)
channel.setMethodCallHandler(this)
channel!!.setMethodCallHandler(this)
}
override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {
channel.setMethodCallHandler(null)
channel?.setMethodCallHandler(null)
}
override fun onAttachedToActivity(binding: ActivityPluginBinding) {