diff --git a/app/src/main/java/com/tangem/tap/features/home/HomeFragment.kt b/app/src/main/java/com/tangem/tap/features/home/HomeFragment.kt index 482e629344..9e98fe16f5 100644 --- a/app/src/main/java/com/tangem/tap/features/home/HomeFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/home/HomeFragment.kt @@ -5,7 +5,6 @@ import android.view.View import androidx.compose.runtime.MutableState import androidx.compose.runtime.mutableStateOf import androidx.compose.ui.platform.ComposeView -import androidx.compose.ui.text.intl.Locale import androidx.fragment.app.Fragment import com.google.accompanist.appcompattheme.AppCompatTheme import com.tangem.tap.features.home.compose.StoriesScreen @@ -36,17 +35,18 @@ class HomeFragment : Fragment(R.layout.fragment_home), StoreSubscriber +) : RegionProvider { + override fun getRegion(): String? { + for (provider in providers) { + val region = provider.getRegion() + if (region != null) return region + } + return null + } +} + +class TelephonyManagerRegionProvider(context: Context) : RegionProvider { + + private val wContext: WeakReference = WeakReference(context) + + override fun getRegion(): String? { + val tm = wContext.get()?.getSystemService(Context.TELEPHONY_SERVICE) as? TelephonyManager ?: return null + + val region = when (tm.phoneType) { + PHONE_TYPE_CDMA -> { + // Result may be unreliable + tm.networkCountryIso + } + else -> tm.networkCountryIso + } + return region.ifEmpty { return null } + } +} + +class LocaleRegionProvider : RegionProvider { + override fun getRegion(): String? = Locale.current.region +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/home/redux/HomeAction.kt b/app/src/main/java/com/tangem/tap/features/home/redux/HomeAction.kt index 79055cf993..a37aa49595 100644 --- a/app/src/main/java/com/tangem/tap/features/home/redux/HomeAction.kt +++ b/app/src/main/java/com/tangem/tap/features/home/redux/HomeAction.kt @@ -1,12 +1,13 @@ package com.tangem.tap.features.home.redux import com.tangem.tap.common.entities.IndeterminateProgressButton +import com.tangem.tap.features.home.RegionProvider import org.rekotlin.Action sealed class HomeAction : Action { // from ui object ReadCard : HomeAction() - data class GoToShop(val region: String) : HomeAction() + data class GoToShop(val regionProvider: RegionProvider) : HomeAction() // internal data class ShouldScanCardOnResume(val shouldScanCard: Boolean) : HomeAction() diff --git a/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt b/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt index eb0f261f8b..aa5f0f8c16 100644 --- a/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt @@ -52,10 +52,9 @@ private val homeMiddleware: Middleware = { dispatch, state -> } is HomeAction.ReadCard -> handleReadCard() is HomeAction.GoToShop -> { - if (action.region == "ru") { - store.dispatchOpenUrl(BUY_WALLET_URL) - } else { - store.dispatch(NavigationAction.NavigateTo(AppScreen.Shop)) + when (action.regionProvider.getRegion()?.toLowerCase()) { + "ru" -> store.dispatchOpenUrl(BUY_WALLET_URL) + else -> store.dispatch(NavigationAction.NavigateTo(AppScreen.Shop)) } store.state.globalState.analyticsHandlers?.triggerEvent( event = AnalyticsEvent.GET_CARD,