knock requests : expose api through Room

This commit is contained in:
ganfra 2024-12-10 16:02:00 +01:00
parent 91444aee67
commit 741ae35aca
6 changed files with 134 additions and 0 deletions

View file

@ -33,6 +33,7 @@ import io.element.android.libraries.matrix.api.room.MessageEventType
import io.element.android.libraries.matrix.api.room.RoomMember
import io.element.android.libraries.matrix.api.room.StateEventType
import io.element.android.libraries.matrix.api.room.draft.ComposerDraft
import io.element.android.libraries.matrix.api.room.knock.KnockRequest
import io.element.android.libraries.matrix.api.room.location.AssetType
import io.element.android.libraries.matrix.api.room.powerlevels.MatrixRoomPowerLevels
import io.element.android.libraries.matrix.api.room.powerlevels.UserRoleChange
@ -163,6 +164,13 @@ class FakeMatrixRoom(
_identityStateChangesFlow.tryEmit(identityStateChanges)
}
private val _knockRequestsFlow: MutableSharedFlow<List<KnockRequest>> = MutableSharedFlow(replay = 1)
override val knockRequestsFlow: Flow<List<KnockRequest>> = _knockRequestsFlow
fun emitKnockRequests(knockRequests: List<KnockRequest>) {
_knockRequestsFlow.tryEmit(knockRequests)
}
override val membersStateFlow: MutableStateFlow<MatrixRoomMembersState> = MutableStateFlow(MatrixRoomMembersState.Unknown)
override val roomNotificationSettingsStateFlow: MutableStateFlow<MatrixRoomNotificationSettingsState> =

View file

@ -0,0 +1,43 @@
/*
* Copyright 2024 New Vector Ltd.
*
* SPDX-License-Identifier: AGPL-3.0-only
* Please see LICENSE in the repository root for full details.
*/
package io.element.android.libraries.matrix.test.room.knock
import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.api.room.knock.KnockRequest
import io.element.android.libraries.matrix.test.AN_AVATAR_URL
import io.element.android.libraries.matrix.test.A_USER_ID
import io.element.android.libraries.matrix.test.A_USER_NAME
import io.element.android.tests.testutils.lambda.lambdaError
class FakeKnockRequest(
override val userId: UserId = A_USER_ID,
override val displayName: String? = A_USER_NAME,
override val avatarUrl: String? = AN_AVATAR_URL,
override val reason: String? = null,
override val timestamp: Long? = null,
val acceptLambda: () -> Result<Unit> = { lambdaError() },
val declineLambda: (String?) -> Result<Unit> = { lambdaError() },
val declineAndBanLambda: (String?) -> Result<Unit> = { lambdaError() },
val markAsSeenLambda: () -> Result<Unit> = { lambdaError() },
) : KnockRequest {
override suspend fun accept(): Result<Unit> {
return acceptLambda()
}
override suspend fun decline(reason: String?): Result<Unit> {
return declineLambda(reason)
}
override suspend fun declineAndBan(reason: String?): Result<Unit> {
return declineAndBanLambda(reason)
}
override suspend fun markAsSeen(): Result<Unit> {
return markAsSeenLambda()
}
}