push quote banks if quote token is inactive

This commit is contained in:
Adrian Brzeziński 2023-01-07 18:24:29 +01:00
parent 9efe95cc75
commit 09dccf09fa
1 changed files with 22 additions and 9 deletions

View File

@ -1199,9 +1199,9 @@ export class MangoClient {
)!;
let ooPk;
let additionalAccounts: AdditionalHealthAccounts | undefined = undefined;
let tokenIsInactive;
let baseBank;
let healthAdditionalAccounts: AdditionalHealthAccounts | undefined =
undefined;
const healthBanks: Bank[] = [];
if (!mangoAccount.getSerum3Account(serum3Market.marketIndex)) {
const ix = await this.serum3CreateOpenOrdersIx(
group,
@ -1213,13 +1213,26 @@ export class MangoClient {
this.program.programId,
mangoAccount.publicKey,
);
const tokenIndex = serum3Market.baseTokenIndex;
baseBank = group.getFirstBankByTokenIndex(tokenIndex);
const baseTokenIndex = serum3Market.baseTokenIndex;
const quoteTokenIndex = serum3Market.quoteTokenIndex;
const baseBank = group.getFirstBankByTokenIndex(baseTokenIndex);
const quoteBank = group.getFirstBankByTokenIndex(quoteTokenIndex);
// only push bank/oracle if no deposit has been previously made for same token
tokenIsInactive = !mangoAccount.getToken(tokenIndex)?.isActive();
const baseTokenIsInactive = !mangoAccount
.getToken(baseTokenIndex)
?.isActive();
const quoteTokenIsInactive = !mangoAccount
.getToken(quoteTokenIndex)
?.isActive();
additionalAccounts = {
if (baseTokenIsInactive) {
healthBanks.push(baseBank);
}
if (quoteTokenIsInactive) {
healthBanks.push(quoteBank);
}
healthAdditionalAccounts = {
openOrders: [ooPk],
};
ixs.push(ix);
@ -1230,9 +1243,9 @@ export class MangoClient {
AccountRetriever.Fixed,
group,
[mangoAccount],
tokenIsInactive ? [baseBank] : [],
healthBanks,
[],
additionalAccounts,
healthAdditionalAccounts,
);
const serum3MarketExternal = group.serum3ExternalMarketsMap.get(