Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.gemwallet.android.data.coordinators.asset

import com.gemwallet.android.application.assets.coordinators.GetHideBalancesState
import com.gemwallet.android.data.repositories.config.UserConfig
import kotlinx.coroutines.flow.Flow

class GetHideBalancesStateImpl(
private val userConfig: UserConfig,
) : GetHideBalancesState {

override fun invoke(): Flow<Boolean> {
return userConfig.isHideBalances()
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.gemwallet.android.data.coordinators.asset

import com.gemwallet.android.application.assets.coordinators.GetImportInProgress
import com.gemwallet.android.application.wallet_import.coordinators.GetImportWalletState
import com.gemwallet.android.application.wallet_import.values.ImportWalletState
import com.gemwallet.android.data.repositories.session.SessionRepository
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.mapLatest

@OptIn(ExperimentalCoroutinesApi::class)
class GetImportInProgressImpl(
private val sessionRepository: SessionRepository,
private val getImportWalletState: GetImportWalletState,
) : GetImportInProgress {

override fun invoke(): Flow<Boolean> {
return sessionRepository.session()
.filterNotNull()
.flatMapLatest { session ->
getImportWalletState
.getImportState(session.wallet.id)
.mapLatest { it == ImportWalletState.Importing }
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.gemwallet.android.data.coordinators.asset

import com.gemwallet.android.application.assets.coordinators.GetShowWelcomeBanner
import com.gemwallet.android.data.repositories.config.UserConfig
import com.gemwallet.android.data.repositories.session.SessionRepository
import com.wallet.core.primitives.WalletSource
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.flatMapLatest

@OptIn(ExperimentalCoroutinesApi::class)
class GetShowWelcomeBannerImpl(
private val sessionRepository: SessionRepository,
private val userConfig: UserConfig,
) : GetShowWelcomeBanner {

override fun invoke(isWalletEmpty: Flow<Boolean>): Flow<Boolean> {
return sessionRepository.session()
.filterNotNull()
.flatMapLatest { session ->
combine(isWalletEmpty, userConfig.isWelcomeBannerHidden(session.wallet.id)) { isEmpty, isHidden ->
val created = session.wallet.source == WalletSource.Create
isEmpty && created && !isHidden
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.gemwallet.android.data.coordinators.asset

import com.gemwallet.android.application.assets.coordinators.HideAsset
import com.gemwallet.android.data.repositories.assets.AssetsRepository
import com.gemwallet.android.data.repositories.session.SessionRepository
import com.gemwallet.android.ext.getAccount
import com.wallet.core.primitives.AssetId

class HideAssetImpl(
private val sessionRepository: SessionRepository,
private val assetsRepository: AssetsRepository,
) : HideAsset {

override suspend fun invoke(assetId: AssetId) {
val session = sessionRepository.session().value ?: return
val account = session.wallet.getAccount(assetId.chain) ?: return
assetsRepository.switchVisibility(session.wallet.id, account, assetId, false)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.gemwallet.android.data.coordinators.asset

import com.gemwallet.android.application.assets.coordinators.HideWelcomeBanner
import com.gemwallet.android.data.repositories.config.UserConfig
import com.gemwallet.android.data.repositories.session.SessionRepository

class HideWelcomeBannerImpl(
private val sessionRepository: SessionRepository,
private val userConfig: UserConfig,
) : HideWelcomeBanner {

override suspend fun invoke() {
val walletId = sessionRepository.session().value?.wallet?.id ?: return
userConfig.hideWelcomeBanner(walletId)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.gemwallet.android.data.coordinators.asset

import com.gemwallet.android.application.assets.coordinators.SyncAssets
import com.gemwallet.android.data.repositories.assets.AssetsRepository

class SyncAssetsImpl(
private val assetsRepository: AssetsRepository,
) : SyncAssets {

override suspend fun invoke() {
assetsRepository.sync()
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.gemwallet.android.data.coordinators.asset

import com.gemwallet.android.application.assets.coordinators.ToggleAssetPin
import com.gemwallet.android.data.repositories.assets.AssetsRepository
import com.gemwallet.android.data.repositories.session.SessionRepository
import com.wallet.core.primitives.AssetId

class ToggleAssetPinImpl(
private val sessionRepository: SessionRepository,
private val assetsRepository: AssetsRepository,
) : ToggleAssetPin {

override suspend fun invoke(assetId: AssetId) {
val session = sessionRepository.session().value ?: return
assetsRepository.togglePin(session.wallet.id, assetId)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.gemwallet.android.data.coordinators.asset

import com.gemwallet.android.application.assets.coordinators.ToggleHideBalances
import com.gemwallet.android.data.repositories.config.UserConfig

class ToggleHideBalancesImpl(
private val userConfig: UserConfig,
) : ToggleHideBalances {

override suspend fun invoke() {
userConfig.hideBalances()
}
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,35 @@
package com.gemwallet.android.data.coordinators.di

import com.gemwallet.android.application.assets.coordinators.PrefetchAssets
import com.gemwallet.android.application.assets.coordinators.GetAssetChartData
import com.gemwallet.android.application.assets.coordinators.GetActiveAssetsInfo
import com.gemwallet.android.application.assets.coordinators.GetAssetChartData
import com.gemwallet.android.application.assets.coordinators.GetHideBalancesState
import com.gemwallet.android.application.assets.coordinators.GetImportInProgress
import com.gemwallet.android.application.assets.coordinators.GetShowWelcomeBanner
import com.gemwallet.android.application.assets.coordinators.GetWalletSummary
import com.gemwallet.android.application.assets.coordinators.HideAsset
import com.gemwallet.android.application.assets.coordinators.HideWelcomeBanner
import com.gemwallet.android.application.assets.coordinators.PrefetchAssets
import com.gemwallet.android.application.assets.coordinators.SearchAssets
import com.gemwallet.android.application.assets.coordinators.SyncAssetInfo
import com.gemwallet.android.application.assets.coordinators.GetWalletSummary
import com.gemwallet.android.application.assets.coordinators.SyncAssets
import com.gemwallet.android.application.assets.coordinators.ToggleAssetPin
import com.gemwallet.android.application.assets.coordinators.ToggleHideBalances
import com.gemwallet.android.application.wallet_import.coordinators.GetImportWalletState
import com.gemwallet.android.cases.banners.HasMultiSign
import com.gemwallet.android.data.coordinators.asset.GetAssetChartDataImpl
import com.gemwallet.android.data.coordinators.asset.PrefetchAssetsImpl
import com.gemwallet.android.data.coordinators.asset.GetActiveAssetsInfoImpl
import com.gemwallet.android.data.coordinators.asset.GetAssetChartDataImpl
import com.gemwallet.android.data.coordinators.asset.GetHideBalancesStateImpl
import com.gemwallet.android.data.coordinators.asset.GetImportInProgressImpl
import com.gemwallet.android.data.coordinators.asset.GetShowWelcomeBannerImpl
import com.gemwallet.android.data.coordinators.asset.GetWalletSummaryImpl
import com.gemwallet.android.data.coordinators.asset.HideAssetImpl
import com.gemwallet.android.data.coordinators.asset.HideWelcomeBannerImpl
import com.gemwallet.android.data.coordinators.asset.PrefetchAssetsImpl
import com.gemwallet.android.data.coordinators.asset.SearchAssetsImpl
import com.gemwallet.android.data.coordinators.asset.SyncAssetInfoImpl
import com.gemwallet.android.data.coordinators.asset.SyncAssetsImpl
import com.gemwallet.android.data.coordinators.asset.ToggleAssetPinImpl
import com.gemwallet.android.data.coordinators.asset.ToggleHideBalancesImpl
import com.gemwallet.android.data.repositories.assets.AssetsRepository
import com.gemwallet.android.data.repositories.config.UserConfig
import com.gemwallet.android.data.repositories.session.SessionRepository
Expand Down Expand Up @@ -85,4 +102,57 @@ object AssetModule {
assetsRepository = assetsRepository,
streamSubscriptionService = streamSubscriptionService,
)

@Provides
@Singleton
fun provideSyncAssets(
assetsRepository: AssetsRepository,
): SyncAssets = SyncAssetsImpl(assetsRepository)

@Provides
@Singleton
fun provideHideAsset(
sessionRepository: SessionRepository,
assetsRepository: AssetsRepository,
): HideAsset = HideAssetImpl(sessionRepository, assetsRepository)

@Provides
@Singleton
fun provideToggleAssetPin(
sessionRepository: SessionRepository,
assetsRepository: AssetsRepository,
): ToggleAssetPin = ToggleAssetPinImpl(sessionRepository, assetsRepository)

@Provides
@Singleton
fun provideGetShowWelcomeBanner(
sessionRepository: SessionRepository,
userConfig: UserConfig,
): GetShowWelcomeBanner = GetShowWelcomeBannerImpl(sessionRepository, userConfig)

@Provides
@Singleton
fun provideHideWelcomeBanner(
sessionRepository: SessionRepository,
userConfig: UserConfig,
): HideWelcomeBanner = HideWelcomeBannerImpl(sessionRepository, userConfig)

@Provides
@Singleton
fun provideGetHideBalancesState(
userConfig: UserConfig,
): GetHideBalancesState = GetHideBalancesStateImpl(userConfig)

@Provides
@Singleton
fun provideToggleHideBalances(
userConfig: UserConfig,
): ToggleHideBalances = ToggleHideBalancesImpl(userConfig)

@Provides
@Singleton
fun provideGetImportInProgress(
sessionRepository: SessionRepository,
getImportWalletState: GetImportWalletState,
): GetImportInProgress = GetImportInProgressImpl(sessionRepository, getImportWalletState)
}
1 change: 0 additions & 1 deletion android/features/assets/viewmodels/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ android {
dependencies {
api(project(":ui-models"))
implementation(project(":ui"))
implementation(project(":data:repositories"))

implementation(libs.hilt.android)
ksp(libs.hilt.compiler)
Expand Down
Loading