add support for mark-read-generic and mark-read-messages

update kotlin stub

update js types

update the correct badge count

clamp single decrements too

clamp decrement

future proof with `decrementBy`

add support for `mark-read-generic` and `mark-read-messages`

do nothing when receiving `mark-read-*` is received

simplify swift

update android with new types

add types to `NotificationReason`

add logic for decrementing the badge

add decrement mutation
This commit is contained in:
Hailey
2024-06-08 15:55:30 -07:00
parent a2d1cf68b9
commit 7dad1c280b
7 changed files with 133 additions and 25 deletions
@@ -3,6 +3,17 @@ package expo.modules.backgroundnotificationhandler
import android.content.Context
import com.google.firebase.messaging.RemoteMessage
enum class NotificationType(val type: String) {
Like("like"),
Repost("repost"),
Follow("follow"),
Reply("reply"),
Quote("quote"),
ChatMessage("chat-message"),
MarkReadGeneric("mark-read-generic"),
MarkReadMessages("mark-read-messages"),
}
class BackgroundNotificationHandler(
private val context: Context,
private val notifInterface: BackgroundNotificationHandlerInterface
@@ -13,8 +24,12 @@ class BackgroundNotificationHandler(
return
}
if (remoteMessage.data["reason"] == "chat-message") {
val type = NotificationType.valueOf(remoteMessage.data["reason"] ?: return)
if (type == NotificationType.ChatMessage) {
mutateWithChatMessage(remoteMessage)
} else if (type == NotificationType.MarkReadGeneric || type == NotificationType.MarkReadMessages) {
return
}
notifInterface.showMessage(remoteMessage)
@@ -67,7 +67,7 @@ class ExpoBackgroundNotificationHandlerModule : Module() {
NotificationPrefs(appContext.reactContext).removeManyFromStringArray(forKey, strings)
}
AsyncFunction("setBadgeCountAsync") { _: Int ->
AsyncFunction("setBadgeCountAsync") { _: String, _: Int ->
// This does nothing on Android
}
}