diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenter.kt index 18147fd197..7afa2a67da 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenter.kt @@ -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) = launch { - matrixUser.value = currentUserProvider.provide() + matrixUser.value = matrixClient.getCurrentUser() } } diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt index bd5ec02b10..58931e25d7 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt @@ -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() diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt index a929f068ee..7d752ea8b6 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt @@ -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) = launch { - matrixUser.value = currentUserProvider.provide() + matrixUser.value = client.getCurrentUser() } private fun updateVisibleRange(range: IntRange) { diff --git a/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTests.kt b/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTests.kt index d512f7a9b1..50db5a3be2 100644 --- a/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTests.kt +++ b/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTests.kt @@ -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(), diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/user/CurrentUserProvider.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/user/CurrentUser.kt similarity index 59% rename from libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/user/CurrentUserProvider.kt rename to libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/user/CurrentUser.kt index 2e752578a7..3968b058d9 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/user/CurrentUserProvider.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/user/CurrentUser.kt @@ -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, + ) } diff --git a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt index d41a565069..f9cdf0f3fd 100644 --- a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt +++ b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt @@ -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,