Use the new setIsFavorite api

This commit is contained in:
ganfra 2024-02-06 16:04:44 +01:00
parent d9017a098c
commit f3c1eb6738
7 changed files with 28 additions and 27 deletions

View file

@ -156,7 +156,7 @@ interface MatrixRoom : Closeable {
suspend fun reportContent(eventId: EventId, reason: String, blockUserId: UserId?): Result<Unit>
suspend fun updateNotableTags(notableTags: RoomNotableTags): Result<Unit>
suspend fun setIsFavorite(isFavorite: Boolean): Result<Unit>
/**
* Share a location message in the room.

View file

@ -19,7 +19,9 @@ package io.element.android.libraries.matrix.api.room.tags
/**
* Represents the notable tags of a room.
* @param isFavorite true if the room is marked as favorite.
* @param isLowPriority true if the room is marked as low priority.
*/
data class RoomNotableTags(
val isFavorite: Boolean = false,
val isLowPriority: Boolean = false,
)

View file

@ -435,14 +435,9 @@ class RustMatrixRoom(
}
}
override suspend fun updateNotableTags(notableTags: RoomNotableTags): Result<Unit> = withContext(roomDispatcher) {
override suspend fun setIsFavorite(isFavorite: Boolean): Result<Unit> = withContext(roomDispatcher) {
runCatching {
Timber.i("Update notable tags with : $notableTags")
innerRoom.updateNotableTags(notableTags.map())
}.onFailure {
Timber.w("Failed to update notable tags: $it")
}.onSuccess {
Timber.i("Successfully updated notable tags")
innerRoom.setIsFavorite(isFavorite, null)
}
}

View file

@ -20,9 +20,11 @@ import io.element.android.libraries.matrix.api.room.tags.RoomNotableTags
import uniffi.matrix_sdk_base.RoomNotableTags as RustRoomNotableTags
fun RustRoomNotableTags.map() = RoomNotableTags(
isFavorite = isFavorite
isFavorite = isFavorite,
isLowPriority = isLowPriority
)
fun RoomNotableTags.map() = RustRoomNotableTags(
isFavorite = isFavorite
isFavorite = isFavorite,
isLowPriority = isLowPriority
)

View file

@ -114,7 +114,7 @@ class FakeMatrixRoom(
private var getWidgetDriverResult: Result<MatrixWidgetDriver> = Result.success(FakeWidgetDriver())
private var canUserTriggerRoomNotificationResult: Result<Boolean> = Result.success(true)
private var canUserJoinCallResult: Result<Boolean> = Result.success(true)
private var updateNotableTagsResult = Result.success(Unit)
private var setIsFavoriteResult = Result.success(Unit)
var sendMessageMentions = emptyList<Mention>()
val editMessageCalls = mutableListOf<Pair<String, String?>>()
private val _typingRecord = mutableListOf<Boolean>()
@ -171,7 +171,7 @@ class FakeMatrixRoom(
private val _roomInfoFlow: MutableSharedFlow<MatrixRoomInfo> = MutableSharedFlow(replay = 1)
override val roomInfoFlow: Flow<MatrixRoomInfo> = _roomInfoFlow
private val _notableTagsFlow: MutableSharedFlow<RoomNotableTags> = MutableStateFlow(aRoomNotableTags())
private val _notableTagsFlow: MutableStateFlow<RoomNotableTags> = MutableStateFlow(aRoomNotableTags())
override val notableTagsFlow: Flow<RoomNotableTags> = _notableTagsFlow
override val membersStateFlow: MutableStateFlow<MatrixRoomMembersState> = MutableStateFlow(MatrixRoomMembersState.Unknown)
@ -379,9 +379,15 @@ class FakeMatrixRoom(
return reportContentResult
}
override suspend fun updateNotableTags(notableTags: RoomNotableTags): Result<Unit> {
return updateNotableTagsResult.also { result ->
override suspend fun setIsFavorite(isFavorite: Boolean): Result<Unit> {
return setIsFavoriteResult.also { result ->
if (result.isSuccess) {
val lowPriority = if (isFavorite) {
false
} else {
_notableTagsFlow.value.isLowPriority
}
val notableTags = RoomNotableTags(isFavorite, lowPriority)
_notableTagsFlow.emit(notableTags)
}
}
@ -584,8 +590,8 @@ class FakeMatrixRoom(
getWidgetDriverResult = result
}
fun givenUpdateNotableTagsResult(result: Result<Unit>) {
updateNotableTagsResult = result
fun givenSetIsFavoriteResult(result: Result<Unit>) {
setIsFavoriteResult = result
}
fun givenRoomInfo(roomInfo: MatrixRoomInfo) {