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 1ef5f5ab0a
commit 1f455238d6
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,