feat: 更新钱包状态管理,优化资产获取逻辑,支持资金和交易账户的分离
This commit is contained in:
@@ -33,7 +33,7 @@
|
|||||||
"@elysiajs/eden": "^1.4.5",
|
"@elysiajs/eden": "^1.4.5",
|
||||||
"@ionic/vue": "^8.7.11",
|
"@ionic/vue": "^8.7.11",
|
||||||
"@ionic/vue-router": "^8.7.11",
|
"@ionic/vue-router": "^8.7.11",
|
||||||
"@riwa/api-types": "http://192.168.1.27:9527/api/riwa-api-types-0.0.61.tgz",
|
"@riwa/api-types": "http://192.168.1.27:9527/api/riwa-api-types-0.0.63.tgz",
|
||||||
"@tailwindcss/vite": "^4.1.18",
|
"@tailwindcss/vite": "^4.1.18",
|
||||||
"@vee-validate/yup": "^4.15.1",
|
"@vee-validate/yup": "^4.15.1",
|
||||||
"@vueuse/core": "^14.1.0",
|
"@vueuse/core": "^14.1.0",
|
||||||
@@ -60,6 +60,7 @@
|
|||||||
"@iconify-json/icon-park-outline": "^1.2.4",
|
"@iconify-json/icon-park-outline": "^1.2.4",
|
||||||
"@iconify-json/material-icon-theme": "^1.2.44",
|
"@iconify-json/material-icon-theme": "^1.2.44",
|
||||||
"@iconify-json/material-symbols": "^1.2.50",
|
"@iconify-json/material-symbols": "^1.2.50",
|
||||||
|
"@iconify-json/solar": "^1.2.5",
|
||||||
"@iconify-json/tdesign": "^1.2.11",
|
"@iconify-json/tdesign": "^1.2.11",
|
||||||
"@iconify/vue": "^5.0.0",
|
"@iconify/vue": "^5.0.0",
|
||||||
"@ionic/cli": "^7.2.1",
|
"@ionic/cli": "^7.2.1",
|
||||||
|
|||||||
22
pnpm-lock.yaml
generated
22
pnpm-lock.yaml
generated
@@ -57,8 +57,8 @@ importers:
|
|||||||
specifier: ^8.7.11
|
specifier: ^8.7.11
|
||||||
version: 8.7.11(@stencil/core@4.39.0)(vue-router@4.6.3(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3))
|
version: 8.7.11(@stencil/core@4.39.0)(vue-router@4.6.3(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3))
|
||||||
'@riwa/api-types':
|
'@riwa/api-types':
|
||||||
specifier: http://192.168.1.27:9527/api/riwa-api-types-0.0.61.tgz
|
specifier: http://192.168.1.27:9527/api/riwa-api-types-0.0.63.tgz
|
||||||
version: http://192.168.1.27:9527/api/riwa-api-types-0.0.61.tgz(@elysiajs/eden@1.4.5(elysia@1.4.18(@sinclair/typebox@0.34.41)(exact-mirror@0.2.5(@sinclair/typebox@0.34.41))(file-type@21.1.1)(openapi-types@12.1.3)(typescript@5.9.3)))
|
version: http://192.168.1.27:9527/api/riwa-api-types-0.0.63.tgz(@elysiajs/eden@1.4.5(elysia@1.4.18(@sinclair/typebox@0.34.41)(exact-mirror@0.2.5(@sinclair/typebox@0.34.41))(file-type@21.1.1)(openapi-types@12.1.3)(typescript@5.9.3)))
|
||||||
'@tailwindcss/vite':
|
'@tailwindcss/vite':
|
||||||
specifier: ^4.1.18
|
specifier: ^4.1.18
|
||||||
version: 4.1.18(vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))
|
version: 4.1.18(vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))
|
||||||
@@ -132,6 +132,9 @@ importers:
|
|||||||
'@iconify-json/material-symbols':
|
'@iconify-json/material-symbols':
|
||||||
specifier: ^1.2.50
|
specifier: ^1.2.50
|
||||||
version: 1.2.50
|
version: 1.2.50
|
||||||
|
'@iconify-json/solar':
|
||||||
|
specifier: ^1.2.5
|
||||||
|
version: 1.2.5
|
||||||
'@iconify-json/tdesign':
|
'@iconify-json/tdesign':
|
||||||
specifier: ^1.2.11
|
specifier: ^1.2.11
|
||||||
version: 1.2.11
|
version: 1.2.11
|
||||||
@@ -1210,6 +1213,9 @@ packages:
|
|||||||
'@iconify-json/material-symbols@1.2.50':
|
'@iconify-json/material-symbols@1.2.50':
|
||||||
resolution: {integrity: sha512-71tjHR70h46LHtBFab3fAd2V/wPTO7JMV5lKnRn3IcF303LaFgAlO0BZeTJDcmCv9d0snRZmnoLZAJVD7/eisw==}
|
resolution: {integrity: sha512-71tjHR70h46LHtBFab3fAd2V/wPTO7JMV5lKnRn3IcF303LaFgAlO0BZeTJDcmCv9d0snRZmnoLZAJVD7/eisw==}
|
||||||
|
|
||||||
|
'@iconify-json/solar@1.2.5':
|
||||||
|
resolution: {integrity: sha512-WMAiNwchU8zhfrySww6KQBRIBbsQ6SvgIu2yA+CHGyMima/0KQwT5MXogrZPJGoQF+1Ye3Qj6K+1CiyNn3YkoA==}
|
||||||
|
|
||||||
'@iconify-json/tdesign@1.2.11':
|
'@iconify-json/tdesign@1.2.11':
|
||||||
resolution: {integrity: sha512-bhIDvRGFve+n8Q06PHeviW5X9pRpXzc/STus+Eq7A6HusaAYPzoti/Bp92Wzq/y6ZLe3Z5LC+6YbUMR1Jerg6Q==}
|
resolution: {integrity: sha512-bhIDvRGFve+n8Q06PHeviW5X9pRpXzc/STus+Eq7A6HusaAYPzoti/Bp92Wzq/y6ZLe3Z5LC+6YbUMR1Jerg6Q==}
|
||||||
|
|
||||||
@@ -1374,9 +1380,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==}
|
resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==}
|
||||||
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
|
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
|
||||||
|
|
||||||
'@riwa/api-types@http://192.168.1.27:9527/api/riwa-api-types-0.0.61.tgz':
|
'@riwa/api-types@http://192.168.1.27:9527/api/riwa-api-types-0.0.63.tgz':
|
||||||
resolution: {tarball: http://192.168.1.27:9527/api/riwa-api-types-0.0.61.tgz}
|
resolution: {tarball: http://192.168.1.27:9527/api/riwa-api-types-0.0.63.tgz}
|
||||||
version: 0.0.61
|
version: 0.0.63
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@elysiajs/eden': ^1.4.5
|
'@elysiajs/eden': ^1.4.5
|
||||||
|
|
||||||
@@ -6193,6 +6199,10 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@iconify/types': 2.0.0
|
'@iconify/types': 2.0.0
|
||||||
|
|
||||||
|
'@iconify-json/solar@1.2.5':
|
||||||
|
dependencies:
|
||||||
|
'@iconify/types': 2.0.0
|
||||||
|
|
||||||
'@iconify-json/tdesign@1.2.11':
|
'@iconify-json/tdesign@1.2.11':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@iconify/types': 2.0.0
|
'@iconify/types': 2.0.0
|
||||||
@@ -6489,7 +6499,7 @@ snapshots:
|
|||||||
|
|
||||||
'@pkgr/core@0.2.9': {}
|
'@pkgr/core@0.2.9': {}
|
||||||
|
|
||||||
'@riwa/api-types@http://192.168.1.27:9527/api/riwa-api-types-0.0.61.tgz(@elysiajs/eden@1.4.5(elysia@1.4.18(@sinclair/typebox@0.34.41)(exact-mirror@0.2.5(@sinclair/typebox@0.34.41))(file-type@21.1.1)(openapi-types@12.1.3)(typescript@5.9.3)))':
|
'@riwa/api-types@http://192.168.1.27:9527/api/riwa-api-types-0.0.63.tgz(@elysiajs/eden@1.4.5(elysia@1.4.18(@sinclair/typebox@0.34.41)(exact-mirror@0.2.5(@sinclair/typebox@0.34.41))(file-type@21.1.1)(openapi-types@12.1.3)(typescript@5.9.3)))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@elysiajs/eden': 1.4.5(elysia@1.4.18(@sinclair/typebox@0.34.41)(exact-mirror@0.2.5(@sinclair/typebox@0.34.41))(file-type@21.1.1)(openapi-types@12.1.3)(typescript@5.9.3))
|
'@elysiajs/eden': 1.4.5(elysia@1.4.18(@sinclair/typebox@0.34.41)(exact-mirror@0.2.5(@sinclair/typebox@0.34.41))(file-type@21.1.1)(openapi-types@12.1.3)(typescript@5.9.3))
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,9 @@ export type TreatyBody<T> = T extends (...args: any[]) => any
|
|||||||
|
|
||||||
export type DepositFiatData = Treaty.Data<typeof client.api.deposit.fiat.post>;
|
export type DepositFiatData = Treaty.Data<typeof client.api.deposit.fiat.post>;
|
||||||
|
|
||||||
export type BalancesData = Treaty.Data<typeof client.api.asset.balances.get>;
|
export type BalancesData = Treaty.Data<typeof client.api.wallet.balances.get>;
|
||||||
|
|
||||||
|
export type TotalAssetValue = Treaty.Data<typeof client.api.wallet.total_value.get>;
|
||||||
|
|
||||||
export type WithdrawBody = Omit<Parameters<typeof client.api.withdraw.post>[0], "assetCode" | "withdrawMethod"> & {
|
export type WithdrawBody = Omit<Parameters<typeof client.api.withdraw.post>[0], "assetCode" | "withdrawMethod"> & {
|
||||||
assetCode: AssetCodeEnum;
|
assetCode: AssetCodeEnum;
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ const emit = defineEmits<{
|
|||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
|
||||||
const walletStore = useWalletStore();
|
const walletStore = useWalletStore();
|
||||||
const { balances } = storeToRefs(walletStore);
|
const { fundingBalances } = storeToRefs(walletStore);
|
||||||
const currentUSDTBalance = computed(() => balances.value[0].available);
|
const currentUSDTBalance = computed(() => fundingBalances.value[0].available);
|
||||||
|
|
||||||
const num = ref<number | null>(null);
|
const num = ref<number | null>(null);
|
||||||
|
|
||||||
|
|||||||
@@ -1,36 +1,55 @@
|
|||||||
import type { BalancesData, BankAccountsData, SupportBanksData } from "@/api/types";
|
import type { BalancesData, BankAccountsData, SupportBanksData, TotalAssetValue } from "@/api/types";
|
||||||
import { defineStore } from "pinia";
|
import { defineStore } from "pinia";
|
||||||
import { client, safeClient } from "@/api";
|
import { client, safeClient } from "@/api";
|
||||||
|
|
||||||
interface State {
|
interface State {
|
||||||
balances: BalancesData;
|
totalAssetValue: TotalAssetValue;
|
||||||
|
fundingBalances: BalancesData;
|
||||||
|
tradingBalances: BalancesData;
|
||||||
bankAccounts: BankAccountsData["data"];
|
bankAccounts: BankAccountsData["data"];
|
||||||
supportBanks: SupportBanksData["data"];
|
supportBanks: SupportBanksData["data"];
|
||||||
}
|
}
|
||||||
|
|
||||||
export const useWalletStore = defineStore("wallet", () => {
|
export const useWalletStore = defineStore("wallet", () => {
|
||||||
const state = reactive<State>({
|
const state = reactive<State>({
|
||||||
balances: [],
|
totalAssetValue: {
|
||||||
|
fundingValueUsd: "0",
|
||||||
|
tradingValueUsd: "0",
|
||||||
|
totalValueUsd: "0",
|
||||||
|
},
|
||||||
|
fundingBalances: [],
|
||||||
|
tradingBalances: [],
|
||||||
bankAccounts: [],
|
bankAccounts: [],
|
||||||
supportBanks: [],
|
supportBanks: [],
|
||||||
});
|
});
|
||||||
|
|
||||||
async function initializeWallet() {
|
async function initializeWallet() {
|
||||||
updateBalances();
|
syncTotalAssetValue();
|
||||||
updateBankAccounts();
|
syncFundingBalances();
|
||||||
updateSupportBanks();
|
syncTradingBalances();
|
||||||
|
syncBankAccounts();
|
||||||
}
|
}
|
||||||
|
|
||||||
async function updateBalances(data?: BalancesData) {
|
async function syncTotalAssetValue() {
|
||||||
if (data) {
|
const { data } = await safeClient(() => client.api.wallet.total_value.get(), { silent: true });
|
||||||
state.balances = data;
|
if (data.value)
|
||||||
return;
|
state.totalAssetValue = data.value;
|
||||||
}
|
}
|
||||||
const { data: balances } = await safeClient(() => client.api.wallet.balances.get(), { silent: true });
|
async function syncFundingBalances() {
|
||||||
state.balances = balances.value || [];
|
const { data: balances } = await safeClient(() => client.api.wallet.balances.get({
|
||||||
|
query: { accountType: "funding" },
|
||||||
|
}), { silent: true });
|
||||||
|
state.fundingBalances = balances.value || [];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function updateBankAccounts(data?: BankAccountsData["data"]) {
|
async function syncTradingBalances() {
|
||||||
|
const { data: balances } = await safeClient(() => client.api.wallet.balances.get({
|
||||||
|
query: { accountType: "trading" },
|
||||||
|
}), { silent: true });
|
||||||
|
state.tradingBalances = balances.value || [];
|
||||||
|
}
|
||||||
|
|
||||||
|
async function syncBankAccounts(data?: BankAccountsData["data"]) {
|
||||||
if (data) {
|
if (data) {
|
||||||
state.bankAccounts = data;
|
state.bankAccounts = data;
|
||||||
return;
|
return;
|
||||||
@@ -39,7 +58,7 @@ export const useWalletStore = defineStore("wallet", () => {
|
|||||||
state.bankAccounts = bankAccounts.value?.data || [];
|
state.bankAccounts = bankAccounts.value?.data || [];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function updateSupportBanks() {
|
async function syncSupportBanks() {
|
||||||
const { data: banks } = await safeClient(() => client.api.bank_account.banks.get(), { silent: true });
|
const { data: banks } = await safeClient(() => client.api.bank_account.banks.get(), { silent: true });
|
||||||
state.supportBanks = banks.value?.data || [];
|
state.supportBanks = banks.value?.data || [];
|
||||||
}
|
}
|
||||||
@@ -47,8 +66,9 @@ export const useWalletStore = defineStore("wallet", () => {
|
|||||||
return {
|
return {
|
||||||
...toRefs(state),
|
...toRefs(state),
|
||||||
initializeWallet,
|
initializeWallet,
|
||||||
updateBalances,
|
syncFundingBalances,
|
||||||
updateBankAccounts,
|
syncTradingBalances,
|
||||||
updateSupportBanks,
|
syncBankAccounts,
|
||||||
|
syncSupportBanks,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -11,13 +11,13 @@ import { client, safeClient } from "@/api";
|
|||||||
|
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const { updateBankAccounts } = useWalletStore();
|
const { syncBankAccounts } = useWalletStore();
|
||||||
|
|
||||||
const { data, execute, onFetchResponse } = await safeClient(() => client.api.bank_account.get());
|
const { data, execute, onFetchResponse } = await safeClient(() => client.api.bank_account.get());
|
||||||
const bankCards = computed(() => data.value?.data || []);
|
const bankCards = computed(() => data.value?.data || []);
|
||||||
|
|
||||||
onFetchResponse((data) => {
|
onFetchResponse((data) => {
|
||||||
data?.data && updateBankAccounts(data.data);
|
data?.data && syncBankAccounts(data.data);
|
||||||
});
|
});
|
||||||
|
|
||||||
function handleAddCard() {
|
function handleAddCard() {
|
||||||
|
|||||||
@@ -1,17 +1,44 @@
|
|||||||
<script lang='ts' setup>
|
<script lang='ts' setup>
|
||||||
|
import SolarDollarMinimalisticBoldDuotone from "~icons/solar/dollar-minimalistic-bold-duotone";
|
||||||
|
import SolarRoundTransferHorizontalBoldDuotone from "~icons/solar/round-transfer-horizontal-bold-duotone";
|
||||||
import { getCryptoIcon } from "@/config/crypto";
|
import { getCryptoIcon } from "@/config/crypto";
|
||||||
|
|
||||||
const walletStore = useWalletStore();
|
const walletStore = useWalletStore();
|
||||||
const { balances } = storeToRefs(walletStore);
|
const { fundingBalances, totalAssetValue } = storeToRefs(walletStore);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
|
<ion-label class="text-xs font-medium text-text-300">
|
||||||
|
Asset Distribution
|
||||||
|
</ion-label>
|
||||||
|
|
||||||
|
<div class="grid grid-cols-2 gap-4 mt-2">
|
||||||
|
<div class="asset-card">
|
||||||
|
<div class="text-xs text-text-400 font-semibold flex items-center gap-1">
|
||||||
|
<SolarDollarMinimalisticBoldDuotone />
|
||||||
|
资金账户
|
||||||
|
</div>
|
||||||
|
<div class="font-bold">
|
||||||
|
${{ totalAssetValue.fundingValueUsd }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="asset-card">
|
||||||
|
<div class="text-xs text-text-400 font-semibold flex items-center gap-1">
|
||||||
|
<SolarRoundTransferHorizontalBoldDuotone />
|
||||||
|
交易账户
|
||||||
|
</div>
|
||||||
|
<div class="font-bold">
|
||||||
|
${{ totalAssetValue.tradingValueUsd }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<ion-label class="text-xs font-medium text-text-300">
|
<ion-label class="text-xs font-medium text-text-300">
|
||||||
Asset
|
Asset
|
||||||
</ion-label>
|
</ion-label>
|
||||||
<ion-list lines="none" class="space-y-5 mt-2!">
|
<ion-list lines="none" class="space-y-5 mt-2!">
|
||||||
<ion-item v-for="asset, i in balances" :key="i" class="">
|
<ion-item v-for="asset, i in fundingBalances" :key="i" class="">
|
||||||
<div class="flex items-center space-x-3 flex-1">
|
<div class="flex items-center space-x-3 flex-1">
|
||||||
<component :is="getCryptoIcon(asset.assetCode)" class="w-8 h-8" />
|
<component :is="getCryptoIcon(asset.assetCode)" class="w-8 h-8" />
|
||||||
<div class="space-y-1">
|
<div class="space-y-1">
|
||||||
@@ -32,7 +59,16 @@ const { balances } = storeToRefs(walletStore);
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang='css' scoped>
|
<style lang='css' scoped>
|
||||||
|
@reference "tailwindcss";
|
||||||
|
|
||||||
ion-item::part(native) {
|
ion-item::part(native) {
|
||||||
--padding-start: 0;
|
--padding-start: 0;
|
||||||
}
|
}
|
||||||
|
.asset-card {
|
||||||
|
@apply flex flex-col justify-between py-2 px-4 bg-gray-100 rounded-lg mb-3 gap-2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ion-palette-dark .asset-card {
|
||||||
|
@apply bg-[#151515];
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -8,12 +8,10 @@ import RechargeChannel from "./recharge-channel.vue";
|
|||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const walletStore = useWalletStore();
|
const walletStore = useWalletStore();
|
||||||
const { balances } = storeToRefs(walletStore);
|
const { totalAssetValue } = storeToRefs(walletStore);
|
||||||
const rechargeInstance = ref<ModalInstance>();
|
const rechargeInstance = ref<ModalInstance>();
|
||||||
const totalBalanceVisible = useStorage("total-balances-visible", true);
|
const totalBalanceVisible = useStorage("total-balances-visible", true);
|
||||||
const totalBalance = computed(() => {
|
const totalAsset = computed(() => Number(totalAssetValue.value.totalValueUsd).toFixed(2));
|
||||||
return balances.value.reduce((acc, item) => acc + Number(item.available), 0);
|
|
||||||
});
|
|
||||||
|
|
||||||
function onCloseModal() {
|
function onCloseModal() {
|
||||||
rechargeInstance.value?.$el.dismiss(null, "confirm");
|
rechargeInstance.value?.$el.dismiss(null, "confirm");
|
||||||
@@ -26,7 +24,8 @@ function handleBill() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
walletStore.updateBalances();
|
walletStore.syncFundingBalances();
|
||||||
|
walletStore.syncTradingBalances();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -38,7 +37,7 @@ onMounted(() => {
|
|||||||
</div>
|
</div>
|
||||||
<div class="flex items-end gap-2">
|
<div class="flex items-end gap-2">
|
||||||
<div class="text-2xl font-bold">
|
<div class="text-2xl font-bold">
|
||||||
{{ totalBalanceVisible ? totalBalance : Array(totalBalance.toString().length).fill("*").join("") }}
|
{{ totalBalanceVisible ? totalAsset : Array(totalAsset.toString().length).fill("*").join("") }}
|
||||||
</div>
|
</div>
|
||||||
<div class="text-md font-bold">
|
<div class="text-md font-bold">
|
||||||
USDT
|
USDT
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import { createWithdrawSchema } from "./rules";
|
|||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const walletStore = useWalletStore();
|
const walletStore = useWalletStore();
|
||||||
const { balances, bankAccounts } = storeToRefs(walletStore);
|
const { fundingBalances, bankAccounts } = storeToRefs(walletStore);
|
||||||
|
|
||||||
const initialValues: WithdrawBody = {
|
const initialValues: WithdrawBody = {
|
||||||
assetCode: AssetCodeEnum.USDT,
|
assetCode: AssetCodeEnum.USDT,
|
||||||
@@ -22,7 +22,7 @@ const initialValues: WithdrawBody = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const maxAmount = computed(() => {
|
const maxAmount = computed(() => {
|
||||||
const balance = balances.value?.find(item => item.assetCode === initialValues.assetCode);
|
const balance = fundingBalances.value?.find(item => item.assetCode === initialValues.assetCode);
|
||||||
return balance ? balance.available : "0";
|
return balance ? balance.available : "0";
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
"resolveJsonModule": true,
|
"resolveJsonModule": true,
|
||||||
"types": ["./components"],
|
"types": ["./components"],
|
||||||
"strict": true,
|
"strict": true,
|
||||||
|
"noImplicitAny": false,
|
||||||
"noEmit": true,
|
"noEmit": true,
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"isolatedModules": true,
|
"isolatedModules": true,
|
||||||
|
|||||||
Reference in New Issue
Block a user