Skip to content
Draft
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
50 changes: 0 additions & 50 deletions Features/Assets/Package.resolved

This file was deleted.

2 changes: 2 additions & 0 deletions Features/Assets/Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ let package = Package(
.product(name: "AssetsService", package: "FeatureServices"),
.product(name: "TransactionsService", package: "FeatureServices"),
.product(name: "WalletsService", package: "FeatureServices"),
.product(name: "BalanceService", package: "FeatureServices"),
.product(name: "PriceService", package: "FeatureServices"),
.product(name: "BannerService", package: "FeatureServices"),
.product(name: "ChainService", package: "ChainServices"),
Expand All @@ -79,6 +80,7 @@ let package = Package(
.product(name: "PrimitivesTestKit", package: "Primitives"),
.product(name: "WalletsServiceTestKit", package: "FeatureServices"),
.product(name: "AssetsServiceTestKit", package: "FeatureServices"),
.product(name: "BalanceServiceTestKit", package: "FeatureServices"),
.product(name: "TransactionsServiceTestKit", package: "FeatureServices"),
.product(name: "PriceServiceTestKit", package: "FeatureServices"),
.product(name: "PriceAlertServiceTestKit", package: "FeatureServices"),
Expand Down
19 changes: 13 additions & 6 deletions Features/Assets/Sources/ViewModels/AssetSceneViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import ExplorerService
import AssetsService
import TransactionsService
import WalletsService
import BalanceService
import PriceService
import BannerService
import Formatters
Expand All @@ -21,7 +22,9 @@ import Store
@Observable
@MainActor
public final class AssetSceneViewModel: Sendable {
private let walletsService: WalletsService
private let assetsEnabler: any AssetsEnabler
private let assetSyncService: any AssetSyncServiceable
private let balanceService: BalanceService
private let assetsService: AssetsService
private let transactionsService: TransactionsService
private let priceObserverService: PriceObserverService
Expand Down Expand Up @@ -50,7 +53,9 @@ public final class AssetSceneViewModel: Sendable {
private var wallet: Wallet { walletModel.wallet }

public init(
walletsService: WalletsService,
assetsEnabler: any AssetsEnabler,
assetSyncService: any AssetSyncServiceable,
balanceService: BalanceService,
assetsService: AssetsService,
transactionsService: TransactionsService,
priceObserverService: PriceObserverService,
Expand All @@ -59,7 +64,9 @@ public final class AssetSceneViewModel: Sendable {
input: AssetSceneInput,
isPresentingSelectedAssetInput: Binding<SelectedAssetInput?>
) {
self.walletsService = walletsService
self.assetsEnabler = assetsEnabler
self.assetSyncService = assetSyncService
self.balanceService = balanceService
self.assetsService = assetsService
self.transactionsService = transactionsService
self.priceObserverService = priceObserverService
Expand Down Expand Up @@ -340,7 +347,7 @@ extension AssetSceneViewModel {
do {
let pinned = !assetData.metadata.isPinned
isPresentingToastMessage = .pin(asset.name, pinned: pinned)
try walletsService.setPinned(pinned, walletId: wallet.walletId, assetId: asset.id)
try balanceService.setPinned(pinned, walletId: wallet.walletId, assetId: asset.id)
if !assetData.metadata.isBalanceEnabled {
onSelectEnable()
}
Expand All @@ -353,7 +360,7 @@ extension AssetSceneViewModel {
Task {
let enabled = !assetData.metadata.isBalanceEnabled
do {
try await walletsService.enableAssets(walletId: wallet.walletId, assetIds: [asset.id], enabled: enabled)
try await assetsEnabler.enableAssets(walletId: wallet.walletId, assetIds: [asset.id], enabled: enabled)
isPresentingToastMessage = .showAsset(visible: enabled)
} catch {
debugLog("onSelectEnable error: \(error)")
Expand Down Expand Up @@ -445,7 +452,7 @@ extension AssetSceneViewModel {

private func updateWallet() async {
do {
async let updateAsset: () = try walletsService.updateAssets(
async let updateAsset: () = try assetSyncService.updateAssets(
walletId: walletModel.wallet.walletId,
assetIds: [assetModel.asset.id]
)
Expand Down
8 changes: 4 additions & 4 deletions Features/Assets/Sources/ViewModels/SelectAssetViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public final class SelectAssetViewModel {
let preferences: Preferences
let selectType: SelectAssetType
let searchService: AssetSearchService
let walletsService: WalletsService
let assetsEnabler: any AssetsEnabler
let priceAlertService: PriceAlertService
let activityService: ActivityService

Expand Down Expand Up @@ -51,7 +51,7 @@ public final class SelectAssetViewModel {
wallet: Wallet,
selectType: SelectAssetType,
searchService: AssetSearchService,
walletsService: WalletsService,
assetsEnabler: any AssetsEnabler,
priceAlertService: PriceAlertService,
activityService: ActivityService,
selectAssetAction: AssetAction = .none
Expand All @@ -60,7 +60,7 @@ public final class SelectAssetViewModel {
self.wallet = wallet
self.selectType = selectType
self.searchService = searchService
self.walletsService = walletsService
self.assetsEnabler = assetsEnabler
self.priceAlertService = priceAlertService
self.activityService = activityService
self.onSelectAssetAction = selectAssetAction
Expand Down Expand Up @@ -239,7 +239,7 @@ extension SelectAssetViewModel {
switch selectType {
case .manage:
do {
try await walletsService.enableAssets(walletId: wallet.walletId, assetIds: [assetId], enabled: enabled)
try await assetsEnabler.enableAssets(walletId: wallet.walletId, assetIds: [assetId], enabled: enabled)
} catch {
debugLog("SelectAssetViewModel handleAction error: \(error)")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ extension SelectAssetViewModel {
wallet: wallet,
selectType: selectType,
searchService: .mock(),
walletsService: .mock(),
assetsEnabler: .mock(),
priceAlertService: .mock(),
activityService: .mock()
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import Primitives
import PrimitivesTestKit
import WalletsServiceTestKit
import AssetsServiceTestKit
import BalanceServiceTestKit
import TransactionsServiceTestKit
import PriceServiceTestKit
import PriceAlertServiceTestKit
Expand Down Expand Up @@ -60,7 +61,9 @@ struct AssetSceneViewModelTests {
extension AssetSceneViewModel {
static func mock(_ assetData: AssetData = AssetData.mock()) -> AssetSceneViewModel {
let model = AssetSceneViewModel(
walletsService: .mock(),
assetsEnabler: .mock(),
assetSyncService: .mock(),
balanceService: .mock(),
assetsService: .mock(),
transactionsService: .mock(),
priceObserverService: .mock(),
Expand Down
1 change: 1 addition & 0 deletions Features/Settings/Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ let package = Package(
"GemstonePrimitives",
"Keystore",
.product(name: "WalletsService", package: "FeatureServices"),
.product(name: "WalletSessionService", package: "FeatureServices"),
.product(name: "BannerService", package: "FeatureServices"),
.product(name: "StakeService", package: "ChainServices"),
.product(name: "AssetsService", package: "FeatureServices"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,24 @@ import Primitives
import Localization
import Style
import Preferences
import WalletsService
import WalletSessionService
import PrimitivesComponents
import Components

@Observable
@MainActor
public final class SettingsViewModel {
private let walletId: WalletId
private let walletsService: WalletsService
private let walletSessionService: WalletSessionService
private let observablePrefereces: ObservablePreferences

public init(
walletId: WalletId,
walletsService: WalletsService,
walletSessionService: WalletSessionService,
observablePrefereces: ObservablePreferences
) {
self.walletId = walletId
self.walletsService = walletsService
self.walletSessionService = walletSessionService
self.observablePrefereces = observablePrefereces
}

Expand All @@ -37,7 +37,7 @@ public final class SettingsViewModel {

var walletsTitle: String { Localized.Wallets.title }
var walletsValue: String {
let count = (try? walletsService.walletsCount()) ?? .zero
let count = (try? walletSessionService.walletsCount()) ?? .zero
return "\(count)"
}
var walletsImage: AssetImage { AssetImage.image(Images.Settings.wallets) }
Expand All @@ -59,7 +59,7 @@ public final class SettingsViewModel {

var rewardsTitle: String { Localized.Rewards.title }
var rewardsImage: AssetImage { AssetImage.image(Images.Settings.gem) }
var showsRewards: Bool { walletsService.hasMulticoinWallet() }
var showsRewards: Bool { walletSessionService.hasMulticoinWallet() }

private let links: [SocialUrl] = [.x, .discord, .telegram, .gitHub, .youTube]
var linksViewModel: SocialLinksViewModel {
Expand Down
1 change: 1 addition & 0 deletions Features/Swap/Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ let package = Package(
.product(name: "ChainServiceTestKit", package: "ChainServices"),
.product(name: "GemAPITestKit", package: "GemAPI"),
.product(name: "StoreTestKit", package: "Store"),
.product(name: "PreferencesTestKit", package: "Preferences"),
"Swap"
]
)
Expand Down
10 changes: 5 additions & 5 deletions Features/Swap/Sources/ViewModels/SwapSceneViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public final class SwapSceneViewModel {
static let inputPercentSuggestions = [25, 50, 100].map { PercentageSuggestion(value: $0) }

public let wallet: Wallet
public let walletsService: WalletsService
public let assetSyncService: any AssetSyncServiceable

public var swapState: SwapState = .init()
public var isPresentingInfoSheet: SwapSheetType?
Expand Down Expand Up @@ -53,7 +53,7 @@ public final class SwapSceneViewModel {
public init(
preferences: Preferences = Preferences.standard,
input: SwapInput,
walletsService: WalletsService,
assetSyncService: any AssetSyncServiceable,
swapQuotesProvider: SwapQuotesProvidable,
swapQuoteDataProvider: any SwapQuoteDataProvidable,
onSwap: TransferDataAction = nil
Expand All @@ -63,7 +63,7 @@ public final class SwapSceneViewModel {
self.pairSelectorModel = pairSelectorModel
self.preferences = preferences
self.wallet = input.wallet
self.walletsService = walletsService
self.assetSyncService = assetSyncService

self.fromAssetQuery = ObservableQuery(AssetRequestOptional(walletId: input.wallet.walletId, assetId: pairSelectorModel.fromAssetId), initialValue: nil)
self.toAssetQuery = ObservableQuery(AssetRequestOptional(walletId: input.wallet.walletId, assetId: pairSelectorModel.toAssetId), initialValue: nil)
Expand Down Expand Up @@ -302,7 +302,7 @@ extension SwapSceneViewModel {

Task {
let assetIds = [fromAsset?.asset.id, toAsset?.asset.id].compactMap { $0 }
try await walletsService.addPrices(assetIds: assetIds)
try await assetSyncService.addPrices(assetIds: assetIds)
}
}

Expand Down Expand Up @@ -363,7 +363,7 @@ extension SwapSceneViewModel {

private func performUpdate(for assetIds: [AssetId]) async {
do {
try await walletsService.updateAssets(
try await assetSyncService.updateAssets(
walletId: wallet.walletId,
assetIds: assetIds
)
Expand Down
3 changes: 2 additions & 1 deletion Features/Swap/Tests/SwapTests/SwapSceneViewModelTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import enum Gemstone.SwapperError
import Keystore
import KeystoreTestKit
import Primitives
import PreferencesTestKit
@testable import Swap
@testable import Store

Expand Down Expand Up @@ -150,7 +151,7 @@ extension SwapSceneViewModel {
wallet: .mock(accounts: [.mock(chain: .ethereum)]),
pairSelector: SwapPairSelectorViewModel(fromAssetId: .mockEthereum(), toAssetId: nil)
),
walletsService: .mock(),
assetSyncService: .mock(),
swapQuotesProvider: SwapQuotesProvider(swapService: .mock(swapper: swapper)),
swapQuoteDataProvider: SwapQuoteDataProvider(keystore: LocalKeystore.mock(), swapService: .mock(swapper: swapper))
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public struct ConfirmServiceFactory {
public static func create(
keystore: any Keystore,
chainServiceFactory: any ChainServiceFactorable,
walletsService: WalletsService,
assetsEnabler: any AssetsEnabler,
scanService: ScanService,
balanceService: BalanceService,
priceService: PriceService,
Expand All @@ -44,7 +44,8 @@ public struct ConfirmServiceFactory {
transferExecutor: TransferExecutor(
signer: TransactionSigner(keystore: keystore),
chainService: chainService,
walletsService: walletsService,
assetsEnabler: assetsEnabler,
balanceService: balanceService,
transactionStateService: transactionStateService
),
keystore: keystore,
Expand Down
15 changes: 9 additions & 6 deletions Features/Transfer/Sources/Services/TransferExecutor.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// Copyright (c). Gem Wallet. All rights reserved.

import Blockchain
import BalanceService
import Foundation
import Primitives
import Signer
Expand All @@ -14,18 +15,21 @@ public protocol TransferExecutable: Sendable {
public struct TransferExecutor: TransferExecutable {
private let signer: any TransactionSigneable
private let chainService: any ChainServiceable
private let walletsService: WalletsService
private let assetsEnabler: any AssetsEnabler
private let balanceService: BalanceService
private let transactionStateService: TransactionStateService

public init(
signer: any TransactionSigneable,
chainService: any ChainServiceable,
walletsService: WalletsService,
assetsEnabler: any AssetsEnabler,
balanceService: BalanceService,
transactionStateService: TransactionStateService
) {
self.signer = signer
self.chainService = chainService
self.walletsService = walletsService
self.assetsEnabler = assetsEnabler
self.balanceService = balanceService
self.transactionStateService = transactionStateService
}

Expand Down Expand Up @@ -67,10 +71,9 @@ public struct TransferExecutor: TransferExecutable {

try transactionStateService.addTransactions(wallet: input.wallet, transactions: transactions)
Task {
let walletId = input.wallet.walletId
do {
try walletsService.addBalancesIfMissing(for: walletId, assetIds: assetIds, isEnabled: true)
try await walletsService.enableAssets(walletId: walletId, assetIds: assetIds, enabled: true)
try balanceService.addAssetsBalancesIfMissing(assetIds: assetIds, wallet: input.wallet, isEnabled: true)
try await assetsEnabler.enableAssets(walletId: input.wallet.walletId, assetIds: assetIds, enabled: true)
} catch {
debugLog("TransferExecutor post-transfer asset update error: \(error)")
}
Expand Down
Loading