Replace CurrentUserProvider by an extension on MatrixClient.

This commit is contained in:
Benoit Marty 2023-07-03 16:48:22 +02:00 committed by Benoit Marty
parent 312a5890af
commit 73b1ffd7d0
6 changed files with 19 additions and 35 deletions

View file

@ -28,8 +28,9 @@ import androidx.compose.runtime.saveable.rememberSaveable
import io.element.android.features.logout.api.LogoutPreferencePresenter
import io.element.android.libraries.architecture.Presenter
import io.element.android.libraries.core.meta.BuildType
import io.element.android.libraries.matrix.api.user.CurrentUserProvider
import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.matrix.api.user.MatrixUser
import io.element.android.libraries.matrix.api.user.getCurrentUser
import io.element.android.libraries.matrix.api.verification.SessionVerificationService
import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatus
import kotlinx.coroutines.CoroutineScope
@ -38,7 +39,7 @@ import javax.inject.Inject
class PreferencesRootPresenter @Inject constructor(
private val logoutPresenter: LogoutPreferencePresenter,
private val currentUserProvider: CurrentUserProvider,
private val matrixClient: MatrixClient,
private val sessionVerificationService: SessionVerificationService,
private val buildType: BuildType,
private val versionFormatter: VersionFormatter,
@ -71,6 +72,6 @@ class PreferencesRootPresenter @Inject constructor(
}
private fun CoroutineScope.initialLoad(matrixUser: MutableState<MatrixUser?>) = launch {
matrixUser.value = currentUserProvider.provide()
matrixUser.value = matrixClient.getCurrentUser()
}
}

View file

