feat: 更新钱包状态管理,优化资产获取逻辑,支持资金和交易账户的分离

This commit is contained in:
2025-12-24 05:28:49 +07:00
parent 64b455dfa6
commit dd1dbd485f
10 changed files with 109 additions and 40 deletions

View File

@@ -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 { client, safeClient } from "@/api";
interface State {
balances: BalancesData;
totalAssetValue: TotalAssetValue;
fundingBalances: BalancesData;
tradingBalances: BalancesData;
bankAccounts: BankAccountsData["data"];
supportBanks: SupportBanksData["data"];
}
export const useWalletStore = defineStore("wallet", () => {
const state = reactive<State>({
balances: [],
totalAssetValue: {
fundingValueUsd: "0",
tradingValueUsd: "0",
totalValueUsd: "0",
},
fundingBalances: [],
tradingBalances: [],
bankAccounts: [],
supportBanks: [],
});
async function initializeWallet() {
updateBalances();
updateBankAccounts();
updateSupportBanks();
syncTotalAssetValue();
syncFundingBalances();
syncTradingBalances();
syncBankAccounts();
}
async function updateBalances(data?: BalancesData) {
if (data) {
state.balances = data;
return;
}
const { data: balances } = await safeClient(() => client.api.wallet.balances.get(), { silent: true });
state.balances = balances.value || [];
async function syncTotalAssetValue() {
const { data } = await safeClient(() => client.api.wallet.total_value.get(), { silent: true });
if (data.value)
state.totalAssetValue = data.value;
}
async function syncFundingBalances() {
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) {
state.bankAccounts = data;
return;
@@ -39,7 +58,7 @@ export const useWalletStore = defineStore("wallet", () => {
state.bankAccounts = bankAccounts.value?.data || [];
}
async function updateSupportBanks() {
async function syncSupportBanks() {
const { data: banks } = await safeClient(() => client.api.bank_account.banks.get(), { silent: true });
state.supportBanks = banks.value?.data || [];
}
@@ -47,8 +66,9 @@ export const useWalletStore = defineStore("wallet", () => {
return {
...toRefs(state),
initializeWallet,
updateBalances,
updateBankAccounts,
updateSupportBanks,
syncFundingBalances,
syncTradingBalances,
syncBankAccounts,
syncSupportBanks,
};
});