Browse Source

Rename interface `NotificationDrawerManager` to `NotificationCleaner` since it actually contains only method to remove notifications.

pull/3203/head
Benoit Marty 2 months ago
parent
commit
6ea629a4d2
  1. 8
      features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/response/AcceptDeclineInvitePresenter.kt
  2. 16
      features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/response/AcceptDeclineInvitePresenterTest.kt
  3. 2
      libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/notifications/NotificationCleaner.kt
  4. 4
      libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/di/PushBindsModule.kt
  5. 4
      libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt
  6. 18
      libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandler.kt
  7. 36
      libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandlerTest.kt
  8. 6
      libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/notifications/FakeNotificationCleaner.kt
  9. 4
      samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt

8
features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/response/AcceptDeclineInvitePresenter.kt

@ -34,7 +34,7 @@ import io.element.android.libraries.architecture.runUpdatingState
import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.room.join.JoinRoom import io.element.android.libraries.matrix.api.room.join.JoinRoom
import io.element.android.libraries.push.api.notifications.NotificationDrawerManager import io.element.android.libraries.push.api.notifications.NotificationCleaner
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import java.util.Optional import java.util.Optional
@ -44,7 +44,7 @@ import kotlin.jvm.optionals.getOrNull
class AcceptDeclineInvitePresenter @Inject constructor( class AcceptDeclineInvitePresenter @Inject constructor(
private val client: MatrixClient, private val client: MatrixClient,
private val joinRoom: JoinRoom, private val joinRoom: JoinRoom,
private val notificationDrawerManager: NotificationDrawerManager, private val notificationCleaner: NotificationCleaner,
) : Presenter<AcceptDeclineInviteState> { ) : Presenter<AcceptDeclineInviteState> {
@Composable @Composable
override fun present(): AcceptDeclineInviteState { override fun present(): AcceptDeclineInviteState {
@ -112,7 +112,7 @@ class AcceptDeclineInvitePresenter @Inject constructor(
trigger = JoinedRoom.Trigger.Invite, trigger = JoinedRoom.Trigger.Invite,
) )
.onSuccess { .onSuccess {
notificationDrawerManager.clearMembershipNotificationForRoom(client.sessionId, roomId) notificationCleaner.clearMembershipNotificationForRoom(client.sessionId, roomId)
} }
.map { roomId } .map { roomId }
} }
@ -122,7 +122,7 @@ class AcceptDeclineInvitePresenter @Inject constructor(
suspend { suspend {
client.getRoom(roomId)?.use { client.getRoom(roomId)?.use {
it.leave().getOrThrow() it.leave().getOrThrow()
notificationDrawerManager.clearMembershipNotificationForRoom(client.sessionId, roomId) notificationCleaner.clearMembershipNotificationForRoom(client.sessionId, roomId)
} }
roomId roomId
}.runCatchingUpdatingState(declinedAction) }.runCatchingUpdatingState(declinedAction)

16
features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/response/AcceptDeclineInvitePresenterTest.kt

@ -30,8 +30,8 @@ import io.element.android.libraries.matrix.test.A_SESSION_ID
import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.FakeMatrixClient
import io.element.android.libraries.matrix.test.room.FakeMatrixRoom import io.element.android.libraries.matrix.test.room.FakeMatrixRoom
import io.element.android.libraries.matrix.test.room.join.FakeJoinRoom import io.element.android.libraries.matrix.test.room.join.FakeJoinRoom
import io.element.android.libraries.push.api.notifications.NotificationDrawerManager import io.element.android.libraries.push.api.notifications.NotificationCleaner
import io.element.android.libraries.push.test.notifications.FakeNotificationDrawerManager import io.element.android.libraries.push.test.notifications.FakeNotificationCleaner
import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.WarmUpRule
import io.element.android.tests.testutils.lambda.assert import io.element.android.tests.testutils.lambda.assert
import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.lambda.lambdaRecorder
@ -133,7 +133,7 @@ class AcceptDeclineInvitePresenterTest {
val clearMembershipNotificationForRoomLambda = lambdaRecorder<SessionId, RoomId, Unit> { _, _ -> val clearMembershipNotificationForRoomLambda = lambdaRecorder<SessionId, RoomId, Unit> { _, _ ->
Result.success(Unit) Result.success(Unit)
} }
val notificationDrawerManager = FakeNotificationDrawerManager( val fakeNotificationCleaner = FakeNotificationCleaner(
clearMembershipNotificationForRoomLambda = clearMembershipNotificationForRoomLambda clearMembershipNotificationForRoomLambda = clearMembershipNotificationForRoomLambda
) )
val declineInviteSuccess = lambdaRecorder { -> val declineInviteSuccess = lambdaRecorder { ->
@ -149,7 +149,7 @@ class AcceptDeclineInvitePresenterTest {
} }
val presenter = createAcceptDeclineInvitePresenter( val presenter = createAcceptDeclineInvitePresenter(
client = client, client = client,
notificationDrawerManager = notificationDrawerManager, notificationCleaner = fakeNotificationCleaner,
) )
presenter.test { presenter.test {
val inviteData = anInviteData() val inviteData = anInviteData()
@ -219,7 +219,7 @@ class AcceptDeclineInvitePresenterTest {
val clearMembershipNotificationForRoomLambda = lambdaRecorder<SessionId, RoomId, Unit> { _, _ -> val clearMembershipNotificationForRoomLambda = lambdaRecorder<SessionId, RoomId, Unit> { _, _ ->
Result.success(Unit) Result.success(Unit)
} }
val notificationDrawerManager = FakeNotificationDrawerManager( val fakeNotificationCleaner = FakeNotificationCleaner(
clearMembershipNotificationForRoomLambda = clearMembershipNotificationForRoomLambda clearMembershipNotificationForRoomLambda = clearMembershipNotificationForRoomLambda
) )
val joinRoomSuccess = lambdaRecorder { _: RoomId, _: List<String>, _: JoinedRoom.Trigger -> val joinRoomSuccess = lambdaRecorder { _: RoomId, _: List<String>, _: JoinedRoom.Trigger ->
@ -227,7 +227,7 @@ class AcceptDeclineInvitePresenterTest {
} }
val presenter = createAcceptDeclineInvitePresenter( val presenter = createAcceptDeclineInvitePresenter(
joinRoomLambda = joinRoomSuccess, joinRoomLambda = joinRoomSuccess,
notificationDrawerManager = notificationDrawerManager, notificationCleaner = fakeNotificationCleaner,
) )
presenter.test { presenter.test {
val inviteData = anInviteData() val inviteData = anInviteData()
@ -274,12 +274,12 @@ class AcceptDeclineInvitePresenterTest {
joinRoomLambda: (RoomId, List<String>, JoinedRoom.Trigger) -> Result<Unit> = { _, _, _ -> joinRoomLambda: (RoomId, List<String>, JoinedRoom.Trigger) -> Result<Unit> = { _, _, _ ->
Result.success(Unit) Result.success(Unit)
}, },
notificationDrawerManager: NotificationDrawerManager = FakeNotificationDrawerManager(), notificationCleaner: NotificationCleaner = FakeNotificationCleaner(),
): AcceptDeclineInvitePresenter { ): AcceptDeclineInvitePresenter {
return AcceptDeclineInvitePresenter( return AcceptDeclineInvitePresenter(
client = client, client = client,
joinRoom = FakeJoinRoom(joinRoomLambda), joinRoom = FakeJoinRoom(joinRoomLambda),
notificationDrawerManager = notificationDrawerManager, notificationCleaner = notificationCleaner,
) )
} }
} }

2
libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/notifications/NotificationDrawerManager.kt → libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/notifications/NotificationCleaner.kt

@ -20,7 +20,7 @@ import io.element.android.libraries.matrix.api.core.EventId
import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.SessionId
interface NotificationDrawerManager { interface NotificationCleaner {
fun clearAllMessagesEvents(sessionId: SessionId) fun clearAllMessagesEvents(sessionId: SessionId)
fun clearMessagesForRoom(sessionId: SessionId, roomId: RoomId) fun clearMessagesForRoom(sessionId: SessionId, roomId: RoomId)
fun clearEvent(sessionId: SessionId, eventId: EventId) fun clearEvent(sessionId: SessionId, eventId: EventId)

4
libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/di/PushBindsModule.kt

@ -20,7 +20,7 @@ import com.squareup.anvil.annotations.ContributesTo
import dagger.Binds import dagger.Binds
import dagger.Module import dagger.Module
import io.element.android.libraries.di.AppScope import io.element.android.libraries.di.AppScope
import io.element.android.libraries.push.api.notifications.NotificationDrawerManager import io.element.android.libraries.push.api.notifications.NotificationCleaner
import io.element.android.libraries.push.impl.notifications.DefaultNotificationDrawerManager import io.element.android.libraries.push.impl.notifications.DefaultNotificationDrawerManager
@Module @Module
@ -29,5 +29,5 @@ abstract class PushBindsModule {
@Binds @Binds
abstract fun bindNotificationDrawerManager( abstract fun bindNotificationDrawerManager(
defaultNotificationDrawerManager: DefaultNotificationDrawerManager defaultNotificationDrawerManager: DefaultNotificationDrawerManager
): NotificationDrawerManager ): NotificationCleaner
} }

4
libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt

@ -30,7 +30,7 @@ import io.element.android.libraries.matrix.api.core.SessionId
import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.matrix.api.core.ThreadId
import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.api.user.MatrixUser
import io.element.android.libraries.matrix.ui.media.ImageLoaderHolder import io.element.android.libraries.matrix.ui.media.ImageLoaderHolder
import io.element.android.libraries.push.api.notifications.NotificationDrawerManager import io.element.android.libraries.push.api.notifications.NotificationCleaner
import io.element.android.libraries.push.api.notifications.NotificationIdProvider import io.element.android.libraries.push.api.notifications.NotificationIdProvider
import io.element.android.libraries.push.impl.notifications.model.NotifiableEvent import io.element.android.libraries.push.impl.notifications.model.NotifiableEvent
import io.element.android.libraries.push.impl.notifications.model.shouldIgnoreEventInRoom import io.element.android.libraries.push.impl.notifications.model.shouldIgnoreEventInRoom
@ -59,7 +59,7 @@ class DefaultNotificationDrawerManager @Inject constructor(
private val matrixClientProvider: MatrixClientProvider, private val matrixClientProvider: MatrixClientProvider,
private val imageLoaderHolder: ImageLoaderHolder, private val imageLoaderHolder: ImageLoaderHolder,
private val activeNotificationsProvider: ActiveNotificationsProvider, private val activeNotificationsProvider: ActiveNotificationsProvider,
) : NotificationDrawerManager { ) : NotificationCleaner {
private var appNavigationStateObserver: Job? = null private var appNavigationStateObserver: Job? = null
// TODO EAx add a setting per user for this // TODO EAx add a setting per user for this

18
libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandler.kt

@ -28,7 +28,7 @@ import io.element.android.libraries.matrix.api.room.MatrixRoom
import io.element.android.libraries.matrix.api.room.isDm import io.element.android.libraries.matrix.api.room.isDm
import io.element.android.libraries.matrix.api.timeline.ReceiptType import io.element.android.libraries.matrix.api.timeline.ReceiptType
import io.element.android.libraries.preferences.api.store.SessionPreferencesStoreFactory import io.element.android.libraries.preferences.api.store.SessionPreferencesStoreFactory
import io.element.android.libraries.push.api.notifications.NotificationDrawerManager import io.element.android.libraries.push.api.notifications.NotificationCleaner
import io.element.android.libraries.push.impl.R import io.element.android.libraries.push.impl.R
import io.element.android.libraries.push.impl.notifications.model.NotifiableMessageEvent import io.element.android.libraries.push.impl.notifications.model.NotifiableMessageEvent
import io.element.android.libraries.push.impl.push.OnNotifiableEventReceived import io.element.android.libraries.push.impl.push.OnNotifiableEventReceived
@ -47,7 +47,7 @@ class NotificationBroadcastReceiverHandler @Inject constructor(
private val appCoroutineScope: CoroutineScope, private val appCoroutineScope: CoroutineScope,
private val matrixClientProvider: MatrixClientProvider, private val matrixClientProvider: MatrixClientProvider,
private val sessionPreferencesStore: SessionPreferencesStoreFactory, private val sessionPreferencesStore: SessionPreferencesStoreFactory,
private val notificationDrawerManager: NotificationDrawerManager, private val notificationCleaner: NotificationCleaner,
private val actionIds: NotificationActionIds, private val actionIds: NotificationActionIds,
private val systemClock: SystemClock, private val systemClock: SystemClock,
private val onNotifiableEventReceived: OnNotifiableEventReceived, private val onNotifiableEventReceived: OnNotifiableEventReceived,
@ -66,26 +66,26 @@ class NotificationBroadcastReceiverHandler @Inject constructor(
handleSmartReply(sessionId, roomId, threadId, intent) handleSmartReply(sessionId, roomId, threadId, intent)
} }
actionIds.dismissRoom -> if (roomId != null) { actionIds.dismissRoom -> if (roomId != null) {
notificationDrawerManager.clearMessagesForRoom(sessionId, roomId) notificationCleaner.clearMessagesForRoom(sessionId, roomId)
} }
actionIds.dismissSummary -> actionIds.dismissSummary ->
notificationDrawerManager.clearAllMessagesEvents(sessionId) notificationCleaner.clearAllMessagesEvents(sessionId)
actionIds.dismissInvite -> if (roomId != null) { actionIds.dismissInvite -> if (roomId != null) {
notificationDrawerManager.clearMembershipNotificationForRoom(sessionId, roomId) notificationCleaner.clearMembershipNotificationForRoom(sessionId, roomId)
} }
actionIds.dismissEvent -> if (eventId != null) { actionIds.dismissEvent -> if (eventId != null) {
notificationDrawerManager.clearEvent(sessionId, eventId) notificationCleaner.clearEvent(sessionId, eventId)
} }
actionIds.markRoomRead -> if (roomId != null) { actionIds.markRoomRead -> if (roomId != null) {
notificationDrawerManager.clearMessagesForRoom(sessionId, roomId) notificationCleaner.clearMessagesForRoom(sessionId, roomId)
handleMarkAsRead(sessionId, roomId) handleMarkAsRead(sessionId, roomId)
} }
actionIds.join -> if (roomId != null) { actionIds.join -> if (roomId != null) {
notificationDrawerManager.clearMembershipNotificationForRoom(sessionId, roomId) notificationCleaner.clearMembershipNotificationForRoom(sessionId, roomId)
handleJoinRoom(sessionId, roomId) handleJoinRoom(sessionId, roomId)
} }
actionIds.reject -> if (roomId != null) { actionIds.reject -> if (roomId != null) {
notificationDrawerManager.clearMembershipNotificationForRoom(sessionId, roomId) notificationCleaner.clearMembershipNotificationForRoom(sessionId, roomId)
handleRejectRoom(sessionId, roomId) handleRejectRoom(sessionId, roomId)
} }
} }

36
libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandlerTest.kt

@ -40,11 +40,11 @@ import io.element.android.libraries.preferences.api.store.SessionPreferencesStor
import io.element.android.libraries.preferences.api.store.SessionPreferencesStoreFactory import io.element.android.libraries.preferences.api.store.SessionPreferencesStoreFactory
import io.element.android.libraries.preferences.test.FakeSessionPreferencesStoreFactory import io.element.android.libraries.preferences.test.FakeSessionPreferencesStoreFactory
import io.element.android.libraries.preferences.test.InMemorySessionPreferencesStore import io.element.android.libraries.preferences.test.InMemorySessionPreferencesStore
import io.element.android.libraries.push.api.notifications.NotificationDrawerManager import io.element.android.libraries.push.api.notifications.NotificationCleaner
import io.element.android.libraries.push.impl.notifications.model.NotifiableEvent import io.element.android.libraries.push.impl.notifications.model.NotifiableEvent
import io.element.android.libraries.push.impl.push.FakeOnNotifiableEventReceived import io.element.android.libraries.push.impl.push.FakeOnNotifiableEventReceived
import io.element.android.libraries.push.impl.push.OnNotifiableEventReceived import io.element.android.libraries.push.impl.push.OnNotifiableEventReceived
import io.element.android.libraries.push.test.notifications.FakeNotificationDrawerManager import io.element.android.libraries.push.test.notifications.FakeNotificationCleaner
import io.element.android.services.toolbox.api.strings.StringProvider import io.element.android.services.toolbox.api.strings.StringProvider
import io.element.android.services.toolbox.api.systemclock.SystemClock import io.element.android.services.toolbox.api.systemclock.SystemClock
import io.element.android.services.toolbox.test.strings.FakeStringProvider import io.element.android.services.toolbox.test.strings.FakeStringProvider
@ -90,11 +90,11 @@ class NotificationBroadcastReceiverHandlerTest {
@Test @Test
fun `Test dismiss room`() = runTest { fun `Test dismiss room`() = runTest {
val clearMessagesForRoomLambda = lambdaRecorder<SessionId, RoomId, Unit> { _, _ -> } val clearMessagesForRoomLambda = lambdaRecorder<SessionId, RoomId, Unit> { _, _ -> }
val notificationDrawerManager = FakeNotificationDrawerManager( val fakeNotificationCleaner = FakeNotificationCleaner(
clearMessagesForRoomLambda = clearMessagesForRoomLambda, clearMessagesForRoomLambda = clearMessagesForRoomLambda,
) )
val sut = createNotificationBroadcastReceiverHandler( val sut = createNotificationBroadcastReceiverHandler(
notificationDrawerManager = notificationDrawerManager notificationCleaner = fakeNotificationCleaner
) )
sut.onReceive( sut.onReceive(
createIntent( createIntent(
@ -111,11 +111,11 @@ class NotificationBroadcastReceiverHandlerTest {
@Test @Test
fun `Test dismiss summary`() = runTest { fun `Test dismiss summary`() = runTest {
val clearAllMessagesEventsLambda = lambdaRecorder<SessionId, Unit> { _ -> } val clearAllMessagesEventsLambda = lambdaRecorder<SessionId, Unit> { _ -> }
val notificationDrawerManager = FakeNotificationDrawerManager( val fakeNotificationCleaner = FakeNotificationCleaner(
clearAllMessagesEventsLambda = clearAllMessagesEventsLambda, clearAllMessagesEventsLambda = clearAllMessagesEventsLambda,
) )
val sut = createNotificationBroadcastReceiverHandler( val sut = createNotificationBroadcastReceiverHandler(
notificationDrawerManager = notificationDrawerManager notificationCleaner = fakeNotificationCleaner
) )
sut.onReceive( sut.onReceive(
createIntent( createIntent(
@ -140,11 +140,11 @@ class NotificationBroadcastReceiverHandlerTest {
@Test @Test
fun `Test dismiss Invite`() = runTest { fun `Test dismiss Invite`() = runTest {
val clearMembershipNotificationForRoomLambda = lambdaRecorder<SessionId, RoomId, Unit> { _, _ -> } val clearMembershipNotificationForRoomLambda = lambdaRecorder<SessionId, RoomId, Unit> { _, _ -> }
val notificationDrawerManager = FakeNotificationDrawerManager( val fakeNotificationCleaner = FakeNotificationCleaner(
clearMembershipNotificationForRoomLambda = clearMembershipNotificationForRoomLambda, clearMembershipNotificationForRoomLambda = clearMembershipNotificationForRoomLambda,
) )
val sut = createNotificationBroadcastReceiverHandler( val sut = createNotificationBroadcastReceiverHandler(
notificationDrawerManager = notificationDrawerManager notificationCleaner = fakeNotificationCleaner
) )
sut.onReceive( sut.onReceive(
createIntent( createIntent(
@ -170,11 +170,11 @@ class NotificationBroadcastReceiverHandlerTest {
@Test @Test
fun `Test dismiss Event`() = runTest { fun `Test dismiss Event`() = runTest {
val clearEventLambda = lambdaRecorder<SessionId, EventId, Unit> { _, _ -> } val clearEventLambda = lambdaRecorder<SessionId, EventId, Unit> { _, _ -> }
val notificationDrawerManager = FakeNotificationDrawerManager( val fakeNotificationCleaner = FakeNotificationCleaner(
clearEventLambda = clearEventLambda, clearEventLambda = clearEventLambda,
) )
val sut = createNotificationBroadcastReceiverHandler( val sut = createNotificationBroadcastReceiverHandler(
notificationDrawerManager = notificationDrawerManager notificationCleaner = fakeNotificationCleaner
) )
sut.onReceive( sut.onReceive(
createIntent( createIntent(
@ -227,13 +227,13 @@ class NotificationBroadcastReceiverHandlerTest {
) )
val clearMessagesForRoomLambda = lambdaRecorder<SessionId, RoomId, Unit> { _, _ -> } val clearMessagesForRoomLambda = lambdaRecorder<SessionId, RoomId, Unit> { _, _ -> }
val matrixRoom = FakeMatrixRoom() val matrixRoom = FakeMatrixRoom()
val notificationDrawerManager = FakeNotificationDrawerManager( val fakeNotificationCleaner = FakeNotificationCleaner(
clearMessagesForRoomLambda = clearMessagesForRoomLambda, clearMessagesForRoomLambda = clearMessagesForRoomLambda,
) )
val sut = createNotificationBroadcastReceiverHandler( val sut = createNotificationBroadcastReceiverHandler(
sessionPreferencesStore = sessionPreferencesStore, sessionPreferencesStore = sessionPreferencesStore,
matrixRoom = matrixRoom, matrixRoom = matrixRoom,
notificationDrawerManager = notificationDrawerManager notificationCleaner = fakeNotificationCleaner
) )
sut.onReceive( sut.onReceive(
createIntent( createIntent(
@ -262,12 +262,12 @@ class NotificationBroadcastReceiverHandlerTest {
fun `Test join room`() = runTest { fun `Test join room`() = runTest {
val joinRoom = lambdaRecorder<RoomId, Result<Unit>> { _ -> Result.success(Unit) } val joinRoom = lambdaRecorder<RoomId, Result<Unit>> { _ -> Result.success(Unit) }
val clearMembershipNotificationForRoomLambda = lambdaRecorder<SessionId, RoomId, Unit> { _, _ -> } val clearMembershipNotificationForRoomLambda = lambdaRecorder<SessionId, RoomId, Unit> { _, _ -> }
val notificationDrawerManager = FakeNotificationDrawerManager( val fakeNotificationCleaner = FakeNotificationCleaner(
clearMembershipNotificationForRoomLambda = clearMembershipNotificationForRoomLambda, clearMembershipNotificationForRoomLambda = clearMembershipNotificationForRoomLambda,
) )
val sut = createNotificationBroadcastReceiverHandler( val sut = createNotificationBroadcastReceiverHandler(
joinRoom = joinRoom, joinRoom = joinRoom,
notificationDrawerManager = notificationDrawerManager, notificationCleaner = fakeNotificationCleaner,
) )
sut.onReceive( sut.onReceive(
createIntent( createIntent(
@ -301,12 +301,12 @@ class NotificationBroadcastReceiverHandlerTest {
leaveRoomLambda = leaveRoom leaveRoomLambda = leaveRoom
} }
val clearMembershipNotificationForRoomLambda = lambdaRecorder<SessionId, RoomId, Unit> { _, _ -> } val clearMembershipNotificationForRoomLambda = lambdaRecorder<SessionId, RoomId, Unit> { _, _ -> }
val notificationDrawerManager = FakeNotificationDrawerManager( val fakeNotificationCleaner = FakeNotificationCleaner(
clearMembershipNotificationForRoomLambda = clearMembershipNotificationForRoomLambda, clearMembershipNotificationForRoomLambda = clearMembershipNotificationForRoomLambda,
) )
val sut = createNotificationBroadcastReceiverHandler( val sut = createNotificationBroadcastReceiverHandler(
matrixRoom = matrixRoom, matrixRoom = matrixRoom,
notificationDrawerManager = notificationDrawerManager notificationCleaner = fakeNotificationCleaner
) )
sut.onReceive( sut.onReceive(
createIntent( createIntent(
@ -447,7 +447,7 @@ class NotificationBroadcastReceiverHandlerTest {
joinRoomLambda = joinRoom joinRoomLambda = joinRoom
}, },
sessionPreferencesStore: SessionPreferencesStoreFactory = FakeSessionPreferencesStoreFactory(), sessionPreferencesStore: SessionPreferencesStoreFactory = FakeSessionPreferencesStoreFactory(),
notificationDrawerManager: NotificationDrawerManager = FakeNotificationDrawerManager(), notificationCleaner: NotificationCleaner = FakeNotificationCleaner(),
systemClock: SystemClock = FakeSystemClock(), systemClock: SystemClock = FakeSystemClock(),
onNotifiableEventReceived: OnNotifiableEventReceived = FakeOnNotifiableEventReceived(), onNotifiableEventReceived: OnNotifiableEventReceived = FakeOnNotifiableEventReceived(),
stringProvider: StringProvider = FakeStringProvider(), stringProvider: StringProvider = FakeStringProvider(),
@ -463,7 +463,7 @@ class NotificationBroadcastReceiverHandlerTest {
} }
}, },
sessionPreferencesStore = sessionPreferencesStore, sessionPreferencesStore = sessionPreferencesStore,
notificationDrawerManager = notificationDrawerManager, notificationCleaner = notificationCleaner,
actionIds = actionIds, actionIds = actionIds,
systemClock = systemClock, systemClock = systemClock,
onNotifiableEventReceived = onNotifiableEventReceived, onNotifiableEventReceived = onNotifiableEventReceived,

6
libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/notifications/FakeNotificationDrawerManager.kt → libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/notifications/FakeNotificationCleaner.kt

@ -19,16 +19,16 @@ package io.element.android.libraries.push.test.notifications
import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.EventId
import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.SessionId
import io.element.android.libraries.push.api.notifications.NotificationDrawerManager import io.element.android.libraries.push.api.notifications.NotificationCleaner
import io.element.android.tests.testutils.lambda.lambdaError import io.element.android.tests.testutils.lambda.lambdaError
class FakeNotificationDrawerManager( class FakeNotificationCleaner(
private val clearAllMessagesEventsLambda: (SessionId) -> Unit = { lambdaError() }, private val clearAllMessagesEventsLambda: (SessionId) -> Unit = { lambdaError() },
private val clearMessagesForRoomLambda: (SessionId, RoomId) -> Unit = { _, _ -> lambdaError() }, private val clearMessagesForRoomLambda: (SessionId, RoomId) -> Unit = { _, _ -> lambdaError() },
private val clearEventLambda: (SessionId, EventId) -> Unit = { _, _ -> lambdaError() }, private val clearEventLambda: (SessionId, EventId) -> Unit = { _, _ -> lambdaError() },
private val clearMembershipNotificationForSessionLambda: (SessionId) -> Unit = { lambdaError() }, private val clearMembershipNotificationForSessionLambda: (SessionId) -> Unit = { lambdaError() },
private val clearMembershipNotificationForRoomLambda: (SessionId, RoomId) -> Unit = { _, _ -> lambdaError() } private val clearMembershipNotificationForRoomLambda: (SessionId, RoomId) -> Unit = { _, _ -> lambdaError() }
) : NotificationDrawerManager { ) : NotificationCleaner {
override fun clearAllMessagesEvents(sessionId: SessionId) { override fun clearAllMessagesEvents(sessionId: SessionId) {
clearAllMessagesEventsLambda(sessionId) clearAllMessagesEventsLambda(sessionId)
} }

4
samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt

@ -56,7 +56,7 @@ import io.element.android.libraries.matrix.api.room.RoomMembershipObserver
import io.element.android.libraries.matrix.api.timeline.Timeline import io.element.android.libraries.matrix.api.timeline.Timeline
import io.element.android.libraries.matrix.impl.room.join.DefaultJoinRoom import io.element.android.libraries.matrix.impl.room.join.DefaultJoinRoom
import io.element.android.libraries.preferences.impl.store.DefaultSessionPreferencesStore import io.element.android.libraries.preferences.impl.store.DefaultSessionPreferencesStore
import io.element.android.libraries.push.test.notifications.FakeNotificationDrawerManager import io.element.android.libraries.push.test.notifications.FakeNotificationCleaner
import io.element.android.services.analytics.noop.NoopAnalyticsService import io.element.android.services.analytics.noop.NoopAnalyticsService
import io.element.android.services.toolbox.impl.strings.AndroidStringProvider import io.element.android.services.toolbox.impl.strings.AndroidStringProvider
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -144,7 +144,7 @@ class RoomListScreen(
acceptDeclineInvitePresenter = AcceptDeclineInvitePresenter( acceptDeclineInvitePresenter = AcceptDeclineInvitePresenter(
client = matrixClient, client = matrixClient,
joinRoom = DefaultJoinRoom(matrixClient, NoopAnalyticsService()), joinRoom = DefaultJoinRoom(matrixClient, NoopAnalyticsService()),
notificationDrawerManager = FakeNotificationDrawerManager(), notificationCleaner = FakeNotificationCleaner(),
), ),
analyticsService = NoopAnalyticsService(), analyticsService = NoopAnalyticsService(),
fullScreenIntentPermissionsPresenter = object : FullScreenIntentPermissionsPresenter { fullScreenIntentPermissionsPresenter = object : FullScreenIntentPermissionsPresenter {

Loading…
Cancel
Save