Updated on 2026-08-14

This commit is contained in:
Tangem 2023-08-14 08:14:56 +03:00
parent eef1ee2d24
commit de890421cb
12 changed files with 94 additions and 32 deletions

View file

@ -1,7 +1,9 @@
package com.tangem.feature.learn2earn.domain
import android.net.Uri
import com.tangem.common.Provider
import com.tangem.core.analytics.api.AnalyticsEventHandler
import com.tangem.data.common.locale.LocaleProvider
import com.tangem.datasource.api.promotion.models.PromotionInfoResponse
import com.tangem.datasource.demo.DemoModeDatasource
import com.tangem.feature.learn2earn.analytics.AnalyticsParam
@ -35,6 +37,7 @@ internal class DefaultLearn2earnInteractor(
private val repository: Learn2earnRepository,
private val userWalletManager: UserWalletManager,
private val derivationManager: DerivationManager,
private val localeProvider: LocaleProvider,
private val analytics: AnalyticsEventHandler,
private val demoModeDatasource: DemoModeDatasource,
private val dependencyProvider: Learn2earnDependencyProvider,
@ -57,8 +60,8 @@ internal class DefaultLearn2earnInteractor(
private val webViewUriBuilder: WebViewUriBuilder by lazy {
WebViewUriBuilder(
authCredentialsProvider = dependencyProvider.getWebViewAuthCredentialsProvider(),
localeLanguageProvider = dependencyProvider.getLocaleProvider(),
promoCodeProvider = { promoUserData.promoCode },
localeProvider = localeProvider,
promoCodeProvider = Provider { promoUserData.promoCode },
)
}

View file

@ -1,15 +1,17 @@
package com.tangem.feature.learn2earn.domain
import android.net.Uri
import com.tangem.common.Provider
import com.tangem.data.common.locale.LocaleProvider
import com.tangem.feature.learn2earn.impl.BuildConfig
/**
[REDACTED_AUTHOR]
*/
internal class WebViewUriBuilder(
private val authCredentialsProvider: () -> String?,
private val localeLanguageProvider: () -> String,
private val promoCodeProvider: () -> String?,
private val authCredentialsProvider: Provider<String?>,
private val localeProvider: LocaleProvider,
private val promoCodeProvider: Provider<String?>,
) {
fun buildUriForNewUser(learningIsFinished: Boolean): Uri {
@ -46,20 +48,11 @@ internal class WebViewUriBuilder(
} else {
authority(BASE_URL)
}
appendPath(getLocaleLanguage(localeLanguageProvider.invoke()))
appendPath(localeProvider.getWebUriLocaleLanguage())
appendPath(PATH_PROMOTION)
appendQueryParameter(QUERY_FINISHED, learningIsFinished.toString())
}
// TODO: locale: This can be used by another feature. Move it to the appropriate location
private fun getLocaleLanguage(language: String): String {
return if (LOCALE_LANG_RU.equals(language, true) || LOCALE_LANG_BY.equals(language, true)) {
LOCALE_LANG_RU
} else {
LOCALE_LANG_EN
}
}
private companion object {
const val SCHEME = "https"
@ -71,9 +64,5 @@ internal class WebViewUriBuilder(
const val QUERY_FINISHED = "finished"
const val DEV_BASE_URL = "devweb.tangem.com"
const val LOCALE_LANG_RU = "ru"
const val LOCALE_LANG_BY = "by"
const val LOCALE_LANG_EN = "en"
}
}

View file

@ -1,5 +1,6 @@
package com.tangem.feature.learn2earn.domain.api
import com.tangem.common.Provider
import com.tangem.domain.common.CardTypesResolver
import kotlinx.coroutines.flow.Flow
@ -12,7 +13,5 @@ interface Learn2earnDependencyProvider {
fun getCardTypeResolverFlow(): Flow<CardTypesResolver?>
fun getLocaleProvider(): () -> String
fun getWebViewAuthCredentialsProvider(): () -> String?
fun getWebViewAuthCredentialsProvider(): Provider<String?>
}

View file

@ -3,6 +3,7 @@ package com.tangem.feature.learn2earn.domain.di
import android.content.Context
import com.tangem.core.analytics.api.AnalyticsEventHandler
import com.tangem.core.featuretoggle.manager.FeatureTogglesManager
import com.tangem.data.common.locale.LocaleProvider
import com.tangem.datasource.demo.DemoModeDatasource
import com.tangem.feature.learn2earn.data.api.Learn2earnRepository
import com.tangem.feature.learn2earn.data.toggles.DefaultLearn2earnFeatureToggleManager
@ -45,8 +46,9 @@ internal class Learn2earnDomainModule {
repository: Learn2earnRepository,
dependencyProvider: Learn2earnDependencyProvider,
userWalletManager: UserWalletManager,
analyticsEventHandler: AnalyticsEventHandler,
derivationManager: DerivationManager,
localeProvider: LocaleProvider,
analyticsEventHandler: AnalyticsEventHandler,
demoModeDatasource: DemoModeDatasource,
dispatchers: AppCoroutineDispatcherProvider,
): Learn2earnInteractor {
@ -55,6 +57,7 @@ internal class Learn2earnDomainModule {
repository = repository,
userWalletManager = userWalletManager,
derivationManager = derivationManager,
localeProvider = localeProvider,
analytics = analyticsEventHandler,
demoModeDatasource = demoModeDatasource,
dependencyProvider = dependencyProvider,