fix(android): Send notification events again
This commit is contained in:
parent
cab031bd07
commit
4ec44ab3e1
@ -5,6 +5,9 @@ const val TAG = "moxxy_native"
|
|||||||
// The event channel name for the keyboard height
|
// The event channel name for the keyboard height
|
||||||
const val KEYBOARD_HEIGHT_EVENT_CHANNEL_NAME = "org.moxxy.moxxyv2/keyboard_stream"
|
const val KEYBOARD_HEIGHT_EVENT_CHANNEL_NAME = "org.moxxy.moxxyv2/keyboard_stream"
|
||||||
|
|
||||||
|
// The event channel name for notification events
|
||||||
|
const val NOTIFICATION_EVENT_CHANNEL_NAME = "org.moxxy.moxxyv2/notification_stream"
|
||||||
|
|
||||||
// The size of buffers to use for various operations
|
// The size of buffers to use for various operations
|
||||||
const val BUFFER_SIZE = 4096
|
const val BUFFER_SIZE = 4096
|
||||||
|
|
||||||
|
@ -25,6 +25,7 @@ import org.moxxy.moxxy_native.media.MediaImplementation
|
|||||||
import org.moxxy.moxxy_native.media.MoxxyMediaApi
|
import org.moxxy.moxxy_native.media.MoxxyMediaApi
|
||||||
import org.moxxy.moxxy_native.notifications.MoxxyNotificationsApi
|
import org.moxxy.moxxy_native.notifications.MoxxyNotificationsApi
|
||||||
import org.moxxy.moxxy_native.notifications.NotificationEvent
|
import org.moxxy.moxxy_native.notifications.NotificationEvent
|
||||||
|
import org.moxxy.moxxy_native.notifications.NotificationStreamHandler
|
||||||
import org.moxxy.moxxy_native.notifications.NotificationsImplementation
|
import org.moxxy.moxxy_native.notifications.NotificationsImplementation
|
||||||
import org.moxxy.moxxy_native.picker.FilePickerType
|
import org.moxxy.moxxy_native.picker.FilePickerType
|
||||||
import org.moxxy.moxxy_native.picker.MoxxyPickerApi
|
import org.moxxy.moxxy_native.picker.MoxxyPickerApi
|
||||||
@ -37,23 +38,6 @@ import org.moxxy.moxxy_native.service.MoxxyServiceApi
|
|||||||
import org.moxxy.moxxy_native.service.PluginTracker
|
import org.moxxy.moxxy_native.service.PluginTracker
|
||||||
import org.moxxy.moxxy_native.service.ServiceImplementation
|
import org.moxxy.moxxy_native.service.ServiceImplementation
|
||||||
|
|
||||||
object MoxxyEventChannels {
|
|
||||||
var notificationChannel: EventChannel? = null
|
|
||||||
var notificationEventSink: EventChannel.EventSink? = null
|
|
||||||
}
|
|
||||||
|
|
||||||
object NotificationStreamHandler : EventChannel.StreamHandler {
|
|
||||||
override fun onListen(arguments: Any?, events: EventChannel.EventSink?) {
|
|
||||||
Log.d(TAG, "NotificationStreamHandler: Attached stream")
|
|
||||||
MoxxyEventChannels.notificationEventSink = events
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCancel(arguments: Any?) {
|
|
||||||
Log.d(TAG, "NotificationStreamHandler: Detached stream")
|
|
||||||
MoxxyEventChannels.notificationEventSink = null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Hold the last notification event in case we did a cold start.
|
* Hold the last notification event in case we did a cold start.
|
||||||
*/
|
*/
|
||||||
@ -107,6 +91,10 @@ class MoxxyNativePlugin : FlutterPlugin, ActivityAware, ServiceAware, BroadcastR
|
|||||||
val keyboardChannel = EventChannel(flutterPluginBinding.getBinaryMessenger(), KEYBOARD_HEIGHT_EVENT_CHANNEL_NAME)
|
val keyboardChannel = EventChannel(flutterPluginBinding.getBinaryMessenger(), KEYBOARD_HEIGHT_EVENT_CHANNEL_NAME)
|
||||||
keyboardChannel?.setStreamHandler(KeyboardStreamHandler)
|
keyboardChannel?.setStreamHandler(KeyboardStreamHandler)
|
||||||
|
|
||||||
|
// Special handling from notification events
|
||||||
|
val notificationChannel = EventChannel(flutterPluginBinding.getBinaryMessenger(), NOTIFICATION_EVENT_CHANNEL_NAME)
|
||||||
|
notificationChannel?.setStreamHandler(NotificationStreamHandler)
|
||||||
|
|
||||||
// Register the picker handler
|
// Register the picker handler
|
||||||
pickerListener = PickerResultListener(context!!)
|
pickerListener = PickerResultListener(context!!)
|
||||||
Log.d(TAG, "Attached to engine")
|
Log.d(TAG, "Attached to engine")
|
||||||
|
@ -15,7 +15,6 @@ import androidx.core.app.RemoteInput
|
|||||||
import androidx.core.content.FileProvider
|
import androidx.core.content.FileProvider
|
||||||
import org.moxxy.moxxy_native.MARK_AS_READ_ACTION
|
import org.moxxy.moxxy_native.MARK_AS_READ_ACTION
|
||||||
import org.moxxy.moxxy_native.MOXXY_FILEPROVIDER_ID
|
import org.moxxy.moxxy_native.MOXXY_FILEPROVIDER_ID
|
||||||
import org.moxxy.moxxy_native.MoxxyEventChannels
|
|
||||||
import org.moxxy.moxxy_native.NOTIFICATION_EXTRA_ID_KEY
|
import org.moxxy.moxxy_native.NOTIFICATION_EXTRA_ID_KEY
|
||||||
import org.moxxy.moxxy_native.NOTIFICATION_EXTRA_JID_KEY
|
import org.moxxy.moxxy_native.NOTIFICATION_EXTRA_JID_KEY
|
||||||
import org.moxxy.moxxy_native.NOTIFICATION_MESSAGE_EXTRA_MIME
|
import org.moxxy.moxxy_native.NOTIFICATION_MESSAGE_EXTRA_MIME
|
||||||
@ -50,7 +49,7 @@ class NotificationReceiver : BroadcastReceiver() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun handleMarkAsRead(context: Context, intent: Intent) {
|
private fun handleMarkAsRead(context: Context, intent: Intent) {
|
||||||
MoxxyEventChannels.notificationEventSink?.success(
|
NotificationStreamHandler.sink?.success(
|
||||||
NotificationEvent(
|
NotificationEvent(
|
||||||
intent.getLongExtra(NOTIFICATION_EXTRA_ID_KEY, -1),
|
intent.getLongExtra(NOTIFICATION_EXTRA_ID_KEY, -1),
|
||||||
intent.getStringExtra(NOTIFICATION_EXTRA_JID_KEY)!!,
|
intent.getStringExtra(NOTIFICATION_EXTRA_JID_KEY)!!,
|
||||||
@ -65,7 +64,7 @@ class NotificationReceiver : BroadcastReceiver() {
|
|||||||
private fun handleReply(context: Context, intent: Intent) {
|
private fun handleReply(context: Context, intent: Intent) {
|
||||||
val remoteInput = RemoteInput.getResultsFromIntent(intent) ?: return
|
val remoteInput = RemoteInput.getResultsFromIntent(intent) ?: return
|
||||||
val replyPayload = remoteInput.getCharSequence(REPLY_TEXT_KEY)
|
val replyPayload = remoteInput.getCharSequence(REPLY_TEXT_KEY)
|
||||||
MoxxyEventChannels.notificationEventSink?.success(
|
NotificationStreamHandler.sink?.success(
|
||||||
NotificationEvent(
|
NotificationEvent(
|
||||||
intent.getLongExtra(NOTIFICATION_EXTRA_ID_KEY, -1),
|
intent.getLongExtra(NOTIFICATION_EXTRA_ID_KEY, -1),
|
||||||
intent.getStringExtra(NOTIFICATION_EXTRA_JID_KEY)!!,
|
intent.getStringExtra(NOTIFICATION_EXTRA_JID_KEY)!!,
|
||||||
@ -165,7 +164,7 @@ class NotificationReceiver : BroadcastReceiver() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun handleTap(context: Context, intent: Intent) {
|
private fun handleTap(context: Context, intent: Intent) {
|
||||||
MoxxyEventChannels.notificationEventSink?.success(
|
NotificationStreamHandler.sink?.success(
|
||||||
NotificationEvent(
|
NotificationEvent(
|
||||||
intent.getLongExtra(NOTIFICATION_EXTRA_ID_KEY, -1),
|
intent.getLongExtra(NOTIFICATION_EXTRA_ID_KEY, -1),
|
||||||
intent.getStringExtra(NOTIFICATION_EXTRA_JID_KEY)!!,
|
intent.getStringExtra(NOTIFICATION_EXTRA_JID_KEY)!!,
|
||||||
|
@ -0,0 +1,22 @@
|
|||||||
|
package org.moxxy.moxxy_native.notifications
|
||||||
|
|
||||||
|
import android.util.Log
|
||||||
|
import io.flutter.plugin.common.EventChannel
|
||||||
|
import org.moxxy.moxxy_native.TAG
|
||||||
|
|
||||||
|
object NotificationStreamHandler : EventChannel.StreamHandler {
|
||||||
|
// The event sink to use for sending notification events to the service.
|
||||||
|
var sink: EventChannel.EventSink? = null
|
||||||
|
|
||||||
|
override fun onListen(arguments: Any?, events: EventChannel.EventSink?) {
|
||||||
|
// "register" the event sink
|
||||||
|
sink = events
|
||||||
|
|
||||||
|
Log.d(TAG, "NotificationStreamHandler: Attached stream")
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCancel(arguments: Any?) {
|
||||||
|
sink = null
|
||||||
|
Log.d(TAG, "NotificationStreamHandler: Detached stream")
|
||||||
|
}
|
||||||
|
}
|
@ -8,7 +8,6 @@ import android.view.ViewTreeObserver
|
|||||||
import androidx.core.view.ViewCompat
|
import androidx.core.view.ViewCompat
|
||||||
import androidx.core.view.WindowInsetsCompat
|
import androidx.core.view.WindowInsetsCompat
|
||||||
import io.flutter.plugin.common.EventChannel
|
import io.flutter.plugin.common.EventChannel
|
||||||
import org.moxxy.moxxy_native.MoxxyEventChannels
|
|
||||||
import org.moxxy.moxxy_native.TAG
|
import org.moxxy.moxxy_native.TAG
|
||||||
|
|
||||||
object KeyboardStreamHandler : EventChannel.StreamHandler {
|
object KeyboardStreamHandler : EventChannel.StreamHandler {
|
||||||
@ -67,7 +66,7 @@ object KeyboardStreamHandler : EventChannel.StreamHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onCancel(arguments: Any?) {
|
override fun onCancel(arguments: Any?) {
|
||||||
MoxxyEventChannels.notificationEventSink = null
|
sink = null
|
||||||
Log.d(TAG, "KeyboardStreamHandler: Detached stream")
|
Log.d(TAG, "KeyboardStreamHandler: Detached stream")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user