Updated on 2026-08-14

This commit is contained in:
Tangem 2024-12-03 15:43:15 +05:00
parent caf5b6fae7
commit f2dfe2f8bc
21 changed files with 326 additions and 6 deletions

View file

@ -44,6 +44,8 @@ import com.tangem.domain.apptheme.model.AppThemeMode
import com.tangem.domain.card.ScanCardUseCase
import com.tangem.domain.card.repository.CardRepository
import com.tangem.domain.card.repository.CardSdkConfigRepository
import com.tangem.domain.settings.SetGooglePayAvailabilityUseCase
import com.tangem.domain.settings.SetGoogleServicesAvailabilityUseCase
import com.tangem.domain.settings.ShouldInitiallyAskPermissionUseCase
import com.tangem.domain.settings.repositories.SettingsRepository
import com.tangem.domain.staking.SendUnsubmittedHashesUseCase
@ -70,6 +72,7 @@ import com.tangem.tap.common.SnackbarHandler
import com.tangem.tap.common.apptheme.MutableAppThemeModeHolder
import com.tangem.tap.common.extensions.dispatchNavigationAction
import com.tangem.tap.common.extensions.showFragmentAllowingStateLoss
import com.tangem.google.GoogleServicesHelper
import com.tangem.tap.common.redux.NotificationsHandler
import com.tangem.tap.domain.walletconnect2.domain.WalletConnectInteractor
import com.tangem.tap.features.intentHandler.IntentProcessor
@ -83,6 +86,7 @@ import com.tangem.tap.proxy.AppStateHolder
import com.tangem.tap.proxy.redux.DaggerGraphAction
import com.tangem.tap.routing.RoutingComponent
import com.tangem.tap.routing.configurator.AppRouterConfig
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import com.tangem.utils.coroutines.FeatureCoroutineExceptionHandler
import com.tangem.wallet.R
import com.tangem.wallet.databinding.ActivityMainBinding
@ -195,6 +199,15 @@ class MainActivity : AppCompatActivity(), SnackbarHandler, ActivityResultCallbac
@Inject
lateinit var onboardingV2FeatureToggles: OnboardingV2FeatureToggles
@Inject
lateinit var setGoogleServicesAvailabilityUseCase: SetGoogleServicesAvailabilityUseCase
@Inject
lateinit var setGooglePayAvailabilityUseCase: SetGooglePayAvailabilityUseCase
@Inject
lateinit var dispatchers: CoroutineDispatcherProvider
internal val viewModel: MainViewModel by viewModels()
private lateinit var appThemeModeFlow: SharedFlow<AppThemeMode>
@ -244,6 +257,7 @@ class MainActivity : AppCompatActivity(), SnackbarHandler, ActivityResultCallbac
observeStateUpdates()
observePolkadotAccountHealthCheck()
sendStakingUnsubmittedHashes()
checkGoogleServicesAvailability()
if (intent != null) {
deepLinksRegistry.launch(intent)
@ -605,6 +619,22 @@ class MainActivity : AppCompatActivity(), SnackbarHandler, ActivityResultCallbac
}
}
private fun checkGoogleServicesAvailability() {
val isGoogleServicesAvailable = GoogleServicesHelper.checkGoogleServicesAvailability(this)
lifecycleScope.launch {
setGoogleServicesAvailabilityUseCase(isGoogleServicesAvailable)
if (isGoogleServicesAvailable) {
val paymentsClient = GoogleServicesHelper.createPaymentsClient(this@MainActivity)
val isGooglePayAvailable = GoogleServicesHelper.checkGooglePayAvailability(paymentsClient)
setGooglePayAvailabilityUseCase(isGooglePayAvailable)
} else {
setGooglePayAvailabilityUseCase(false)
}
}
}
companion object {
private const val APP_THEME_LOAD_TIMEOUT = 2
}

View file

@ -4,6 +4,7 @@ import com.tangem.domain.onramp.*
import com.tangem.domain.onramp.repositories.OnrampErrorResolver
import com.tangem.domain.onramp.repositories.OnrampRepository
import com.tangem.domain.onramp.repositories.OnrampTransactionRepository
import com.tangem.domain.settings.repositories.SettingsRepository
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
@ -123,8 +124,14 @@ internal object OnrampDomainModule {
@Provides
@Singleton
fun provideGetOnrampQuotesUseCase(onrampRepository: OnrampRepository): GetOnrampQuotesUseCase {
return GetOnrampQuotesUseCase(onrampRepository)
fun provideGetOnrampQuotesUseCase(
settingsRepository: SettingsRepository,
onrampRepository: OnrampRepository,
): GetOnrampQuotesUseCase {
return GetOnrampQuotesUseCase(
settingsRepository = settingsRepository,
repository = onrampRepository,
)
}
@Provides

View file

@ -226,4 +226,36 @@ internal object SettingsDomainModule {
fun provideGetUserCountryCodeUseCase(settingsRepository: SettingsRepository): GetUserCountryUseCase {
return GetUserCountryUseCase(settingsRepository)
}
// region Google services availability
@Provides
@Singleton
fun provideSetGoogleServicesAvailabilityUseCase(
settingsRepository: SettingsRepository,
): SetGoogleServicesAvailabilityUseCase {
return SetGoogleServicesAvailabilityUseCase(settingsRepository)
}
@Provides
@Singleton
fun provideIsGoogleServicesAvailableUseCase(
settingsRepository: SettingsRepository,
): IsGoogleServicesAvailableUseCase {
return IsGoogleServicesAvailableUseCase(settingsRepository)
}
@Provides
@Singleton
fun provideSetGooglePayAvailabilityUseCase(
settingsRepository: SettingsRepository,
): SetGooglePayAvailabilityUseCase {
return SetGooglePayAvailabilityUseCase(settingsRepository)
}
@Provides
@Singleton
fun provideIsGooglePayAvailableUseCase(settingsRepository: SettingsRepository): IsGooglePayAvailableUseCase {
return IsGooglePayAvailableUseCase(settingsRepository)
}
// endregion
}