Merge pull request #2733 from element-hq/feature/bma/disableKnock

Disable knock
This commit is contained in:
Benoit Marty 2024-04-22 16:22:48 +02:00 committed by GitHub
commit e0d40ec0a4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
27 changed files with 279 additions and 101 deletions

View file

@ -16,46 +16,48 @@
package io.element.android.libraries.designsystem.background
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.Canvas
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Size
import androidx.compose.ui.geometry.center
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.RadialGradientShader
import androidx.compose.ui.graphics.Shader
import androidx.compose.ui.graphics.ShaderBrush
import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
class LightGradientBackground(
private val firstColor: Color = Color(0x1E0DBD8B),
private val secondColor: Color = Color(0x001273EB),
private val ratio: Float = 642 / 775f,
) : ShaderBrush() {
override fun createShader(size: Size): Shader {
/**
* Light gradient background for Join room screens.
*/
@Composable
fun LightGradientBackground(
modifier: Modifier = Modifier,
backgroundColor: Color = MaterialTheme.colorScheme.background,
firstColor: Color = Color(0x1E0DBD8B),
secondColor: Color = Color(0x001273EB),
ratio: Float = 642 / 775f,
) {
Canvas(
modifier = modifier.fillMaxSize()
) {
val biggerDimension = size.width * 1.98f
return RadialGradientShader(
colors = listOf(firstColor, secondColor),
center = size.center.copy(x = size.width * ratio, y = size.height * ratio),
radius = biggerDimension / 2f,
colorStops = listOf(0f, 0.95f)
val gradientShaderBrush = ShaderBrush(
RadialGradientShader(
colors = listOf(firstColor, secondColor),
center = size.center.copy(x = size.width * ratio, y = size.height * ratio),
radius = biggerDimension / 2f,
colorStops = listOf(0f, 0.95f)
)
)
drawRect(backgroundColor, size = size)
drawRect(brush = gradientShaderBrush, size = size)
}
}
@PreviewsDayNight
@Composable
internal fun LightGradientBackgroundPreview() = ElementPreview {
val gradientBackground = remember {
LightGradientBackground()
}
Box(
modifier = Modifier
.fillMaxSize()
.background(gradientBackground)
)
LightGradientBackground()
}

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
package io.element.android.libraries.designsystem.components
package io.element.android.libraries.designsystem.background
import androidx.compose.foundation.Canvas
import androidx.compose.foundation.layout.Box
@ -31,6 +31,7 @@ import androidx.compose.ui.graphics.LinearGradientShader
import androidx.compose.ui.graphics.ShaderBrush
import androidx.compose.ui.unit.dp
import io.element.android.compound.theme.ElementTheme
import io.element.android.libraries.designsystem.components.drawWithLayer
import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight

View file

@ -65,7 +65,8 @@ interface MatrixClient : Closeable {
suspend fun setDisplayName(displayName: String): Result<Unit>
suspend fun uploadAvatar(mimeType: String, data: ByteArray): Result<Unit>
suspend fun removeAvatar(): Result<Unit>
suspend fun joinRoom(roomId: RoomId): Result<RoomId>
suspend fun joinRoom(roomId: RoomId): Result<Unit>
suspend fun knockRoom(roomId: RoomId): Result<Unit>
fun syncService(): SyncService
fun sessionVerificationService(): SessionVerificationService
fun pushersService(): PushersService

View file

@ -440,7 +440,7 @@ class RustMatrixClient(
runCatching { client.removeAvatar() }
}
override suspend fun joinRoom(roomId: RoomId): Result<RoomId> = withContext(sessionDispatcher) {
override suspend fun joinRoom(roomId: RoomId): Result<Unit> = withContext(sessionDispatcher) {
runCatching {
client.joinRoomById(roomId.value).destroy()
try {
@ -448,10 +448,13 @@ class RustMatrixClient(
} catch (e: Exception) {
Timber.e(e, "Timeout waiting for the room to be available in the room list")
}
roomId
}
}
override suspend fun knockRoom(roomId: RoomId): Result<Unit> {
return Result.failure(NotImplementedError("Not yet implemented"))
}
override suspend fun trackRecentlyVisitedRoom(roomId: RoomId): Result<Unit> = withContext(sessionDispatcher) {
runCatching {
client.trackRecentlyVisitedRoom(roomId.value)

View file

@ -103,10 +103,12 @@ class FakeMatrixClient(
private var setDisplayNameResult: Result<Unit> = Result.success(Unit)
private var uploadAvatarResult: Result<Unit> = Result.success(Unit)
private var removeAvatarResult: Result<Unit> = Result.success(Unit)
var joinRoomLambda: (RoomId) -> Result<RoomId> = {
Result.success(it)
var joinRoomLambda: (RoomId) -> Result<Unit> = {
Result.success(Unit)
}
var knockRoomLambda: (RoomId) -> Result<Unit> = {
Result.success(Unit)
}
var getRoomInfoFlowLambda = { _: RoomId ->
flowOf<Optional<MatrixRoomInfo>>(Optional.empty())
}
@ -197,7 +199,9 @@ class FakeMatrixClient(
return removeAvatarResult
}
override suspend fun joinRoom(roomId: RoomId): Result<RoomId> = joinRoomLambda(roomId)
override suspend fun joinRoom(roomId: RoomId): Result<Unit> = joinRoomLambda(roomId)
override suspend fun knockRoom(roomId: RoomId): Result<Unit> = knockRoomLambda(roomId)
override fun sessionVerificationService(): SessionVerificationService = sessionVerificationService