Introduce filterBySession() extension

This commit is contained in:
Benoit Marty 2025-09-09 09:02:25 +02:00
parent d851bf2a15
commit bd6c097016
2 changed files with 8 additions and 1 deletions

View file

@ -34,6 +34,7 @@ import io.element.android.libraries.push.api.notifications.NotificationBitmapLoa
import io.element.android.libraries.push.api.notifications.conversations.NotificationConversationService
import io.element.android.libraries.push.impl.intent.IntentProvider
import io.element.android.libraries.push.impl.notifications.shortcut.createShortcutId
import io.element.android.libraries.push.impl.notifications.shortcut.filterBySession
import io.element.android.libraries.sessionstorage.api.observer.SessionListener
import io.element.android.libraries.sessionstorage.api.observer.SessionObserver
import io.element.android.libraries.ui.strings.CommonStrings
@ -182,7 +183,7 @@ class DefaultNotificationConversationService(
private fun onSessionLogOut(sessionId: SessionId) {
runCatchingExceptions {
val shortcuts = ShortcutManagerCompat.getDynamicShortcuts(context)
val shortcutIdsToRemove = shortcuts.filter { it.id.startsWith(sessionId.value) }.map { it.id }
val shortcutIdsToRemove = shortcuts.filterBySession(sessionId).map { it.id }
ShortcutManagerCompat.removeDynamicShortcuts(context, shortcutIdsToRemove)
if (isRequestPinShortcutSupported) {

View file

@ -7,7 +7,13 @@
package io.element.android.libraries.push.impl.notifications.shortcut
import androidx.core.content.pm.ShortcutInfoCompat
import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.core.SessionId
internal fun createShortcutId(sessionId: SessionId, roomId: RoomId) = "$sessionId-$roomId"
internal fun Iterable<ShortcutInfoCompat>.filterBySession(sessionId: SessionId): Iterable<ShortcutInfoCompat> {
val prefix = "$sessionId-"
return filter { it.id.startsWith(prefix) }
}