mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-04 10:32:34 +00:00
Fix thread-safety and dispatcher consistency in user status stubs
This commit is contained in:
+5
-5
@@ -260,7 +260,7 @@ class RustMatrixClient(
|
|||||||
|
|
||||||
private var clientDelegateTaskHandle: TaskHandle? = innerClient.setDelegate(sessionDelegate)
|
private var clientDelegateTaskHandle: TaskHandle? = innerClient.setDelegate(sessionDelegate)
|
||||||
|
|
||||||
private var localUserStatus: UserStatus? = null
|
@Volatile private var localUserStatus: UserStatus? = null
|
||||||
|
|
||||||
private val _userProfile: MutableStateFlow<MatrixUser> = MutableStateFlow(
|
private val _userProfile: MutableStateFlow<MatrixUser> = MutableStateFlow(
|
||||||
MatrixUser(
|
MatrixUser(
|
||||||
@@ -482,7 +482,7 @@ class RustMatrixClient(
|
|||||||
runCatchingExceptions { innerClient.removeAvatar() }
|
runCatchingExceptions { innerClient.removeAvatar() }
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun setUserStatus(status: UserStatus): Result<Unit> {
|
override suspend fun setUserStatus(status: UserStatus): Result<Unit> = withContext(sessionDispatcher) {
|
||||||
localUserStatus = status
|
localUserStatus = status
|
||||||
_userProfile.emit(
|
_userProfile.emit(
|
||||||
_userProfile.value.copy(
|
_userProfile.value.copy(
|
||||||
@@ -490,10 +490,10 @@ class RustMatrixClient(
|
|||||||
displayedStatus = DisplayedStatus.UserSet(status),
|
displayedStatus = DisplayedStatus.UserSet(status),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
return Result.success(Unit)
|
Result.success(Unit)
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun clearUserStatus(): Result<Unit> {
|
override suspend fun clearUserStatus(): Result<Unit> = withContext(sessionDispatcher) {
|
||||||
localUserStatus = null
|
localUserStatus = null
|
||||||
_userProfile.emit(
|
_userProfile.emit(
|
||||||
_userProfile.value.copy(
|
_userProfile.value.copy(
|
||||||
@@ -501,7 +501,7 @@ class RustMatrixClient(
|
|||||||
displayedStatus = null,
|
displayedStatus = null,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
return Result.success(Unit)
|
Result.success(Unit)
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun joinRoom(roomId: RoomId): Result<RoomInfo?> = withContext(sessionDispatcher) {
|
override suspend fun joinRoom(roomId: RoomId): Result<RoomInfo?> = withContext(sessionDispatcher) {
|
||||||
|
|||||||
+2
-2
@@ -258,7 +258,7 @@ class FakeMatrixClient(
|
|||||||
return removeAvatarResult
|
return removeAvatarResult
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun setUserStatus(status: UserStatus): Result<Unit> {
|
override suspend fun setUserStatus(status: UserStatus): Result<Unit> = simulateLongTask {
|
||||||
setUserStatusCalled = true
|
setUserStatusCalled = true
|
||||||
if (setUserStatusResult.isSuccess) {
|
if (setUserStatusResult.isSuccess) {
|
||||||
_userProfile.emit(_userProfile.value.copy(
|
_userProfile.emit(_userProfile.value.copy(
|
||||||
@@ -269,7 +269,7 @@ class FakeMatrixClient(
|
|||||||
return setUserStatusResult
|
return setUserStatusResult
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun clearUserStatus(): Result<Unit> {
|
override suspend fun clearUserStatus(): Result<Unit> = simulateLongTask {
|
||||||
clearUserStatusCalled = true
|
clearUserStatusCalled = true
|
||||||
if (clearUserStatusResult.isSuccess) {
|
if (clearUserStatusResult.isSuccess) {
|
||||||
_userProfile.emit(_userProfile.value.copy(
|
_userProfile.emit(_userProfile.value.copy(
|
||||||
|
|||||||
Reference in New Issue
Block a user