diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/utils/DefaultUserWalletImageFetcher.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/utils/DefaultUserWalletImageFetcher.kt index d27eb2dc8e..f86073d09e 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/utils/DefaultUserWalletImageFetcher.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/utils/DefaultUserWalletImageFetcher.kt @@ -45,16 +45,16 @@ class DefaultUserWalletImageFetcher @Inject constructor( .map { allWallets -> allWallets.filter { (walletId, _) -> wallets.any { it.walletId == walletId } } } .distinctUntilChanged() - override fun walletImage(walletId: UserWalletId, size: ArtworkSize): Flow = flow { - val imagesFlow = getUserWalletUseCase.invokeFlow(walletId) - // emit Loading and wait wallet - .onEach { if (it.isLeft()) emit(UserWalletItemUM.ImageState.Loading) } - .filterIsInstance>() - .map { it.value } + override fun walletImage(walletId: UserWalletId, size: ArtworkSize): Flow = + getUserWalletUseCase.invokeFlow(walletId) + .transform { either -> + if (either.isLeft()) { + emit(UserWalletItemUM.ImageState.Loading) + } else if (either is Either.Right) { + emitAll(walletImage(either.value, size)) + } + } .distinctUntilChanged() - .flatMapLatest { wallet -> walletImage(wallet, size) } - emitAll(imagesFlow) - }.distinctUntilChanged() override fun walletImage(cardDTO: CardDTO, size: ArtworkSize): Flow = internalGetCardImage(