favorite : branch RoomNotableTags methods

This commit is contained in:
ganfra 2024-01-31 21:24:37 +01:00
parent c0e6813e3b
commit a63d331f36
18 changed files with 285 additions and 19 deletions

View file

@ -40,6 +40,7 @@ import io.element.android.libraries.matrix.api.room.RoomMember
import io.element.android.libraries.matrix.api.room.RoomNotificationMode
import io.element.android.libraries.matrix.api.room.StateEventType
import io.element.android.libraries.matrix.api.room.location.AssetType
import io.element.android.libraries.matrix.api.room.tags.RoomNotableTags
import io.element.android.libraries.matrix.api.timeline.MatrixTimeline
import io.element.android.libraries.matrix.api.timeline.item.event.EventTimelineItem
import io.element.android.libraries.matrix.api.widget.MatrixWidgetDriver
@ -113,6 +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)
var sendMessageMentions = emptyList<Mention>()
val editMessageCalls = mutableListOf<Pair<String, String?>>()
private val _typingRecord = mutableListOf<Boolean>()
@ -169,6 +171,9 @@ class FakeMatrixRoom(
private val _roomInfoFlow: MutableSharedFlow<MatrixRoomInfo> = MutableSharedFlow(replay = 1)
override val roomInfoFlow: Flow<MatrixRoomInfo> = _roomInfoFlow
private val _notableTagsFlow: MutableSharedFlow<RoomNotableTags> = MutableStateFlow(aRoomNotableTags())
override val notableTagsFlow: Flow<RoomNotableTags> = _notableTagsFlow
override val membersStateFlow: MutableStateFlow<MatrixRoomMembersState> = MutableStateFlow(MatrixRoomMembersState.Unknown)
override val roomNotificationSettingsStateFlow: MutableStateFlow<MatrixRoomNotificationSettingsState> =
@ -374,6 +379,14 @@ class FakeMatrixRoom(
return reportContentResult
}
override suspend fun updateNotableTags(notableTags: RoomNotableTags): Result<Unit> {
return updateNotableTagsResult.also { result ->
if (result.isSuccess) {
_notableTagsFlow.emit(notableTags)
}
}
}
override suspend fun sendLocation(
body: String,
geoUri: String,
@ -571,6 +584,10 @@ class FakeMatrixRoom(
getWidgetDriverResult = result
}
fun givenUpdateNotableTagsResult(result: Result<Unit>) {
updateNotableTagsResult = result
}
fun givenRoomInfo(roomInfo: MatrixRoomInfo) {
_roomInfoFlow.tryEmit(roomInfo)
}
@ -610,6 +627,7 @@ fun aRoomInfo(
isPublic: Boolean = true,
isSpace: Boolean = false,
isTombstoned: Boolean = false,
isFavorite: Boolean = false,
canonicalAlias: String? = null,
alternativeAliases: List<String> = emptyList(),
currentUserMembership: CurrentUserMembership = CurrentUserMembership.JOINED,
@ -646,3 +664,9 @@ fun aRoomInfo(
hasRoomCall = hasRoomCall,
activeRoomCallParticipants = activeRoomCallParticipants.toImmutableList(),
)
fun aRoomNotableTags(
isFavorite: Boolean = false,
) = RoomNotableTags(
isFavorite = isFavorite,
)