knock : adjust api while sdk is not ready.

This commit is contained in:
ganfra 2024-10-22 16:49:39 +02:00
parent 5f40f47145
commit 6afc72e453
3 changed files with 21 additions and 13 deletions

View file

@ -167,9 +167,14 @@ class JoinRoomPresenter @AssistedInject constructor(
if (requiresConfirmation) { if (requiresConfirmation) {
cancelKnockAction.value = AsyncAction.ConfirmingNoParams cancelKnockAction.value = AsyncAction.ConfirmingNoParams
} else { } else {
matrixClient.getPendingRoom(roomId)?.use { room -> val room = matrixClient.getRoom(roomId)
cancelKnockAction.runUpdatingState { if (room == null) {
room.leave() cancelKnockAction.value = AsyncAction.Failure(RuntimeException())
} else {
room.use {
cancelKnockAction.runUpdatingState {
room.leave()
}
} }
} }
} }

View file

@ -7,7 +7,6 @@
package io.element.android.features.joinroom.impl package io.element.android.features.joinroom.impl
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.BoxWithConstraints
@ -43,7 +42,6 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.element.android.compound.theme.ElementTheme import io.element.android.compound.theme.ElementTheme
import io.element.android.compound.tokens.generated.CompoundIcons
import io.element.android.libraries.designsystem.atomic.atoms.PlaceholderAtom import io.element.android.libraries.designsystem.atomic.atoms.PlaceholderAtom
import io.element.android.libraries.designsystem.atomic.atoms.RoomPreviewDescriptionAtom import io.element.android.libraries.designsystem.atomic.atoms.RoomPreviewDescriptionAtom
import io.element.android.libraries.designsystem.atomic.atoms.RoomPreviewSubtitleAtom import io.element.android.libraries.designsystem.atomic.atoms.RoomPreviewSubtitleAtom
@ -55,6 +53,7 @@ import io.element.android.libraries.designsystem.atomic.molecules.RoomPreviewMem
import io.element.android.libraries.designsystem.atomic.organisms.RoomPreviewOrganism import io.element.android.libraries.designsystem.atomic.organisms.RoomPreviewOrganism
import io.element.android.libraries.designsystem.atomic.pages.HeaderFooterPage import io.element.android.libraries.designsystem.atomic.pages.HeaderFooterPage
import io.element.android.libraries.designsystem.background.LightGradientBackground import io.element.android.libraries.designsystem.background.LightGradientBackground
import io.element.android.libraries.designsystem.components.BigIcon
import io.element.android.libraries.designsystem.components.async.AsyncActionView import io.element.android.libraries.designsystem.components.async.AsyncActionView
import io.element.android.libraries.designsystem.components.avatar.Avatar import io.element.android.libraries.designsystem.components.avatar.Avatar
import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.components.avatar.AvatarSize
@ -142,6 +141,9 @@ fun JoinRoomView(
async = state.cancelKnockAction, async = state.cancelKnockAction,
onSuccess = { onCancelKnockSuccess() }, onSuccess = { onCancelKnockSuccess() },
onErrorDismiss = { state.eventSink(JoinRoomEvents.ClearActionStates) }, onErrorDismiss = { state.eventSink(JoinRoomEvents.ClearActionStates) },
errorMessage = {
stringResource(CommonStrings.error_unknown)
},
confirmationDialog = { confirmationDialog = {
ConfirmationDialog( ConfirmationDialog(
content = stringResource(R.string.screen_join_room_cancel_knock_alert_description), content = stringResource(R.string.screen_join_room_cancel_knock_alert_description),
@ -167,7 +169,9 @@ private fun JoinRoomFooter(
onGoBack: () -> Unit, onGoBack: () -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
Box(modifier = modifier.fillMaxWidth().padding(top = 8.dp)) { Box(modifier = modifier
.fillMaxWidth()
.padding(top = 8.dp)) {
if (state.contentState is ContentState.Failure) { if (state.contentState is ContentState.Failure) {
Button( Button(
text = stringResource(CommonStrings.action_retry), text = stringResource(CommonStrings.action_retry),
@ -321,17 +325,15 @@ private fun JoinRoomContent(
fun IsKnockedLoadedContent(modifier: Modifier = Modifier) { fun IsKnockedLoadedContent(modifier: Modifier = Modifier) {
BoxWithConstraints( BoxWithConstraints(
modifier = modifier modifier = modifier
.fillMaxHeight() .fillMaxHeight()
.padding(horizontal = 16.dp), .padding(horizontal = 16.dp),
contentAlignment = Alignment.Center, contentAlignment = Alignment.Center,
) { ) {
IconTitleSubtitleMolecule( IconTitleSubtitleMolecule(
modifier = Modifier.sizeIn(minHeight = maxHeight*0.7f), modifier = Modifier.sizeIn(minHeight = maxHeight * 0.7f),
iconImageVector = CompoundIcons.CheckCircleSolid(), iconStyle = BigIcon.Style.SuccessSolid,
title = stringResource(R.string.screen_join_room_knock_sent_title), title = stringResource(R.string.screen_join_room_knock_sent_title),
subTitle = stringResource(R.string.screen_join_room_knock_sent_description), subTitle = stringResource(R.string.screen_join_room_knock_sent_description),
iconTint = ElementTheme.colors.iconSuccessPrimary,
iconBackgroundTint = ElementTheme.colors.bgSuccessSubtle,
) )
} }
} }

View file

@ -137,7 +137,8 @@ class RustRoomFactory(
return@withContext null return@withContext null
} }
val innerRoom = try { val innerRoom = try {
roomListItem.roomWithoutTimeline() // TODO use new method when available, for now it'll fail for knocked rooms
roomListItem.invitedRoom()
} catch (e: RoomListException) { } catch (e: RoomListException) {
Timber.e(e, "Failed to get pending room for $roomId") Timber.e(e, "Failed to get pending room for $roomId")
return@withContext null return@withContext null