diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt index 66df9a6dd5..b0fc707d07 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt @@ -141,8 +141,8 @@ class LoggedInFlowNode( } private val loggedInFlowProcessor = LoggedInEventProcessor( - snackbarDispatcher, - matrixClient.roomMembershipObserver(), + snackbarDispatcher = snackbarDispatcher, + roomMembershipObserver = matrixClient.roomMembershipObserver, ) private val verificationListener = object : SessionVerificationServiceListener { @@ -189,7 +189,7 @@ class LoggedInFlowNode( // TODO We do not support Space yet, so directly navigate to main space appNavigationStateService.onNavigateToSpace(id, MAIN_SPACE) loggedInFlowProcessor.observeEvents(sessionCoroutineScope) - matrixClient.sessionVerificationService().setListener(verificationListener) + matrixClient.sessionVerificationService.setListener(verificationListener) mediaPreviewConfigMigration() sessionCoroutineScope.launch { @@ -218,7 +218,7 @@ class LoggedInFlowNode( appNavigationStateService.onLeavingSpace(id) appNavigationStateService.onLeavingSession(id) loggedInFlowProcessor.stopObserving() - matrixClient.sessionVerificationService().setListener(null) + matrixClient.sessionVerificationService.setListener(null) } ) setupSendingQueue() diff --git a/appnav/src/main/kotlin/io/element/android/appnav/di/MatrixSessionCache.kt b/appnav/src/main/kotlin/io/element/android/appnav/di/MatrixSessionCache.kt index 78b9617eae..ce80ac7207 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/di/MatrixSessionCache.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/di/MatrixSessionCache.kt @@ -109,7 +109,10 @@ class MatrixSessionCache( } private fun onNewMatrixClient(matrixClient: MatrixClient) { - val syncOrchestrator = syncOrchestratorFactory.create(matrixClient) + val syncOrchestrator = syncOrchestratorFactory.create( + syncService = matrixClient.syncService, + sessionCoroutineScope = matrixClient.sessionCoroutineScope, + ) sessionIdsToMatrixSession[matrixClient.sessionId] = InMemoryMatrixSession( matrixClient = matrixClient, syncOrchestrator = syncOrchestrator, diff --git a/appnav/src/main/kotlin/io/element/android/appnav/di/SyncOrchestrator.kt b/appnav/src/main/kotlin/io/element/android/appnav/di/SyncOrchestrator.kt index b88c4269a0..2561fd3ac7 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/di/SyncOrchestrator.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/di/SyncOrchestrator.kt @@ -15,9 +15,10 @@ import io.element.android.features.networkmonitor.api.NetworkMonitor import io.element.android.features.networkmonitor.api.NetworkStatus import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.coroutine.childScope -import io.element.android.libraries.matrix.api.MatrixClient +import io.element.android.libraries.matrix.api.sync.SyncService import io.element.android.libraries.matrix.api.sync.SyncState import io.element.android.services.appnavstate.api.AppForegroundStateService +import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.FlowPreview import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.debounce @@ -32,21 +33,23 @@ import kotlin.time.Duration.Companion.seconds @AssistedInject class SyncOrchestrator( - @Assisted matrixClient: MatrixClient, + @Assisted private val syncService: SyncService, + @Assisted sessionCoroutineScope: CoroutineScope, private val appForegroundStateService: AppForegroundStateService, private val networkMonitor: NetworkMonitor, dispatchers: CoroutineDispatchers, ) { @AssistedFactory interface Factory { - fun create(matrixClient: MatrixClient): SyncOrchestrator + fun create( + syncService: SyncService, + sessionCoroutineScope: CoroutineScope, + ): SyncOrchestrator } - private val syncService = matrixClient.syncService() - private val tag = "SyncOrchestrator" - private val coroutineScope = matrixClient.sessionCoroutineScope.childScope(dispatchers.io, tag) + private val coroutineScope = sessionCoroutineScope.childScope(dispatchers.io, tag) private val started = AtomicBoolean(false) diff --git a/appnav/src/test/kotlin/io/element/android/appnav/SyncOrchestratorTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/SyncOrchestratorTest.kt index 2c143df095..f26df83a56 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/SyncOrchestratorTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/SyncOrchestratorTest.kt @@ -11,7 +11,6 @@ import io.element.android.appnav.di.SyncOrchestrator import io.element.android.features.networkmonitor.api.NetworkStatus import io.element.android.features.networkmonitor.test.FakeNetworkMonitor import io.element.android.libraries.matrix.api.sync.SyncState -import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.sync.FakeSyncService import io.element.android.services.appnavstate.test.FakeAppForegroundStateService import io.element.android.tests.testutils.WarmUpRule @@ -385,7 +384,8 @@ class SyncOrchestratorTest { networkMonitor: FakeNetworkMonitor = FakeNetworkMonitor(), appForegroundStateService: FakeAppForegroundStateService = FakeAppForegroundStateService(), ) = SyncOrchestrator( - matrixClient = FakeMatrixClient(syncService = syncService, sessionCoroutineScope = backgroundScope), + syncService = syncService, + sessionCoroutineScope = backgroundScope, networkMonitor = networkMonitor, appForegroundStateService = appForegroundStateService, dispatchers = testCoroutineDispatchers(), diff --git a/appnav/src/test/kotlin/io/element/android/appnav/di/MatrixSessionCacheTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/di/MatrixSessionCacheTest.kt index 47237d5f77..6df80ee95d 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/di/MatrixSessionCacheTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/di/MatrixSessionCacheTest.kt @@ -10,12 +10,13 @@ package io.element.android.appnav.di import com.bumble.appyx.core.state.MutableSavedStateMapImpl import com.google.common.truth.Truth.assertThat import io.element.android.features.networkmonitor.test.FakeNetworkMonitor -import io.element.android.libraries.matrix.api.MatrixClient +import io.element.android.libraries.matrix.api.sync.SyncService 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.auth.FakeMatrixAuthenticationService import io.element.android.services.appnavstate.test.FakeAppForegroundStateService import io.element.android.tests.testutils.testCoroutineDispatchers +import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runTest import org.junit.Test @@ -117,9 +118,13 @@ class MatrixSessionCacheTest { } private fun TestScope.createSyncOrchestratorFactory() = object : SyncOrchestrator.Factory { - override fun create(matrixClient: MatrixClient): SyncOrchestrator { + override fun create( + syncService: SyncService, + sessionCoroutineScope: CoroutineScope, + ): SyncOrchestrator { return SyncOrchestrator( - matrixClient, + syncService = syncService, + sessionCoroutineScope = sessionCoroutineScope, appForegroundStateService = FakeAppForegroundStateService(), networkMonitor = FakeNetworkMonitor(), dispatchers = testCoroutineDispatchers(), diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/CallScreenPresenter.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/CallScreenPresenter.kt index 366352a272..06929093f5 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/CallScreenPresenter.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/CallScreenPresenter.kt @@ -242,7 +242,7 @@ class CallScreenPresenter( } coroutineScope.launch { Timber.d("Observing sync state in-call for sessionId: ${roomCallType.sessionId}") - client.syncService().syncState + client.syncService.syncState .collect { state -> if (state != SyncState.Running) { appForegroundStateService.updateIsInCallState(true) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenter.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenter.kt index b8e299c5e9..7b51e4797e 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenter.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenter.kt @@ -39,7 +39,6 @@ import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsState import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.RoomId -import io.element.android.libraries.matrix.api.encryption.EncryptionService import io.element.android.libraries.matrix.api.encryption.RecoveryState import io.element.android.libraries.matrix.api.roomlist.RoomList import io.element.android.libraries.matrix.api.timeline.ReceiptType @@ -84,7 +83,7 @@ class RoomListPresenter( private val appPreferencesStore: AppPreferencesStore, private val seenInvitesStore: SeenInvitesStore, ) : Presenter { - private val encryptionService: EncryptionService = client.encryptionService() + private val encryptionService = client.encryptionService @Composable override fun present(): RoomListState { diff --git a/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenterTest.kt b/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenterTest.kt index 7ad58f2832..bde004cf82 100644 --- a/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenterTest.kt +++ b/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenterTest.kt @@ -616,7 +616,7 @@ class RoomListPresenterTest { roomLastMessageFormatter = roomLastMessageFormatter, ), coroutineDispatchers = testCoroutineDispatchers(), - notificationSettingsService = client.notificationSettingsService(), + notificationSettingsService = client.notificationSettingsService, sessionCoroutineScope = backgroundScope, dateTimeObserver = FakeDateTimeObserver(), ), diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/createaccount/CreateAccountPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/createaccount/CreateAccountPresenter.kt index d838c971fc..a3aec0eb81 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/createaccount/CreateAccountPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/createaccount/CreateAccountPresenter.kt @@ -82,7 +82,7 @@ class CreateAccountPresenter( tryOrNull { // Wait until the session is verified val client = clientProvider.getOrRestore(sessionId).getOrThrow() - val sessionVerificationService = client.sessionVerificationService() + val sessionVerificationService = client.sessionVerificationService withTimeout(10.seconds) { sessionVerificationService.sessionVerifiedStatus.first { it.isVerified() } } } loggedInState.value = AsyncAction.Success(sessionId) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt index af613e2520..82aafcf545 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt @@ -62,9 +62,9 @@ import io.element.android.libraries.dateformatter.api.DateFormatter import io.element.android.libraries.dateformatter.api.DateFormatterMode import io.element.android.libraries.dateformatter.api.toHumanReadableDuration import io.element.android.libraries.di.RoomScope -import io.element.android.libraries.matrix.api.MatrixClient 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.SessionId import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias @@ -73,6 +73,7 @@ import io.element.android.libraries.matrix.api.permalink.PermalinkData import io.element.android.libraries.matrix.api.room.BaseRoom import io.element.android.libraries.matrix.api.room.alias.matches import io.element.android.libraries.matrix.api.room.joinedRoomMembers +import io.element.android.libraries.matrix.api.roomlist.RoomListService import io.element.android.libraries.matrix.api.timeline.Timeline import io.element.android.libraries.matrix.api.timeline.item.TimelineItemDebugInfo import io.element.android.libraries.matrix.ui.messages.RoomMemberProfilesCache @@ -95,7 +96,8 @@ import kotlinx.parcelize.Parcelize class MessagesFlowNode( @Assisted buildContext: BuildContext, @Assisted plugins: List, - private val matrixClient: MatrixClient, + private val roomListService: RoomListService, + private val sessionId: SessionId, private val sendLocationEntryPoint: SendLocationEntryPoint, private val showLocationEntryPoint: ShowLocationEntryPoint, private val createPollEntryPoint: CreatePollEntryPoint, @@ -194,7 +196,7 @@ class MessagesFlowNode( } .launchIn(lifecycleScope) - matrixClient.roomListService + roomListService .allRooms .summaries .onEach { @@ -221,11 +223,13 @@ class MessagesFlowNode( } override fun onPreviewAttachments(attachments: ImmutableList, inReplyToEventId: EventId?) { - backstack.push(NavTarget.AttachmentPreview( - attachment = attachments.first(), - timelineMode = Timeline.Mode.Live, - inReplyToEventId = inReplyToEventId, - )) + backstack.push( + NavTarget.AttachmentPreview( + attachment = attachments.first(), + timelineMode = Timeline.Mode.Live, + inReplyToEventId = inReplyToEventId, + ) + ) } override fun onUserDataClick(userId: UserId) { @@ -262,7 +266,7 @@ class MessagesFlowNode( override fun onJoinCallClick(roomId: RoomId) { val callType = CallType.RoomCall( - sessionId = matrixClient.sessionId, + sessionId = sessionId, roomId = roomId, ) analyticsService.captureInteraction(Interaction.Name.MobileRoomCallButton) @@ -348,18 +352,20 @@ class MessagesFlowNode( } is NavTarget.CreatePoll -> { createPollEntryPoint.nodeBuilder(this, buildContext) - .params(CreatePollEntryPoint.Params( - timelineMode = navTarget.timelineMode, - mode = CreatePollMode.NewPoll - )) + .params( + CreatePollEntryPoint.Params( + timelineMode = navTarget.timelineMode, + mode = CreatePollMode.NewPoll + ) + ) .build() } is NavTarget.EditPoll -> { createPollEntryPoint.nodeBuilder(this, buildContext) .params( CreatePollEntryPoint.Params( - timelineMode = navTarget.timelineMode, - mode = CreatePollMode.EditPoll(eventId = navTarget.eventId) + timelineMode = navTarget.timelineMode, + mode = CreatePollMode.EditPoll(eventId = navTarget.eventId) ) ) .build() @@ -412,11 +418,13 @@ class MessagesFlowNode( } override fun onPreviewAttachments(attachments: ImmutableList, inReplyToEventId: EventId?) { - backstack.push(NavTarget.AttachmentPreview( - attachment = attachments.first(), - timelineMode = Timeline.Mode.Thread(navTarget.threadRootId), - inReplyToEventId = inReplyToEventId, - )) + backstack.push( + NavTarget.AttachmentPreview( + attachment = attachments.first(), + timelineMode = Timeline.Mode.Thread(navTarget.threadRootId), + inReplyToEventId = inReplyToEventId, + ) + ) } override fun onUserDataClick(userId: UserId) { @@ -453,7 +461,7 @@ class MessagesFlowNode( override fun onJoinCallClick(roomId: RoomId) { val callType = CallType.RoomCall( - sessionId = matrixClient.sessionId, + sessionId = sessionId, roomId = roomId, ) analyticsService.captureInteraction(Interaction.Name.MobileRoomCallButton) diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt index a4753807cd..2de761ad69 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt @@ -30,9 +30,10 @@ import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.permalink.PermalinkData import io.element.android.libraries.matrix.api.timeline.Timeline import io.element.android.libraries.matrix.test.AN_EVENT_ID +import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.A_USER_ID -import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.room.FakeBaseRoom +import io.element.android.libraries.matrix.test.roomlist.FakeRoomListService import io.element.android.libraries.matrix.ui.messages.RoomMemberProfilesCache import io.element.android.libraries.matrix.ui.messages.RoomNamesCache import io.element.android.libraries.mediaviewer.api.MediaViewerEntryPoint @@ -60,7 +61,8 @@ class DefaultMessagesEntryPointTest { MessagesFlowNode( buildContext = buildContext, plugins = plugins, - matrixClient = FakeMatrixClient(), + roomListService = FakeRoomListService(), + sessionId = A_SESSION_ID, sendLocationEntryPoint = object : SendLocationEntryPoint { override fun builder(timelineMode: Timeline.Mode) = lambdaError() }, diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt index 01b6857c0b..5787939688 100755 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt @@ -176,8 +176,8 @@ class DefaultBugReporter( .addFormDataPart("branch_name", buildMeta.gitBranchName) userId?.let { matrixClientProvider.getOrNull(it)?.let { client -> - val curveKey = client.encryptionService().deviceCurve25519() - val edKey = client.encryptionService().deviceEd25519() + val curveKey = client.encryptionService.deviceCurve25519() + val edKey = client.encryptionService.deviceEd25519() if (curveKey != null && edKey != null) { builder.addFormDataPart("device_keys", "curve25519:$curveKey, ed25519:$edKey") } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenter.kt index 0071aced5d..c7938b609f 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenter.kt @@ -143,12 +143,12 @@ class RoomDetailsPresenter( } RoomDetailsEvent.MuteNotification -> { scope.launch(dispatchers.io) { - client.notificationSettingsService().muteRoom(room.roomId) + notificationSettingsService.muteRoom(room.roomId) } } RoomDetailsEvent.UnmuteNotification -> { scope.launch(dispatchers.io) { - client.notificationSettingsService().unmuteRoom(room.roomId, isEncrypted, room.isOneToOne) + notificationSettingsService.unmuteRoom(room.roomId, isEncrypted, room.isOneToOne) } } is RoomDetailsEvent.SetFavorite -> scope.setFavorite(event.isFavorite) diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenterTest.kt index bfcfa184cb..695168aa16 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenterTest.kt @@ -104,7 +104,7 @@ class RoomDetailsPresenterTest { client = matrixClient, room = room, featureFlagService = featureFlagService, - notificationSettingsService = matrixClient.notificationSettingsService(), + notificationSettingsService = matrixClient.notificationSettingsService, roomMembersDetailsPresenterFactory = roomMemberDetailsPresenterFactory, leaveRoomPresenter = { leaveRoomState }, roomCallStatePresenter = { aStandByCallState() }, diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/ResetIdentityFlowManager.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/ResetIdentityFlowManager.kt index fe6a86a357..4ffaa9c344 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/ResetIdentityFlowManager.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/ResetIdentityFlowManager.kt @@ -10,7 +10,7 @@ package io.element.android.features.securebackup.impl.reset import dev.zacsweers.metro.Inject import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.di.annotations.SessionCoroutineScope -import io.element.android.libraries.matrix.api.MatrixClient +import io.element.android.libraries.matrix.api.encryption.EncryptionService import io.element.android.libraries.matrix.api.encryption.IdentityResetHandle import io.element.android.libraries.matrix.api.verification.SessionVerificationService import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatus @@ -24,7 +24,7 @@ import kotlinx.coroutines.launch @Inject class ResetIdentityFlowManager( - private val matrixClient: MatrixClient, + private val encryptionService: EncryptionService, @SessionCoroutineScope private val sessionCoroutineScope: CoroutineScope, private val sessionVerificationService: SessionVerificationService, ) { @@ -46,7 +46,7 @@ class ResetIdentityFlowManager( resetHandleFlow.value = AsyncData.Loading() sessionCoroutineScope.launch { - matrixClient.encryptionService().startIdentityReset() + encryptionService.startIdentityReset() .onSuccess { handle -> resetHandleFlow.value = AsyncData.Success(handle) } diff --git a/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/reset/ResetIdentityFlowManagerTest.kt b/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/reset/ResetIdentityFlowManagerTest.kt index a26d6fabef..702b10a1bf 100644 --- a/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/reset/ResetIdentityFlowManagerTest.kt +++ b/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/reset/ResetIdentityFlowManagerTest.kt @@ -12,7 +12,6 @@ import com.google.common.truth.Truth.assertThat import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.matrix.api.encryption.IdentityResetHandle import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatus -import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.encryption.FakeEncryptionService import io.element.android.libraries.matrix.test.encryption.FakeIdentityPasswordResetHandle import io.element.android.libraries.matrix.test.verification.FakeSessionVerificationService @@ -130,10 +129,9 @@ class ResetIdentityFlowManagerTest { private fun TestScope.createFlowManager( encryptionService: FakeEncryptionService = FakeEncryptionService(), - client: FakeMatrixClient = FakeMatrixClient(encryptionService = encryptionService), sessionVerificationService: FakeSessionVerificationService = FakeSessionVerificationService(), ) = ResetIdentityFlowManager( - matrixClient = client, + encryptionService = encryptionService, sessionCoroutineScope = this, sessionVerificationService = sessionVerificationService, ) diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt index fffdeb6246..78472c7b31 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt @@ -32,8 +32,8 @@ import io.element.android.libraries.architecture.createNode import io.element.android.libraries.architecture.inputs import io.element.android.libraries.di.DependencyInjectionGraphOwner import io.element.android.libraries.di.SessionScope -import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.libraries.matrix.api.spaces.SpaceService import kotlinx.parcelize.Parcelize @ContributesNode(SessionScope::class) @@ -41,7 +41,7 @@ import kotlinx.parcelize.Parcelize class SpaceFlowNode( @Assisted val buildContext: BuildContext, @Assisted plugins: List, - matrixClient: MatrixClient, + spaceService: SpaceService, graphFactory: SpaceFlowGraph.Factory, ) : BaseFlowNode( backstack = BackStack( @@ -53,7 +53,7 @@ class SpaceFlowNode( ), DependencyInjectionGraphOwner { private val inputs: SpaceEntryPoint.Inputs = inputs() private val callback = plugins.filterIsInstance().single() - private val spaceRoomList = matrixClient.spaceService.spaceRoomList(inputs.roomId) + private val spaceRoomList = spaceService.spaceRoomList(inputs.roomId) override val graph = graphFactory.create(spaceRoomList) sealed interface NavTarget : Parcelable { diff --git a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt index 007c28e3a6..17823ba72b 100644 --- a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt +++ b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt @@ -15,7 +15,6 @@ import io.element.android.features.space.api.SpaceEntryPoint import io.element.android.features.space.impl.di.FakeSpaceFlowGraph import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.test.A_ROOM_ID -import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.spaces.FakeSpaceRoomList import io.element.android.libraries.matrix.test.spaces.FakeSpaceService import io.element.android.tests.testutils.lambda.lambdaError @@ -38,10 +37,8 @@ class DefaultSpaceEntryPointTest { SpaceFlowNode( buildContext = buildContext, plugins = plugins, - matrixClient = FakeMatrixClient( - spaceService = FakeSpaceService( - spaceRoomListResult = { _: RoomId -> FakeSpaceRoomList(A_ROOM_ID) } - ) + spaceService = FakeSpaceService( + spaceRoomListResult = { _: RoomId -> FakeSpaceRoomList(A_ROOM_ID) } ), graphFactory = FakeSpaceFlowGraph.Factory ) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt index 5c495c5fd7..8323add7d3 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt @@ -49,9 +49,18 @@ interface MatrixClient { val userProfile: StateFlow val roomListService: RoomListService val spaceService: SpaceService + val syncService: SyncService + val sessionVerificationService: SessionVerificationService + val pushersService: PushersService + val notificationService: NotificationService + val notificationSettingsService: NotificationSettingsService + val encryptionService: EncryptionService + val roomDirectoryService: RoomDirectoryService + val mediaPreviewService: MediaPreviewService val mediaLoader: MatrixMediaLoader val sessionCoroutineScope: CoroutineScope val ignoredUsersFlow: StateFlow> + val roomMembershipObserver: RoomMembershipObserver suspend fun getJoinedRoom(roomId: RoomId): JoinedRoom? suspend fun getRoom(roomId: RoomId): BaseRoom? suspend fun findDM(userId: UserId): Result @@ -68,14 +77,6 @@ interface MatrixClient { suspend fun joinRoom(roomId: RoomId): Result suspend fun joinRoomByIdOrAlias(roomIdOrAlias: RoomIdOrAlias, serverNames: List): Result suspend fun knockRoom(roomIdOrAlias: RoomIdOrAlias, message: String, serverNames: List): Result - fun syncService(): SyncService - fun sessionVerificationService(): SessionVerificationService - fun pushersService(): PushersService - fun notificationService(): NotificationService - fun notificationSettingsService(): NotificationSettingsService - fun encryptionService(): EncryptionService - fun roomDirectoryService(): RoomDirectoryService - fun mediaPreviewService(): MediaPreviewService suspend fun getCacheSize(): Long /** @@ -97,7 +98,6 @@ interface MatrixClient { suspend fun getUserProfile(): Result suspend fun getAccountManagementUrl(action: AccountManagementAction?): Result suspend fun uploadMedia(mimeType: String, data: ByteArray): Result - fun roomMembershipObserver(): RoomMembershipObserver /** * Get a room info flow for a given room ID. diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt index a84a7bc164..619ab95537 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt @@ -23,13 +23,8 @@ import io.element.android.libraries.matrix.api.core.RoomIdOrAlias import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.createroom.CreateRoomParameters import io.element.android.libraries.matrix.api.createroom.RoomPreset -import io.element.android.libraries.matrix.api.encryption.EncryptionService import io.element.android.libraries.matrix.api.media.MatrixMediaLoader -import io.element.android.libraries.matrix.api.media.MediaPreviewService -import io.element.android.libraries.matrix.api.notification.NotificationService -import io.element.android.libraries.matrix.api.notificationsettings.NotificationSettingsService import io.element.android.libraries.matrix.api.oidc.AccountManagementAction -import io.element.android.libraries.matrix.api.pusher.PushersService import io.element.android.libraries.matrix.api.room.BaseRoom import io.element.android.libraries.matrix.api.room.CurrentUserMembership import io.element.android.libraries.matrix.api.room.JoinedRoom @@ -39,16 +34,13 @@ import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.api.room.RoomMembershipObserver import io.element.android.libraries.matrix.api.room.alias.ResolvedRoomAlias import io.element.android.libraries.matrix.api.room.join.JoinRule -import io.element.android.libraries.matrix.api.roomdirectory.RoomDirectoryService import io.element.android.libraries.matrix.api.roomdirectory.RoomVisibility import io.element.android.libraries.matrix.api.roomlist.RoomListService import io.element.android.libraries.matrix.api.spaces.SpaceService import io.element.android.libraries.matrix.api.sync.SlidingSyncVersion -import io.element.android.libraries.matrix.api.sync.SyncService import io.element.android.libraries.matrix.api.sync.SyncState import io.element.android.libraries.matrix.api.user.MatrixSearchUserResults import io.element.android.libraries.matrix.api.user.MatrixUser -import io.element.android.libraries.matrix.api.verification.SessionVerificationService import io.element.android.libraries.matrix.impl.encryption.RustEncryptionService import io.element.android.libraries.matrix.impl.exception.mapClientException import io.element.android.libraries.matrix.impl.mapper.map @@ -147,29 +139,29 @@ class RustMatrixClient( private val innerRoomListService = innerSyncService.roomListService() private val innerSpaceService = innerClient.spaceService() - private val roomMembershipObserver = RoomMembershipObserver() + override val roomMembershipObserver = RoomMembershipObserver() - private val rustSyncService = RustSyncService( + override val syncService = RustSyncService( inner = innerSyncService, dispatcher = sessionDispatcher, sessionCoroutineScope = sessionCoroutineScope ) - private val pushersService = RustPushersService( + override val pushersService = RustPushersService( client = innerClient, dispatchers = dispatchers, ) private val notificationProcessSetup = NotificationProcessSetup.SingleProcess(innerSyncService) private val innerNotificationClient = runBlocking { innerClient.notificationClient(notificationProcessSetup) } - private val notificationService = RustNotificationService(sessionId, innerNotificationClient, dispatchers, clock) - private val notificationSettingsService = RustNotificationSettingsService(innerClient, sessionCoroutineScope, dispatchers) - private val encryptionService = RustEncryptionService( + override val notificationService = RustNotificationService(sessionId, innerNotificationClient, dispatchers, clock) + override val notificationSettingsService = RustNotificationSettingsService(innerClient, sessionCoroutineScope, dispatchers) + override val encryptionService = RustEncryptionService( client = innerClient, - syncService = rustSyncService, + syncService = syncService, sessionCoroutineScope = sessionCoroutineScope, dispatchers = dispatchers, ) - private val roomDirectoryService = RustRoomDirectoryService( + override val roomDirectoryService = RustRoomDirectoryService( client = innerClient, sessionDispatcher = sessionDispatcher, ) @@ -196,9 +188,9 @@ class RustMatrixClient( sessionDispatcher = sessionDispatcher, ) - private val verificationService = RustSessionVerificationService( + override val sessionVerificationService = RustSessionVerificationService( client = innerClient, - isSyncServiceReady = rustSyncService.syncState.map { it == SyncState.Running }, + isSyncServiceReady = syncService.syncState.map { it == SyncState.Running }, sessionCoroutineScope = sessionCoroutineScope, ) @@ -227,7 +219,7 @@ class RustMatrixClient( innerClient = innerClient, ) - private val mediaPreviewService = RustMediaPreviewService( + override val mediaPreviewService = RustMediaPreviewService( sessionCoroutineScope = sessionCoroutineScope, innerClient = innerClient, sessionDispatcher = sessionDispatcher, @@ -538,33 +530,17 @@ class RustMatrixClient( }.mapFailure { it.mapClientException() } } - override fun syncService(): SyncService = rustSyncService - - override fun sessionVerificationService(): SessionVerificationService = verificationService - - override fun pushersService(): PushersService = pushersService - - override fun notificationService(): NotificationService = notificationService - - override fun encryptionService(): EncryptionService = encryptionService - - override fun notificationSettingsService(): NotificationSettingsService = notificationSettingsService - - override fun roomDirectoryService(): RoomDirectoryService = roomDirectoryService - - override fun mediaPreviewService(): MediaPreviewService = mediaPreviewService - internal suspend fun destroy() { innerNotificationClient.close() roomFactory.destroy() - rustSyncService.destroy() + syncService.destroy() notificationSettingsService.destroy() notificationProcessSetup.destroy() sessionCoroutineScope.cancel() clientDelegateTaskHandle?.cancelAndDestroy() - verificationService.destroy() + sessionVerificationService.destroy() sessionDelegate.clearCurrentClient() innerRoomListService.close() @@ -674,8 +650,6 @@ class RustMatrixClient( } } - override fun roomMembershipObserver(): RoomMembershipObserver = roomMembershipObserver - override fun getRoomInfoFlow(roomId: RoomId): Flow> { return mxCallbackFlow { val roomNotFound = innerRoomListService.roomOrNull(roomId.value).use { it == null } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/di/SessionMatrixModule.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/di/SessionMatrixModule.kt index 4d1f244bd2..0482cf1dcd 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/di/SessionMatrixModule.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/di/SessionMatrixModule.kt @@ -21,6 +21,7 @@ import io.element.android.libraries.matrix.api.notificationsettings.Notification import io.element.android.libraries.matrix.api.room.RoomMembershipObserver import io.element.android.libraries.matrix.api.roomdirectory.RoomDirectoryService import io.element.android.libraries.matrix.api.roomlist.RoomListService +import io.element.android.libraries.matrix.api.spaces.SpaceService import io.element.android.libraries.matrix.api.sync.SyncService import io.element.android.libraries.matrix.api.verification.SessionVerificationService import kotlinx.coroutines.CoroutineScope @@ -35,17 +36,17 @@ object SessionMatrixModule { @Provides fun providesSessionVerificationService(matrixClient: MatrixClient): SessionVerificationService { - return matrixClient.sessionVerificationService() + return matrixClient.sessionVerificationService } @Provides fun providesNotificationSettingsService(matrixClient: MatrixClient): NotificationSettingsService { - return matrixClient.notificationSettingsService() + return matrixClient.notificationSettingsService } @Provides fun provideRoomMembershipObserver(matrixClient: MatrixClient): RoomMembershipObserver { - return matrixClient.roomMembershipObserver() + return matrixClient.roomMembershipObserver } @Provides @@ -55,12 +56,12 @@ object SessionMatrixModule { @Provides fun providesSyncService(matrixClient: MatrixClient): SyncService { - return matrixClient.syncService() + return matrixClient.syncService } @Provides fun providesEncryptionService(matrixClient: MatrixClient): EncryptionService { - return matrixClient.encryptionService() + return matrixClient.encryptionService } @Provides @@ -76,11 +77,16 @@ object SessionMatrixModule { @Provides fun providesRoomDirectoryService(matrixClient: MatrixClient): RoomDirectoryService { - return matrixClient.roomDirectoryService() + return matrixClient.roomDirectoryService } @Provides fun providesMediaPreviewService(matrixClient: MatrixClient): MediaPreviewService { - return matrixClient.mediaPreviewService() + return matrixClient.mediaPreviewService + } + + @Provides + fun providesSpaceService(matrixClient: MatrixClient): SpaceService { + return matrixClient.spaceService } } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/encryption/RustEncryptionService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/encryption/RustEncryptionService.kt index 977663c883..74aeda9694 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/encryption/RustEncryptionService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/encryption/RustEncryptionService.kt @@ -46,7 +46,7 @@ import org.matrix.rustcomponents.sdk.BackupUploadState as RustBackupUploadState import org.matrix.rustcomponents.sdk.EnableRecoveryProgress as RustEnableRecoveryProgress import org.matrix.rustcomponents.sdk.SteadyStateException as RustSteadyStateException -internal class RustEncryptionService( +class RustEncryptionService( client: Client, syncService: RustSyncService, sessionCoroutineScope: CoroutineScope, diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt index 67e7561972..4443591eaa 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt @@ -15,13 +15,9 @@ import io.element.android.libraries.matrix.api.core.RoomIdOrAlias import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.createroom.CreateRoomParameters -import io.element.android.libraries.matrix.api.encryption.EncryptionService import io.element.android.libraries.matrix.api.media.MatrixMediaLoader import io.element.android.libraries.matrix.api.media.MediaPreviewService -import io.element.android.libraries.matrix.api.notification.NotificationService -import io.element.android.libraries.matrix.api.notificationsettings.NotificationSettingsService import io.element.android.libraries.matrix.api.oidc.AccountManagementAction -import io.element.android.libraries.matrix.api.pusher.PushersService import io.element.android.libraries.matrix.api.room.BaseRoom import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.libraries.matrix.api.room.NotJoinedRoom @@ -34,7 +30,6 @@ import io.element.android.libraries.matrix.api.spaces.SpaceService import io.element.android.libraries.matrix.api.sync.SlidingSyncVersion import io.element.android.libraries.matrix.api.user.MatrixSearchUserResults import io.element.android.libraries.matrix.api.user.MatrixUser -import io.element.android.libraries.matrix.api.verification.SessionVerificationService import io.element.android.libraries.matrix.test.encryption.FakeEncryptionService import io.element.android.libraries.matrix.test.media.FakeMatrixMediaLoader import io.element.android.libraries.matrix.test.media.FakeMediaPreviewService @@ -69,14 +64,15 @@ class FakeMatrixClient( override val roomListService: RoomListService = FakeRoomListService(), override val spaceService: SpaceService = FakeSpaceService(), override val mediaLoader: MatrixMediaLoader = FakeMatrixMediaLoader(), - private val sessionVerificationService: FakeSessionVerificationService = FakeSessionVerificationService(), - private val pushersService: FakePushersService = FakePushersService(), - private val notificationService: FakeNotificationService = FakeNotificationService(), - private val notificationSettingsService: FakeNotificationSettingsService = FakeNotificationSettingsService(), - private val syncService: FakeSyncService = FakeSyncService(), - private val encryptionService: FakeEncryptionService = FakeEncryptionService(), - private val roomDirectoryService: RoomDirectoryService = FakeRoomDirectoryService(), - private val mediaPreviewService: MediaPreviewService = FakeMediaPreviewService(), + override val sessionVerificationService: FakeSessionVerificationService = FakeSessionVerificationService(), + override val pushersService: FakePushersService = FakePushersService(), + override val notificationService: FakeNotificationService = FakeNotificationService(), + override val notificationSettingsService: FakeNotificationSettingsService = FakeNotificationSettingsService(), + override val syncService: FakeSyncService = FakeSyncService(), + override val encryptionService: FakeEncryptionService = FakeEncryptionService(), + override val roomDirectoryService: RoomDirectoryService = FakeRoomDirectoryService(), + override val mediaPreviewService: MediaPreviewService = FakeMediaPreviewService(), + override val roomMembershipObserver: RoomMembershipObserver = RoomMembershipObserver(), private val accountManagementUrlResult: (AccountManagementAction?) -> Result = { lambdaError() }, private val resolveRoomAliasResult: (RoomAlias) -> Result> = { Result.success( @@ -174,10 +170,6 @@ class FakeMatrixClient( return searchUserResults[searchTerm] ?: Result.failure(IllegalStateException("No response defined for $searchTerm")) } - override fun syncService() = syncService - - override fun roomDirectoryService() = roomDirectoryService - override suspend fun getCacheSize(): Long { return 0 } @@ -238,19 +230,6 @@ class FakeMatrixClient( return knockRoomLambda(roomIdOrAlias, message, serverNames) } - override fun sessionVerificationService(): SessionVerificationService = sessionVerificationService - - override fun pushersService(): PushersService = pushersService - - override fun notificationService(): NotificationService = notificationService - override fun notificationSettingsService(): NotificationSettingsService = notificationSettingsService - override fun encryptionService(): EncryptionService = encryptionService - override fun mediaPreviewService(): MediaPreviewService = mediaPreviewService - - override fun roomMembershipObserver(): RoomMembershipObserver { - return RoomMembershipObserver() - } - // Mocks fun givenCreateRoomResult(result: Result) { diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/safety/Avatars.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/safety/Avatars.kt index 0eb2b37ea4..7e8573a34c 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/safety/Avatars.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/safety/Avatars.kt @@ -17,7 +17,7 @@ import io.element.android.libraries.matrix.api.MatrixClient @Composable fun MatrixClient.rememberHideInvitesAvatar(): State { return remember { - mediaPreviewService() + mediaPreviewService .mediaPreviewConfigFlow .mapState { config -> config.hideInviteAvatar } }.collectAsState() diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPusherSubscriber.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPusherSubscriber.kt index 7b7a6a33e8..7dbe4e795e 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPusherSubscriber.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPusherSubscriber.kt @@ -50,7 +50,7 @@ class DefaultPusherSubscriber( Timber.tag(loggerTag.value) .d("Unnecessary to register again the same pusher, but do it in case the pusher has been removed from the server") } - return matrixClient.pushersService() + return matrixClient.pushersService .setHttpPusher( createHttpPusher(pushKey, gateway, matrixClient.sessionId) ) @@ -100,7 +100,7 @@ class DefaultPusherSubscriber( gateway: String, ): Result { val userDataStore = userPushStoreFactory.getOrCreate(matrixClient.sessionId) - return matrixClient.pushersService() + return matrixClient.pushersService .unsetHttpPusher( unsetHttpPusherData = UnsetHttpPusherData( pushKey = pushKey, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolver.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolver.kt index 38a1d4f753..868c7e767a 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolver.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolver.kt @@ -98,7 +98,7 @@ class DefaultNotifiableEventResolver( val ids = notificationEventRequests.groupBy { it.roomId }.mapValues { (_, value) -> value.map { it.eventId } } // TODO this notificationData is not always valid at the moment, sometimes the Rust SDK can't fetch the matching event - val notificationsResult = client.notificationService().getNotifications(ids) + val notificationsResult = client.notificationService.getNotifications(ids) if (notificationsResult.isFailure) { val exception = notificationsResult.exceptionOrNull() @@ -131,7 +131,7 @@ class DefaultNotifiableEventResolver( ): Result = runCatchingExceptions { when (val content = this.content) { is NotificationContent.MessageLike.RoomMessage -> { - val showMediaPreview = client.mediaPreviewService().getMediaPreviewValue() == MediaPreviewValue.On + val showMediaPreview = client.mediaPreviewService.getMediaPreviewValue() == MediaPreviewValue.On val senderDisambiguatedDisplayName = getDisambiguatedDisplayName(content.senderId) val messageBody = descriptionFromMessageContent(content, senderDisambiguatedDisplayName) val notifiableMessageEvent = buildNotifiableMessageEvent( diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandler.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandler.kt index dbabb33058..084ad8d832 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandler.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandler.kt @@ -30,7 +30,7 @@ class DefaultOnMissedCallNotificationHandler( ) { // Resolve the event and add a notification for it, at this point it should no longer be a ringing one val notificationData = matrixClientProvider.getOrRestore(sessionId).getOrNull() - ?.notificationService() + ?.notificationService ?.getNotifications(mapOf(roomId to listOf(eventId))) ?.getOrNull() ?.get(eventId)