feat: сеть (network) для крипто-холдингов

Свободное текстовое поле на холдинге — какой сети принадлежит конкретная
монета (Ethereum, Tron и т.д.), с редактированием прямо в таблице и
разбивкой % по сетям на отдельной вкладке. Помогает увидеть, что часть
стейблкоинов лежит на рискованных сетях и стоит перевести на безопасные.
This commit is contained in:
ZProger
2026-09-09 00:52:11 +03:00
parent 526bfe104d
commit c3047c6d6a
16 changed files with 421 additions and 13 deletions

View File

@@ -17,6 +17,7 @@ import {
useCryptoPortfolios,
useDeleteCryptoHolding,
useRefreshCryptoPrices,
useUpdateCryptoHolding,
useUpdateCryptoHoldingRisk,
} from "@/hooks/useCrypto";
import { getIntlLocale } from "@/lib/format";
@@ -46,6 +47,7 @@ export function CryptoPage() {
const refresh = useRefreshCryptoPrices();
const deleteHolding = useDeleteCryptoHolding();
const updateRisk = useUpdateCryptoHoldingRisk();
const updateHolding = useUpdateCryptoHolding();
const [addOpen, setAddOpen] = useState(false);
const [editingPortfolio, setEditingPortfolio] = useState<CryptoPortfolio | null>(null);
@@ -86,6 +88,10 @@ export function CryptoPage() {
updateRisk.mutate({ assetId: holding.asset_id, riskLevel });
}
function handleNetworkChange(holding: CryptoHolding, network: string | null) {
updateHolding.mutate({ assetId: holding.asset_id, input: { network } });
}
function handleEditTransaction(transaction: CryptoTransaction) {
setEditingTransaction(transaction);
setTradingHolding(historyHolding);
@@ -167,6 +173,7 @@ export function CryptoPage() {
onViewHistory={setHistoryHolding}
onDelete={handleDelete}
onRiskChange={handleRiskChange}
onNetworkChange={handleNetworkChange}
portfoliosById={portfolioFilter === null ? portfoliosById : undefined}
/>
</>