feat: 更新钱包状态管理,优化资产获取逻辑,支持资金和交易账户的分离
This commit is contained in:
@@ -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,
|
||||
};
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user