@ -23,7 +23,6 @@ import com.google.common.truth.Truth.assertThat
import io.element.android.features.logout.impl.DefaultLogoutPreferencePresenter
import io.element.android.libraries.architecture.Async
import io.element.android.libraries.core.meta.BuildType
import io.element.android.libraries.matrix.api.user.CurrentUserProvider
import io.element.android.libraries.matrix.api.user.MatrixUser
import io.element.android.libraries.matrix.test.AN_AVATAR_URL
import io.element.android.libraries.matrix.test.A_USER_NAME
@ -39,7 +38,7 @@ class PreferencesRootPresenterTest {
val logoutPresenter = DefaultLogoutPreferencePresenter(matrixClient)
val presenter = PreferencesRootPresenter(
logoutPresenter,
CurrentUserProvider(matrixClient),
matrixClient,
FakeSessionVerificationService(),
BuildType.DEBUG,
FakeVersionFormatter()

View file

@ -44,8 +44,8 @@ import io.element.android.libraries.eventformatter.api.RoomLastMessageFormatter
import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.room.RoomSummary
import io.element.android.libraries.matrix.api.user.CurrentUserProvider
import io.element.android.libraries.matrix.api.user.MatrixUser
import io.element.android.libraries.matrix.api.user.getCurrentUser
import io.element.android.libraries.matrix.api.verification.SessionVerificationService
import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatus
import kotlinx.collections.immutable.ImmutableList
@ -60,7 +60,6 @@ private const val extendedRangeSize = 40
class RoomListPresenter @Inject constructor(
private val client: MatrixClient,
private val currentUserProvider: CurrentUserProvider,
private val lastMessageTimestampFormatter: LastMessageTimestampFormatter,
private val roomLastMessageFormatter: RoomLastMessageFormatter,
private val sessionVerificationService: SessionVerificationService,
@ -163,7 +162,7 @@ class RoomListPresenter @Inject constructor(
}
private fun CoroutineScope.initialLoad(matrixUser: MutableState<MatrixUser?>) = launch {
matrixUser.value = currentUserProvider.provide()
matrixUser.value = client.getCurrentUser()
}
private fun updateVisibleRange(range: IntRange) {

View file

@ -31,7 +31,6 @@ import io.element.android.libraries.designsystem.components.avatar.AvatarData
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
import io.element.android.libraries.designsystem.utils.SnackbarDispatcher
import io.element.android.libraries.eventformatter.test.FakeRoomLastMessageFormatter
import io.element.android.libraries.matrix.api.user.CurrentUserProvider
import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatus
import io.element.android.libraries.matrix.test.AN_AVATAR_URL
import io.element.android.libraries.matrix.test.AN_EXCEPTION
@ -54,7 +53,6 @@ class RoomListPresenterTests {
val matrixClient = FakeMatrixClient()
val presenter = RoomListPresenter(
matrixClient,
CurrentUserProvider(matrixClient),
createDateFormatter(),
FakeRoomLastMessageFormatter(),
FakeSessionVerificationService(),
@ -84,7 +82,6 @@ class RoomListPresenterTests {
)
val presenter = RoomListPresenter(
matrixClient,
CurrentUserProvider(matrixClient),
createDateFormatter(),
FakeRoomLastMessageFormatter(),
FakeSessionVerificationService(),
@ -108,7 +105,6 @@ class RoomListPresenterTests {
val matrixClient = FakeMatrixClient()
val presenter = RoomListPresenter(
matrixClient,
CurrentUserProvider(matrixClient),
createDateFormatter(),
FakeRoomLastMessageFormatter(),
FakeSessionVerificationService(),
@ -139,7 +135,6 @@ class RoomListPresenterTests {
)
val presenter = RoomListPresenter(
matrixClient,
CurrentUserProvider(matrixClient),
createDateFormatter(),
FakeRoomLastMessageFormatter(),
FakeSessionVerificationService(),
@ -173,7 +168,6 @@ class RoomListPresenterTests {
)
val presenter = RoomListPresenter(
matrixClient,
CurrentUserProvider(matrixClient),
createDateFormatter(),
FakeRoomLastMessageFormatter(),
FakeSessionVerificationService(),
@ -213,7 +207,6 @@ class RoomListPresenterTests {
)
val presenter = RoomListPresenter(
matrixClient,
CurrentUserProvider(matrixClient),
createDateFormatter(),
FakeRoomLastMessageFormatter(),
FakeSessionVerificationService(),
@ -263,7 +256,6 @@ class RoomListPresenterTests {
)
val presenter = RoomListPresenter(
matrixClient,
CurrentUserProvider(matrixClient),
createDateFormatter(),
FakeRoomLastMessageFormatter(),
FakeSessionVerificationService().apply {
@ -292,7 +284,6 @@ class RoomListPresenterTests {
val matrixClient = FakeMatrixClient()
val presenter = RoomListPresenter(
matrixClient,
CurrentUserProvider(matrixClient),
createDateFormatter(),
FakeRoomLastMessageFormatter(),
FakeSessionVerificationService(),
@ -324,7 +315,6 @@ class RoomListPresenterTests {
val matrixClient = FakeMatrixClient()
val presenter = RoomListPresenter(
matrixClient,
CurrentUserProvider(matrixClient),
createDateFormatter(),
FakeRoomLastMessageFormatter(),
FakeSessionVerificationService(),
@ -353,7 +343,6 @@ class RoomListPresenterTests {
val matrixClient = FakeMatrixClient()
val presenter = RoomListPresenter(
matrixClient,
CurrentUserProvider(matrixClient),
createDateFormatter(),
FakeRoomLastMessageFormatter(),
FakeSessionVerificationService(),
@ -387,7 +376,6 @@ class RoomListPresenterTests {
val matrixClient = FakeMatrixClient()
val presenter = RoomListPresenter(
matrixClient,
CurrentUserProvider(matrixClient),
createDateFormatter(),
FakeRoomLastMessageFormatter(),
FakeSessionVerificationService(),

View file

@ -17,18 +17,17 @@
package io.element.android.libraries.matrix.api.user
import io.element.android.libraries.matrix.api.MatrixClient
import javax.inject.Inject
class CurrentUserProvider @Inject constructor(
private val matrixClient: MatrixClient,
) {
suspend fun provide(): MatrixUser {
val userAvatarUrl = matrixClient.loadUserAvatarURLString().getOrNull()
val userDisplayName = matrixClient.loadUserDisplayName().getOrNull()
return MatrixUser(
userId = matrixClient.sessionId,
displayName = userDisplayName,
avatarUrl = userAvatarUrl,
)
}
/**
* Get the current user, as [MatrixUser], using [MatrixClient.loadUserAvatarURLString]
* and [MatrixClient.loadUserDisplayName].
*/
suspend fun MatrixClient.getCurrentUser(): MatrixUser {
val userAvatarUrl = loadUserAvatarURLString().getOrNull()
val userDisplayName = loadUserDisplayName().getOrNull()
return MatrixUser(
userId = sessionId,
displayName = userDisplayName,
avatarUrl = userAvatarUrl,
)
}

View file

@ -38,7 +38,6 @@ import io.element.android.libraries.eventformatter.impl.StateContentFormatter
import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.room.RoomMembershipObserver
import io.element.android.libraries.matrix.api.user.CurrentUserProvider
import io.element.android.services.toolbox.impl.strings.AndroidStringProvider
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
@ -61,7 +60,6 @@ class RoomListScreen(
private val stringProvider = AndroidStringProvider(context.resources)
private val presenter = RoomListPresenter(
client = matrixClient,
currentUserProvider = CurrentUserProvider(matrixClient),
lastMessageTimestampFormatter = DefaultLastMessageTimestampFormatter(dateTimeProvider, dateFormatters),
roomLastMessageFormatter = DefaultRoomLastMessageFormatter(
sp = stringProvider,