diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7b6142a534..7185ff029d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -138,9 +138,9 @@
android:name="com.tangem.tap.features.sprinklr.ui.SprinklrActivity"
android:theme="@style/AppTheme" />
-
-
-
+
{
private var homeState: MutableState = mutableStateOf(store.state.homeState)
- private val learn2earnViewModel by viewModels()
+ private val learn2earnViewModel by activityViewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
store.dispatch(HomeAction.OnCreate)
store.dispatch(HomeAction.Init)
- if (learn2earnViewModel.isNeedToShowViewOnStoriesScreen()) {
+ if (learn2earnViewModel.uiState.storyScreenState.isVisible) {
store.dispatch(HomeAction.InsertStory(position = 0, Stories.OneInchPromo))
// re init homeState after inserting learn2earn story
homeState = mutableStateOf(store.state.homeState)
@@ -90,10 +90,8 @@ class HomeFragment : Fragment(), StoreSubscriber {
@Composable
private fun ScreenContent() {
StoriesScreen(
- homeState,
- onLearn2earnClick = {
- learn2earnViewModel.onStoriesClick()
- },
+ homeState = homeState,
+ onLearn2earnClick = learn2earnViewModel.uiState.storyScreenState.onClick,
onScanButtonClick = {
Analytics.send(IntroductionProcess.ButtonScanCard())
store.dispatch(HomeAction.ReadCard())
diff --git a/app/src/main/java/com/tangem/tap/features/home/compose/StoriesScreen.kt b/app/src/main/java/com/tangem/tap/features/home/compose/StoriesScreen.kt
index 46ef676001..fa3e832436 100644
--- a/app/src/main/java/com/tangem/tap/features/home/compose/StoriesScreen.kt
+++ b/app/src/main/java/com/tangem/tap/features/home/compose/StoriesScreen.kt
@@ -26,7 +26,7 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.google.accompanist.systemuicontroller.rememberSystemUiController
import com.tangem.core.ui.res.TangemTheme
-import com.tangem.feature.learn2earn.presentation.ui.StoriesScreen
+import com.tangem.feature.learn2earn.presentation.ui.Learn2earnStoriesScreen
import com.tangem.tap.features.home.compose.content.*
import com.tangem.tap.features.home.compose.views.HomeButtons
import com.tangem.tap.features.home.compose.views.StoriesProgressBar
@@ -54,8 +54,11 @@ fun StoriesScreen(
currentStory = state.stories[max(0, currentStep() - 1)]
}
val goToNextScreen = {
- currentStory =
- if (currentStep() < state.stories.lastIndex) state.stories[currentStep() + 1] else state.firstStory
+ currentStory = if (currentStep() < state.stories.lastIndex) {
+ state.stories[currentStep() + 1]
+ } else {
+ state.firstStory
+ }
}
val isPressed = remember { mutableStateOf(false) }
@@ -153,7 +156,7 @@ fun StoriesScreen(
colorFilter = if (currentStory.isDarkBackground) null else ColorFilter.tint(Color.Black),
)
when (currentStory) {
- Stories.OneInchPromo -> StoriesScreen(onLearn2earnClick)
+ Stories.OneInchPromo -> Learn2earnStoriesScreen(onLearn2earnClick)
Stories.TangemIntro -> FirstStoriesContent(isPaused, currentStory.duration) { hideContent.value = it }
Stories.RevolutionaryWallet -> StoriesRevolutionaryWallet(currentStory.duration)
Stories.UltraSecureBackup -> StoriesUltraSecureBackup(isPaused, currentStory.duration)
diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt
index 47d07b91b0..ee946fe068 100644
--- a/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt
+++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt
@@ -8,7 +8,9 @@ import android.view.View
import androidx.activity.OnBackPressedCallback
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.runtime.mutableStateOf
+import androidx.compose.ui.platform.ViewCompositionStrategy
import androidx.fragment.app.Fragment
+import androidx.fragment.app.activityViewModels
import androidx.fragment.app.viewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.flowWithLifecycle
@@ -22,12 +24,16 @@ import coil.size.Scale
import com.badoo.mvicore.modelWatcher
import com.tangem.core.analytics.Analytics
import com.tangem.core.ui.fragments.setStatusBarColor
+import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.utils.OneTouchClickListener
import com.tangem.datasource.connection.NetworkConnectionManager
+import com.tangem.feature.learn2earn.presentation.Learn2earnViewModel
+import com.tangem.feature.learn2earn.presentation.ui.Learn2earnMainPageScreen
import com.tangem.feature.swap.api.SwapFeatureToggleManager
import com.tangem.feature.swap.domain.SwapInteractor
import com.tangem.tap.MainActivity
import com.tangem.tap.common.analytics.events.Portfolio
+import com.tangem.tap.common.extensions.beginDelayedTransition
import com.tangem.tap.common.extensions.show
import com.tangem.tap.common.recyclerView.SpaceItemDecoration
import com.tangem.tap.common.redux.global.GlobalAction
@@ -73,6 +79,7 @@ class WalletFragment : Fragment(R.layout.fragment_wallet), SafeStoreSubscriber()
private val viewModel by viewModels()
private val totalBalanceWatcher = modelWatcher {
@@ -102,6 +109,7 @@ class WalletFragment : Fragment(R.layout.fragment_wallet), SafeStoreSubscriber
-
+ android:visibility="gone" />
= WrappedList(emptyList())) : TextReference
+ data class PluralRes(@PluralsRes val id: Int, val count: Int, val formatArgs: WrappedList) : TextReference
+
/**
* Text string
*
@@ -38,6 +42,7 @@ sealed interface TextReference {
fun TextReference.resolveReference(): String {
return when (this) {
is TextReference.Res -> stringResource(id, *formatArgs.toTypedArray())
+ is TextReference.PluralRes -> pluralStringResource(id, count, *formatArgs.toTypedArray())
is TextReference.Str -> value
}
}
\ No newline at end of file
diff --git a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/domain/DefaultLearn2earnInteractor.kt b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/domain/DefaultLearn2earnInteractor.kt
index 36ef5522e9..8ba760e9f9 100644
--- a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/domain/DefaultLearn2earnInteractor.kt
+++ b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/domain/DefaultLearn2earnInteractor.kt
@@ -15,7 +15,6 @@ import com.tangem.feature.learn2earn.domain.models.toDomainError
import com.tangem.lib.crypto.DerivationManager
import com.tangem.lib.crypto.UserWalletManager
import com.tangem.lib.crypto.models.Currency
-import java.text.DecimalFormat
/**
[REDACTED_AUTHOR]
@@ -62,7 +61,7 @@ class DefaultLearn2earnInteractor(
return repository.getUserData().isRegisteredInPromotion
}
- override fun getAwardAmount(): String {
+ override fun getAwardAmount(): Pair {
val userInfo = repository.getUserData()
val promotionInfo = promotion.getPromotionInfo()
@@ -70,9 +69,9 @@ class DefaultLearn2earnInteractor(
promotionInfo.awardForOldCard
} else {
promotionInfo.awardForNewCard
- }
+ }.toInt()
- return DecimalFormat("0.#").format(awardAmount)
+ return awardAmount to awardAmount.toString()
}
@Throws(IllegalArgumentException::class)
diff --git a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/domain/api/Learn2earnInteractor.kt b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/domain/api/Learn2earnInteractor.kt
index 5c35867c68..1121665973 100644
--- a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/domain/api/Learn2earnInteractor.kt
+++ b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/domain/api/Learn2earnInteractor.kt
@@ -21,7 +21,7 @@ interface Learn2earnInteractor : WebViewRedirectHandler {
fun isUserRegisteredInPromotion(): Boolean
- fun getAwardAmount(): String
+ fun getAwardAmount(): Pair
@Throws(IllegalArgumentException::class)
suspend fun requestAward(): Result
diff --git a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/Learn2earnViewModel.kt b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/Learn2earnViewModel.kt
index 8cd6e4536c..7f65afe887 100644
--- a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/Learn2earnViewModel.kt
+++ b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/Learn2earnViewModel.kt
@@ -109,7 +109,8 @@ class Learn2earnViewModel @Inject constructor(
return if (interactor.isUserRegisteredInPromotion()) {
MainScreenState.Description.GetBonus
} else {
- MainScreenState.Description.Learn(interactor.getAwardAmount())
+ val (count, award) = interactor.getAwardAmount()
+ MainScreenState.Description.Learn(count, award)
}
}
diff --git a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/ui/GetBonusView.kt b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/ui/GetBonusView.kt
index 25cd356f7d..25a1a5d158 100644
--- a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/ui/GetBonusView.kt
+++ b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/ui/GetBonusView.kt
@@ -146,6 +146,6 @@ private fun OneInchStoriesContentPreview_Dark() {
private fun makePreviewState(): MainScreenState = MainScreenState(
isVisible = true,
onClick = {},
- description = MainScreenState.Description.Learn("0"),
+ description = MainScreenState.Description.Learn(0, "0"),
showProgress = false,
)
\ No newline at end of file
diff --git a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/ui/state/Learn2earnState.kt b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/ui/state/Learn2earnState.kt
index 7e970ee675..f78993a14f 100644
--- a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/ui/state/Learn2earnState.kt
+++ b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/ui/state/Learn2earnState.kt
@@ -1,6 +1,7 @@
package com.tangem.feature.learn2earn.presentation.ui.state
import com.tangem.core.ui.extensions.TextReference
+import com.tangem.core.ui.extensions.WrappedList
import com.tangem.feature.learn2earn.domain.models.PromotionError
import com.tangem.feature.learn2earn.impl.R
@@ -30,9 +31,9 @@ data class MainScreenState(
sealed class Description(val title: TextReference, val subtitle: TextReference) {
- class Learn(awardAmount: String) : Description(
+ class Learn(count: Int, award: String) : Description(
TextReference.Res(R.string.main_learn_title),
- TextReference.Res(R.string.main_learn_subtitle, listOf(awardAmount)),
+ TextReference.PluralRes(R.plurals.main_learn_subtitle, count, WrappedList(listOf(award))),
)
object GetBonus : Description(
diff --git a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/ui/state/StateBuilder.kt b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/ui/state/StateBuilder.kt
index a0d3929569..0e2e14251c 100644
--- a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/ui/state/StateBuilder.kt
+++ b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/ui/state/StateBuilder.kt
@@ -12,7 +12,7 @@ internal fun Learn2earnState.Companion.init(uiActions: UiActions): Learn2earnSta
mainScreenState = MainScreenState(
isVisible = false,
onClick = uiActions.buttonMainClick,
- description = MainScreenState.Description.Learn("0"),
+ description = MainScreenState.Description.Learn(0, "0"),
showProgress = false,
),
)