Skip to content

Commit

Permalink
mobile_app_notification_cleared for wearos (#4035)
Browse files Browse the repository at this point in the history
* mobile_app_notification_cleared for wearos

* Fix imports

* Remove database id extra

* Fix whitespace

* Reformatted imports and added the receiver to the manifest

* Move `handleDeleteIntent` to common
  • Loading branch information
JosephAbbey authored Dec 13, 2023
1 parent 17f86ef commit 6b56bc5
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 30 deletions.
5 changes: 0 additions & 5 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -871,11 +871,6 @@
android:enabled="true"
android:exported="true" />

<receiver
android:name=".notifications.NotificationDeleteReceiver"
android:enabled="true"
android:exported="true" />

</application>

</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ import io.homeassistant.companion.android.common.notifications.createChannelID
import io.homeassistant.companion.android.common.notifications.getGroupNotificationBuilder
import io.homeassistant.companion.android.common.notifications.handleChannel
import io.homeassistant.companion.android.common.notifications.handleColor
import io.homeassistant.companion.android.common.notifications.handleDeleteIntent
import io.homeassistant.companion.android.common.notifications.handleSmallIcon
import io.homeassistant.companion.android.common.notifications.handleText
import io.homeassistant.companion.android.common.notifications.parseColor
Expand Down Expand Up @@ -935,7 +936,7 @@ class MessagingManager @Inject constructor(

handleReplyHistory(notificationBuilder, data)

handleDeleteIntent(notificationBuilder, data, messageId, group, groupId, id)
handleDeleteIntent(context, notificationBuilder, data, messageId, group, groupId, id)

handleContentIntent(notificationBuilder, data)

Expand Down Expand Up @@ -1033,29 +1034,6 @@ class MessagingManager @Inject constructor(
}
}

private fun handleDeleteIntent(
builder: NotificationCompat.Builder,
data: Map<String, String>,
messageId: Int,
group: String?,
groupId: Int,
databaseId: Long?
) {
val deleteIntent = Intent(context, NotificationDeleteReceiver::class.java).apply {
putExtra(NotificationDeleteReceiver.EXTRA_DATA, HashMap(data))
putExtra(NotificationDeleteReceiver.EXTRA_NOTIFICATION_GROUP, group)
putExtra(NotificationDeleteReceiver.EXTRA_NOTIFICATION_GROUP_ID, groupId)
putExtra(NotificationDeleteReceiver.EXTRA_NOTIFICATION_DB, databaseId)
}
val deletePendingIntent = PendingIntent.getBroadcast(
context,
messageId,
deleteIntent,
PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
builder.setDeleteIntent(deletePendingIntent)
}

private fun handlePersistent(
builder: NotificationCompat.Builder,
tag: String?,
Expand Down
5 changes: 5 additions & 0 deletions common/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@
<action android:name="io.homeassistant.companion.android.UPDATE_SENSORS" />
</intent-filter>
</receiver>

<receiver
android:name=".notifications.NotificationDeleteReceiver"
android:enabled="true"
android:exported="true" />
</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.homeassistant.companion.android.notifications
package io.homeassistant.companion.android.common.notifications

import android.content.BroadcastReceiver
import android.content.Context
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ package io.homeassistant.companion.android.common.notifications

import android.app.NotificationChannel
import android.app.NotificationManager
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.graphics.Color
import android.graphics.PorterDuff
import android.graphics.PorterDuffColorFilter
Expand Down Expand Up @@ -290,3 +292,27 @@ fun clearNotification(context: Context, tag: String) {
val messageId = tag.hashCode()
notificationManagerCompat.cancel(tag, messageId, true)
}

fun handleDeleteIntent(
context: Context,
builder: NotificationCompat.Builder,
data: Map<String, String>,
messageId: Int,
group: String?,
groupId: Int,
databaseId: Long?
) {
val deleteIntent = Intent(context, NotificationDeleteReceiver::class.java).apply {
putExtra(NotificationDeleteReceiver.EXTRA_DATA, HashMap(data))
putExtra(NotificationDeleteReceiver.EXTRA_NOTIFICATION_GROUP, group)
putExtra(NotificationDeleteReceiver.EXTRA_NOTIFICATION_GROUP_ID, groupId)
putExtra(NotificationDeleteReceiver.EXTRA_NOTIFICATION_DB, databaseId)
}
val deletePendingIntent = PendingIntent.getBroadcast(
context,
messageId,
deleteIntent,
PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
builder.setDeleteIntent(deletePendingIntent)
}
1 change: 1 addition & 0 deletions wear/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,7 @@
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>

</application>

</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import io.homeassistant.companion.android.common.notifications.commandBeaconMoni
import io.homeassistant.companion.android.common.notifications.commandBleTransmitter
import io.homeassistant.companion.android.common.notifications.getGroupNotificationBuilder
import io.homeassistant.companion.android.common.notifications.handleChannel
import io.homeassistant.companion.android.common.notifications.handleDeleteIntent
import io.homeassistant.companion.android.common.notifications.handleSmallIcon
import io.homeassistant.companion.android.common.notifications.handleText
import io.homeassistant.companion.android.common.util.TextToSpeechData
Expand Down Expand Up @@ -116,6 +117,8 @@ class MessagingManager @Inject constructor(

handleText(notificationBuilder, data)

handleDeleteIntent(context, notificationBuilder, data, messageId, group, groupId, null)

notificationManagerCompat.apply {
Log.d(TAG, "Show notification with tag \"$tag\" and id \"$messageId\"")
notify(tag, messageId, notificationBuilder.build())
Expand Down

0 comments on commit 6b56bc5

Please sign in to comment.