mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-04 20:01:55 +00:00
Stub setUserStatus/clearUserStatus in-memory in RustMatrixClient
This commit is contained in:
+32
-2
@@ -48,8 +48,10 @@ 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.spaces.SpaceService
|
||||||
import io.element.android.libraries.matrix.api.sync.SlidingSyncVersion
|
import io.element.android.libraries.matrix.api.sync.SlidingSyncVersion
|
||||||
import io.element.android.libraries.matrix.api.sync.SyncState
|
import io.element.android.libraries.matrix.api.sync.SyncState
|
||||||
|
import io.element.android.libraries.matrix.api.user.DisplayedStatus
|
||||||
import io.element.android.libraries.matrix.api.user.MatrixSearchUserResults
|
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.user.MatrixUser
|
||||||
|
import io.element.android.libraries.matrix.api.user.UserStatus
|
||||||
import io.element.android.libraries.matrix.impl.encryption.RustEncryptionService
|
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.exception.mapClientException
|
||||||
import io.element.android.libraries.matrix.impl.linknewdevice.RustLinkDesktopHandler
|
import io.element.android.libraries.matrix.impl.linknewdevice.RustLinkDesktopHandler
|
||||||
@@ -258,6 +260,8 @@ class RustMatrixClient(
|
|||||||
|
|
||||||
private var clientDelegateTaskHandle: TaskHandle? = innerClient.setDelegate(sessionDelegate)
|
private var clientDelegateTaskHandle: TaskHandle? = innerClient.setDelegate(sessionDelegate)
|
||||||
|
|
||||||
|
private var localUserStatus: UserStatus? = null
|
||||||
|
|
||||||
private val _userProfile: MutableStateFlow<MatrixUser> = MutableStateFlow(
|
private val _userProfile: MutableStateFlow<MatrixUser> = MutableStateFlow(
|
||||||
MatrixUser(
|
MatrixUser(
|
||||||
userId = sessionId,
|
userId = sessionId,
|
||||||
@@ -443,8 +447,12 @@ class RustMatrixClient(
|
|||||||
|
|
||||||
override suspend fun getUserProfile(): Result<MatrixUser> = getProfile(sessionId)
|
override suspend fun getUserProfile(): Result<MatrixUser> = getProfile(sessionId)
|
||||||
.onSuccess { matrixUser ->
|
.onSuccess { matrixUser ->
|
||||||
_userProfile.emit(matrixUser)
|
_userProfile.emit(
|
||||||
// Also update our session storage
|
matrixUser.copy(
|
||||||
|
rawStatus = localUserStatus,
|
||||||
|
displayedStatus = localUserStatus?.let { DisplayedStatus.UserSet(it) },
|
||||||
|
)
|
||||||
|
)
|
||||||
sessionStore.updateUserProfile(
|
sessionStore.updateUserProfile(
|
||||||
sessionId = sessionId.value,
|
sessionId = sessionId.value,
|
||||||
displayName = matrixUser.displayName,
|
displayName = matrixUser.displayName,
|
||||||
@@ -474,6 +482,28 @@ class RustMatrixClient(
|
|||||||
runCatchingExceptions { innerClient.removeAvatar() }
|
runCatchingExceptions { innerClient.removeAvatar() }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override suspend fun setUserStatus(status: UserStatus): Result<Unit> {
|
||||||
|
localUserStatus = status
|
||||||
|
_userProfile.emit(
|
||||||
|
_userProfile.value.copy(
|
||||||
|
rawStatus = status,
|
||||||
|
displayedStatus = DisplayedStatus.UserSet(status),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return Result.success(Unit)
|
||||||
|
}
|
||||||
|
|
||||||
|
override suspend fun clearUserStatus(): Result<Unit> {
|
||||||
|
localUserStatus = null
|
||||||
|
_userProfile.emit(
|
||||||
|
_userProfile.value.copy(
|
||||||
|
rawStatus = null,
|
||||||
|
displayedStatus = null,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return Result.success(Unit)
|
||||||
|
}
|
||||||
|
|
||||||
override suspend fun joinRoom(roomId: RoomId): Result<RoomInfo?> = withContext(sessionDispatcher) {
|
override suspend fun joinRoom(roomId: RoomId): Result<RoomInfo?> = withContext(sessionDispatcher) {
|
||||||
runCatchingExceptions {
|
runCatchingExceptions {
|
||||||
innerClient.joinRoomById(roomId.value).destroy()
|
innerClient.joinRoomById(roomId.value).destroy()
|
||||||
|
|||||||
Reference in New Issue
Block a user