Skip to content

Commit

Permalink
Merge pull request #1016 from radixdlt/fix/ABW-3468-mobile-connect-li…
Browse files Browse the repository at this point in the history
…nk-ui-tweaks

[ABW-3468] Tweaks to mobile connect link UI
  • Loading branch information
jakub-rdx authored Jun 28, 2024
2 parents 0bc8f09 + 6622350 commit f761127
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,7 @@ class IncomingRequestRepositoryImpl @Inject constructor(
// In order to emit an incoming request, the topmost item should be
// a. An incoming request
// b. It should not be the same as the one being handled already
Timber.d("Next request id ${(nextRequest as? QueueItem.RequestItem)?.incomingRequest?.interactionId}")
if (nextRequest is QueueItem.RequestItem && _currentRequestToHandle.value != nextRequest.incomingRequest) {
_currentRequestToHandle.emit(nextRequest.incomingRequest)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import com.babylon.wallet.android.data.gateway.generated.models.MetadataPublicKe
import com.babylon.wallet.android.data.gateway.generated.models.MetadataStringArrayValue
import com.babylon.wallet.android.data.gateway.generated.models.MetadataStringValue
import com.babylon.wallet.android.data.gateway.generated.models.MetadataTypedValue
import com.babylon.wallet.android.data.gateway.generated.models.MetadataU32ArrayValue
import com.babylon.wallet.android.data.gateway.generated.models.MetadataU32Value
import com.babylon.wallet.android.data.gateway.generated.models.MetadataU64ArrayValue
import com.babylon.wallet.android.data.gateway.generated.models.MetadataU64Value
Expand Down Expand Up @@ -62,7 +63,7 @@ object MetadataTypedValueSerializer : JsonContentPolymorphicSerializer<MetadataT
MetadataValueType.StringArray -> MetadataStringArrayValue.serializer()
MetadataValueType.BoolArray -> MetadataBoolArrayValue.serializer()
MetadataValueType.U8Array -> MetadataU8ArrayValue.serializer()
MetadataValueType.U32Array -> MetadataU32Value.serializer()
MetadataValueType.U32Array -> MetadataU32ArrayValue.serializer()
MetadataValueType.U64Array -> MetadataU64ArrayValue.serializer()
MetadataValueType.I32Array -> MetadataI32ArrayValue.serializer()
MetadataValueType.I64Array -> MetadataI64ArrayValue.serializer()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import com.radixdlt.sargon.extensions.init
import com.radixdlt.sargon.extensions.toJson
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.withContext
import timber.log.Timber
import javax.inject.Inject

class RespondToIncomingRequestUseCase @Inject constructor(
Expand Down Expand Up @@ -53,6 +54,8 @@ class RespondToIncomingRequestUseCase @Inject constructor(
radixConnectMobile.sendDappInteractionResponse(
RadixConnectMobileWalletResponse(SessionId.fromString(request.remoteEntityId.value), payload)
)
}.onFailure {
Timber.d(it, "Failed to send failure response to Radix Mobile Connect")
}.mapCatching {
IncomingRequestResponse.SuccessRadixMobileConnect
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ package com.babylon.wallet.android.presentation.mobileconnect

import androidx.activity.compose.BackHandler
import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
Expand All @@ -26,10 +28,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.drawWithCache
import androidx.compose.ui.graphics.drawscope.Stroke
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
Expand All @@ -47,6 +46,7 @@ import com.babylon.wallet.android.presentation.ui.composables.RadixSnackbarHost
import com.babylon.wallet.android.presentation.ui.composables.SnackbarUIMessage
import com.babylon.wallet.android.presentation.ui.composables.Thumbnail
import com.babylon.wallet.android.presentation.ui.composables.displayName
import com.babylon.wallet.android.utils.formattedSpans
import com.radixdlt.sargon.annotation.UsesSampleValues

@Composable
Expand Down Expand Up @@ -166,21 +166,10 @@ fun MobileConnectLinkContent(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = RadixTheme.dimensions.paddingXXXLarge),
text = buildAnnotatedString {
val valueToDisplay = stringResource(
id = R.string.mobileConnect_linkSubtitle,
dAppDisplayName
)

append(valueToDisplay)

val startOfSpan = valueToDisplay.indexOf(dAppDisplayName)
addStyle(
style = RadixTheme.typography.body2Header.copy(fontSize = 16.sp).toSpanStyle(),
start = startOfSpan,
end = startOfSpan + dAppDisplayName.length,
)
},
text = stringResource(
id = R.string.mobileConnect_linkSubtitle,
dAppDisplayName
).formattedSpans(RadixTheme.typography.body2Header.copy(fontSize = 16.sp).toSpanStyle()),
color = RadixTheme.colors.gray1,
style = RadixTheme.typography.body1Link,
textAlign = TextAlign.Center
Expand Down Expand Up @@ -211,22 +200,19 @@ private fun NumberedListItem(modifier: Modifier = Modifier, number: Int, text: S
horizontalArrangement = Arrangement.spacedBy(RadixTheme.dimensions.paddingDefault)
) {
val color = RadixTheme.colors.gray1
Text(
modifier = Modifier.drawWithCache {
onDrawWithContent {
drawCircle(
color = color,
style = Stroke(1.dp.toPx()),
radius = 14.dp.toPx(),
)
drawContent()
}
},
text = number.toString(),
color = RadixTheme.colors.gray1,
style = RadixTheme.typography.body1Header.copy(fontSize = 20.sp),
textAlign = TextAlign.Start
)
Box(
modifier = Modifier
.size(28.dp)
.border(1.dp, color, RadixTheme.shapes.circle)
) {
Text(
modifier = Modifier.align(Alignment.Center),
text = number.toString(),
color = RadixTheme.colors.gray1,
style = RadixTheme.typography.body1Header.copy(fontSize = 20.sp),
textAlign = TextAlign.Start
)
}
Text(
text = text,
color = RadixTheme.colors.gray1,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,13 @@ import com.babylon.wallet.android.presentation.common.OneOffEventHandlerImpl
import com.babylon.wallet.android.presentation.common.StateViewModel
import com.babylon.wallet.android.presentation.common.UiMessage
import com.babylon.wallet.android.presentation.common.UiState
import com.babylon.wallet.android.presentation.dapp.authorized.login.Event
import com.babylon.wallet.android.utils.AppEvent
import com.babylon.wallet.android.utils.AppEventBus
import com.radixdlt.sargon.DappWalletInteractionErrorType
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.filterIsInstance
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import rdx.works.core.domain.DApp
Expand All @@ -34,6 +38,7 @@ class MobileConnectLinkViewModel @Inject constructor(
private val getDAppsUseCase: GetDAppsUseCase,
private val incomingRequestRepository: IncomingRequestRepository,
private val respondToIncomingRequestUseCase: RespondToIncomingRequestUseCase,
private val appEventBus: AppEventBus,
@ApplicationScope private val appScope: CoroutineScope
) : StateViewModel<MobileConnectLinkViewModel.State>(), OneOffEventHandler<MobileConnectLinkViewModel.Event> by OneOffEventHandlerImpl() {

Expand All @@ -46,6 +51,7 @@ class MobileConnectLinkViewModel @Inject constructor(
}

init {
observeDeferEvent()
viewModelScope.launch {
val requestToHandle = incomingRequestRepository.getRequest(args.interactionId)
if (requestToHandle == null) {
Expand Down Expand Up @@ -81,6 +87,17 @@ class MobileConnectLinkViewModel @Inject constructor(
}
}

private fun observeDeferEvent() {
viewModelScope.launch {
appEventBus.events.filterIsInstance<AppEvent.DeferRequestHandling>().collect {
if (it.interactionId == args.interactionId) {
sendEvent(Event.Close)
incomingRequestRepository.requestDeferred(args.interactionId)
}
}
}
}

fun onMessageShown() {
_state.update { it.copy(uiMessage = null) }
}
Expand Down

0 comments on commit f761127

Please sign in to comment.