diff --git a/features/referral/presentation/build.gradle.kts b/features/referral/presentation/build.gradle.kts index cf01ec5d81..d799b6e432 100644 --- a/features/referral/presentation/build.gradle.kts +++ b/features/referral/presentation/build.gradle.kts @@ -37,7 +37,6 @@ dependencies { /** Other libraries */ implementation(deps.compose.shimmer) - implementation(deps.compose.accompanist.webView) implementation(deps.compose.accompanist.systemUiController) /** DI */ diff --git a/features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/AgreementBottomSheetContent.kt b/features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/AgreementBottomSheetContent.kt deleted file mode 100644 index d2c8244273..0000000000 --- a/features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/AgreementBottomSheetContent.kt +++ /dev/null @@ -1,66 +0,0 @@ -package com.tangem.feature.referral.ui - -import android.content.res.Configuration -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.verticalScroll -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalInspectionMode -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.Dp -import androidx.compose.ui.unit.dp -import com.google.accompanist.web.WebView -import com.google.accompanist.web.rememberWebViewState -import com.tangem.core.ui.components.appbar.TangemTopAppBar -import com.tangem.core.ui.extensions.stringResourceSafe -import com.tangem.core.ui.res.TangemTheme -import com.tangem.core.ui.res.TangemThemePreview -import com.tangem.core.ui.webview.applySafeSettings -import com.tangem.feature.referral.presentation.R - -/** - * Bottom sheet content with referral program terms of use - * - * @param url link to the html page - * @param bottomBarHeight bottom insets - */ -@Composable -internal fun AgreementBottomSheetContent(url: String, bottomBarHeight: Dp) { - Column( - modifier = Modifier - .fillMaxSize() - .verticalScroll(rememberScrollState()), - ) { - TangemTopAppBar(title = stringResourceSafe(id = R.string.details_referral_title)) - AgreementHtmlView(url = url) - Spacer(modifier = Modifier.height(bottomBarHeight)) - } -} - -@Composable -private fun AgreementHtmlView(url: String) { - val state = rememberWebViewState(url) - val isInPreviewMode = LocalInspectionMode.current - WebView( - state = state, - modifier = Modifier.background(TangemTheme.colors.background.primary), - captureBackPresses = false, - onCreated = { - if (!isInPreviewMode) it.applySafeSettings() - }, - ) -} - -@Preview -@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES) -@Composable -private fun Preview_AgreementBottomSheet() { - TangemThemePreview { - AgreementBottomSheetContent(url = "https://tangem.com/en/", 50.dp) - } -} \ No newline at end of file diff --git a/features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/ReferralBottomSheet.kt b/features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/ReferralBottomSheet.kt deleted file mode 100644 index 0a3d43118a..0000000000 --- a/features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/ReferralBottomSheet.kt +++ /dev/null @@ -1,47 +0,0 @@ -package com.tangem.feature.referral.ui - -import androidx.compose.foundation.layout.* -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.ModalBottomSheet -import androidx.compose.material3.SheetState -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalDensity -import com.tangem.core.ui.res.TangemTheme -import com.tangem.core.ui.utils.WindowInsetsZero -import com.tangem.feature.referral.models.ReferralStateHolder - -@OptIn(ExperimentalMaterial3Api::class) -@Composable -internal fun ReferralBottomSheet( - sheetState: SheetState, - isVisible: Boolean, - onDismissRequest: () -> Unit, - config: ReferralStateHolder.ReferralInfoState, -) { - val bottomBarHeight = with(LocalDensity.current) { WindowInsets.systemBars.getBottom(this).toDp() } - - if (isVisible) { - ModalBottomSheet( - modifier = Modifier.statusBarsPadding(), - onDismissRequest = onDismissRequest, - sheetState = sheetState, - shape = RoundedCornerShape( - topStart = TangemTheme.dimens.radius16, - topEnd = TangemTheme.dimens.radius16, - ), - contentWindowInsets = { WindowInsetsZero }, - containerColor = TangemTheme.colors.background.primary, - ) { - AgreementBottomSheetContent( - url = when (config) { - is ReferralStateHolder.ReferralInfoState.NonParticipantContent -> config.url - is ReferralStateHolder.ReferralInfoState.ParticipantContent -> config.url - is ReferralStateHolder.ReferralInfoState.Loading -> "" - }, - bottomBarHeight = bottomBarHeight, - ) - } - } -} \ No newline at end of file diff --git a/features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/ReferralScreen.kt b/features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/ReferralScreen.kt index cb76191b92..5bf12360cb 100644 --- a/features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/ReferralScreen.kt +++ b/features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/ReferralScreen.kt @@ -9,7 +9,10 @@ import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.* -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.SideEffect +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext @@ -44,12 +47,8 @@ import kotlinx.coroutines.launch * * @param stateHolder state holder */ -@OptIn(ExperimentalMaterial3Api::class) @Composable internal fun ReferralScreen(stateHolder: ReferralStateHolder) { - var isBottomSheetVisible by remember { mutableStateOf(value = false) } - val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) - val snackbarHostState = remember(::SnackbarHostState) Scaffold( @@ -80,10 +79,7 @@ internal fun ReferralScreen(stateHolder: ReferralStateHolder) { ReferralContent( stateHolder = stateHolder, snackbarHostState = snackbarHostState, - onAgreementClick = { - stateHolder.analytics.onAgreementClicked.invoke() - isBottomSheetVisible = true - }, + onAgreementClick = stateHolder.analytics.onAgreementClicked, modifier = Modifier.padding(it), ) } @@ -107,13 +103,6 @@ internal fun ReferralScreen(stateHolder: ReferralStateHolder) { } } } - - ReferralBottomSheet( - sheetState = sheetState, - isVisible = isBottomSheetVisible, - onDismissRequest = { isBottomSheetVisible = false }, - config = stateHolder.referralInfoState, - ) } @Composable diff --git a/features/referral/presentation/src/main/java/com/tangem/feature/referral/viewmodels/ReferralViewModel.kt b/features/referral/presentation/src/main/java/com/tangem/feature/referral/viewmodels/ReferralViewModel.kt index 2cfc8db688..a0a455ee28 100644 --- a/features/referral/presentation/src/main/java/com/tangem/feature/referral/viewmodels/ReferralViewModel.kt +++ b/features/referral/presentation/src/main/java/com/tangem/feature/referral/viewmodels/ReferralViewModel.kt @@ -11,6 +11,7 @@ import com.tangem.common.routing.AppRoute import com.tangem.common.routing.bundle.unbundle import com.tangem.core.analytics.api.AnalyticsEventHandler import com.tangem.core.navigation.share.ShareManager +import com.tangem.core.navigation.url.UrlOpener import com.tangem.domain.wallets.models.UserWalletId import com.tangem.feature.referral.analytics.ReferralEvents import com.tangem.feature.referral.domain.ReferralInteractor @@ -36,6 +37,7 @@ internal class ReferralViewModel @Inject constructor( private val dispatchers: CoroutineDispatcherProvider, private val analyticsEventHandler: AnalyticsEventHandler, private val shareManager: ShareManager, + private val urlOpener: UrlOpener, savedStateHandle: SavedStateHandle, ) : ViewModel() { @@ -121,6 +123,8 @@ internal class ReferralViewModel @Inject constructor( private fun onAgreementClicked() { analyticsEventHandler.send(ReferralEvents.ClickTaC) + + lastReferralData?.tosLink?.let(urlOpener::openUrl) } private fun onCopyClicked() {