Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
7e910cd
Refactor balance privacy and header view actions
gemdev111 Jan 19, 2026
b1657af
Merge branch 'main' into perps_portf
gemdev111 Jan 20, 2026
ddbdfe5
Add Perpetual portfolio chart data support
gemdev111 Jan 20, 2026
ed783b6
Refactor chart components to primitives packages
gemdev111 Jan 20, 2026
db9bd3b
Add test kits and unit tests for chart and portfolio view models
gemdev111 Jan 21, 2026
533a0ef
Update PerpetualPortfolioSceneViewModelTests.swift
gemdev111 Jan 21, 2026
6d471c4
Merge branch 'main' into perps_portf
gemdev111 Jan 21, 2026
c6f85b3
Update core
gemdev111 Jan 21, 2026
59a66e5
Show value change instead of current value in portfolio chart
gemdev111 Jan 21, 2026
3d67c8e
Update tests
gemdev111 Jan 21, 2026
17873c4
Merge branch 'main' into perps_portf
gemdev111 Jan 21, 2026
cc1e996
Update core
gemdev111 Jan 21, 2026
d85de4f
Refactor PerpetualPortfolioChartData to PerpetualPortfolio
gemdev111 Jan 21, 2026
850e383
Refactor chart value handling and add portfolio stats
gemdev111 Jan 21, 2026
f7fab44
Refactor ChartView and add PulsingDotView
gemdev111 Jan 21, 2026
7c5bae3
Merge branch 'main' into perps_portf
gemdev111 Jan 22, 2026
59c9d5c
Update core
gemdev111 Jan 22, 2026
71480d8
Merge branch 'main' into perps_portf
gemdev111 Jan 22, 2026
ba0af13
Localize Perpetuals portfolio stats and chart labels
gemdev111 Jan 22, 2026
596961b
Add account summary to PerpetualPortfolio
gemdev111 Jan 22, 2026
d600536
Refactor portfolio data to use ChartDateValue
gemdev111 Jan 22, 2026
35a23cb
Update PerpetualService+TestKit.swift
gemdev111 Jan 22, 2026
27bca7d
Update core
gemdev111 Jan 22, 2026
00513fb
Update core
gemdev111 Jan 22, 2026
77b9d12
Refactor Perpetual portfolio and position updates to use address
gemdev111 Jan 22, 2026
ce5ff7c
Update core
gemdev111 Jan 22, 2026
4a6a6f8
Refactor to use Wallet.perpetualAddress extension
gemdev111 Jan 22, 2026
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
3 changes: 2 additions & 1 deletion Features/Assets/Sources/Scenes/AssetScene.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ public struct AssetScene: View {
Section { } header: {
WalletHeaderView(
model: model.assetHeaderModel,
isHideBalanceEnalbed: .constant(false),
isPrivacyEnabled: .constant(false),
balanceActionType: .none,
onHeaderAction: model.onSelectHeader,
onInfoAction: model.onSelectWalletHeaderInfo
)
Expand Down
2 changes: 0 additions & 2 deletions Features/Assets/Sources/ViewModels/AssetHeaderViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ struct AssetHeaderViewModel: Sendable {
}

extension AssetHeaderViewModel: HeaderViewModel {
var allowHiddenBalance: Bool { false }

var isWatchWallet: Bool {
walletModel.wallet.type == .view
}
Expand Down
25 changes: 4 additions & 21 deletions Features/MarketInsight/Sources/Scenes/ChartScene.swift
Original file line number Diff line number Diff line change
Expand Up @@ -22,27 +22,10 @@ public struct ChartScene: View {
public var body: some View {
List {
Section { } header: {
VStack {
VStack {
switch model.state {
case .noData:
StateEmptyView(title: model.emptyTitle)
case .loading:
LoadingView()
case .data(let chartModel):
ChartView(model: chartModel)
case .error(let error):
StateEmptyView(
title: Localized.Errors.errorOccured,
description: error.networkOrNoDataDescription,
image: Images.ErrorConent.error
)
}
}
.frame(height: 320)

PeriodSelectorView(selectedPeriod: $model.currentPeriod)
}
ChartStateView(
state: model.state,
selectedPeriod: $model.selectedPeriod
)
}
.cleanListRow()

Expand Down
13 changes: 0 additions & 13 deletions Features/MarketInsight/Sources/Types/ChartDateValue.swift

This file was deleted.

38 changes: 0 additions & 38 deletions Features/MarketInsight/Sources/ViewModels/ChartPriceModel.swift

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import PriceService
import Preferences
import PriceAlertService
import SwiftUI
import Formatters

@MainActor
@Observable
Expand All @@ -25,7 +26,7 @@ public final class ChartSceneViewModel {
private let preferences: Preferences = .standard

var state: StateViewType<ChartValuesViewModel> = .loading
var currentPeriod: ChartPeriod {
var selectedPeriod: ChartPeriod {
didSet {
Task { await fetch() }
}
Expand All @@ -41,7 +42,7 @@ public final class ChartSceneViewModel {
var emptyTitle: String { Localized.Common.notAvailable }
var errorTitle: String { Localized.Errors.errorOccured }
var hasMarketData: Bool { priceData?.market != nil }

var priceAlertsViewModel: PriceAlertsViewModel { PriceAlertsViewModel(priceAlerts: priceData?.priceAlerts ?? []) }
var showPriceAlerts: Bool { priceAlertsViewModel.hasPriceAlerts && isPriceAvailable }
var isPriceAvailable: Bool { PriceViewModel(price: priceData?.price, currencyCode: preferences.currency).isPriceAvailable }
Expand All @@ -60,7 +61,7 @@ public final class ChartSceneViewModel {
self.assetModel = assetModel
self.priceAlertService = priceAlertService
self.walletId = walletId
self.currentPeriod = currentPeriod
self.selectedPeriod = currentPeriod
self.priceRequest = PriceRequest(assetId: assetModel.asset.id)
self.isPresentingSetPriceAlert = isPresentingSetPriceAlert
}
Expand All @@ -79,7 +80,7 @@ extension ChartSceneViewModel {
do {
let values = try await service.getCharts(
assetId: assetModel.asset.id,
period: currentPeriod
period: selectedPeriod
)
if let market = values.market {
try priceService.updateMarketPrice(assetId: assetModel.asset.id, market: market, currency: preferences.currency)
Expand All @@ -90,13 +91,19 @@ extension ChartSceneViewModel {
var charts = values.prices.map {
ChartDateValue(date: Date(timeIntervalSince1970: TimeInterval($0.timestamp)), value: Double($0.value) * rate)
}

if let price = price, let last = charts.last, price.updatedAt > last.date {
charts.append(ChartDateValue(date: .now, value: price.price))
}

let chartValues = try ChartValues.from(charts: charts)
let model = ChartValuesViewModel(period: currentPeriod, price: price?.mapToPrice(), values: chartValues)
let formatter = CurrencyFormatter(currencyCode: preferences.currency)
let model = ChartValuesViewModel(
period: selectedPeriod,
price: price?.mapToPrice(),
values: chartValues,
formatter: formatter
)
state = .data(model)
} catch {
state = .error(error)
Expand Down

This file was deleted.

Loading
Loading