ts: simplify getOrCreateMangoAccount (#256)
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com> Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
This commit is contained in:
parent
c22302a1da
commit
4b52d9a072
|
@ -505,41 +505,18 @@ export class MangoClient {
|
|||
|
||||
// MangoAccount
|
||||
|
||||
public async getOrCreateMangoAccount(
|
||||
group: Group,
|
||||
ownerPk: PublicKey,
|
||||
accountNumber?: number,
|
||||
name?: string,
|
||||
): Promise<MangoAccount | undefined> {
|
||||
// TODO: this function discards accountSize and name when the account exists already!
|
||||
// TODO: this function always creates accounts for this.program.owner, and not
|
||||
// ownerPk! It needs to get passed a keypair, and we need to add
|
||||
// createMangoAccountForOwner
|
||||
if (accountNumber === undefined) {
|
||||
// Get any MangoAccount
|
||||
// TODO: should probably sort by accountNum for deterministic output!
|
||||
let mangoAccounts = await this.getMangoAccountsForOwner(group, ownerPk);
|
||||
if (mangoAccounts.length === 0) {
|
||||
await this.createMangoAccount(group, accountNumber, name);
|
||||
mangoAccounts = await this.getMangoAccountsForOwner(group, ownerPk);
|
||||
}
|
||||
return mangoAccounts[0];
|
||||
} else {
|
||||
let account = await this.getMangoAccountForOwner(
|
||||
group,
|
||||
ownerPk,
|
||||
accountNumber,
|
||||
);
|
||||
if (account === undefined) {
|
||||
await this.createMangoAccount(group, accountNumber, name);
|
||||
account = await this.getMangoAccountForOwner(
|
||||
group,
|
||||
ownerPk,
|
||||
accountNumber,
|
||||
);
|
||||
}
|
||||
return account;
|
||||
public async getOrCreateMangoAccount(group: Group): Promise<MangoAccount> {
|
||||
const clientOwner = (this.program.provider as AnchorProvider).wallet
|
||||
.publicKey;
|
||||
let mangoAccounts = await this.getMangoAccountsForOwner(
|
||||
group,
|
||||
(this.program.provider as AnchorProvider).wallet.publicKey,
|
||||
);
|
||||
if (mangoAccounts.length === 0) {
|
||||
await this.createMangoAccount(group);
|
||||
mangoAccounts = await this.getMangoAccountsForOwner(group, clientOwner);
|
||||
}
|
||||
return mangoAccounts.sort((a, b) => a.accountNum - b.accountNum)[0];
|
||||
}
|
||||
|
||||
public async createMangoAccount(
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import { AnchorProvider, Wallet } from '@project-serum/anchor';
|
||||
import { Connection, Keypair } from '@solana/web3.js';
|
||||
import fs from 'fs';
|
||||
import { AccountSize } from '../../accounts/mangoAccount';
|
||||
import { MangoClient } from '../../client';
|
||||
import { MANGO_V4_ID } from '../../constants';
|
||||
|
||||
|
@ -45,10 +44,7 @@ async function main() {
|
|||
const group = await user1Client.getGroupForAdmin(admin.publicKey, GROUP_NUM);
|
||||
console.log(`Found group ${group.publicKey.toBase58()}`);
|
||||
|
||||
const user1MangoAccount = await user1Client.getOrCreateMangoAccount(
|
||||
group,
|
||||
user1.publicKey,
|
||||
);
|
||||
const user1MangoAccount = await user1Client.getOrCreateMangoAccount(group);
|
||||
|
||||
console.log(`...mangoAccount1 ${user1MangoAccount.publicKey}`);
|
||||
|
||||
|
@ -75,10 +71,7 @@ async function main() {
|
|||
);
|
||||
console.log(`user2 ${user2Wallet.publicKey.toBase58()}`);
|
||||
|
||||
const user2MangoAccount = await user2Client.getOrCreateMangoAccount(
|
||||
group,
|
||||
user2.publicKey,
|
||||
);
|
||||
const user2MangoAccount = await user2Client.getOrCreateMangoAccount(group);
|
||||
console.log(`...mangoAccount2 ${user2MangoAccount.publicKey}`);
|
||||
|
||||
/// Increase usdc price temporarily to allow lots of borrows
|
||||
|
|
|
@ -48,10 +48,7 @@ async function main() {
|
|||
|
||||
// create + fetch account
|
||||
console.log(`Creating mangoaccount...`);
|
||||
const mangoAccount = await client.getOrCreateMangoAccount(
|
||||
group,
|
||||
user.publicKey,
|
||||
);
|
||||
const mangoAccount = await client.getOrCreateMangoAccount(group);
|
||||
console.log(`...created/found mangoAccount ${mangoAccount.publicKey}`);
|
||||
console.log(mangoAccount.toString());
|
||||
|
||||
|
|
|
@ -42,10 +42,7 @@ async function main() {
|
|||
|
||||
// create + fetch account
|
||||
console.log(`Creating mangoaccount...`);
|
||||
const mangoAccount = await client.getOrCreateMangoAccount(
|
||||
group,
|
||||
user.publicKey,
|
||||
);
|
||||
const mangoAccount = await client.getOrCreateMangoAccount(group);
|
||||
console.log(`...created/found mangoAccount ${mangoAccount.publicKey}`);
|
||||
|
||||
// logging serum3 open orders for user
|
||||
|
|
|
@ -43,10 +43,7 @@ async function main() {
|
|||
|
||||
// create + fetch account
|
||||
console.log(`Creating mangoaccount...`);
|
||||
const mangoAccount = await client.getOrCreateMangoAccount(
|
||||
group,
|
||||
user.publicKey,
|
||||
);
|
||||
const mangoAccount = await client.getOrCreateMangoAccount(group);
|
||||
console.log(`...created/found mangoAccount ${mangoAccount.publicKey}`);
|
||||
|
||||
// log users tokens
|
||||
|
|
|
@ -48,10 +48,7 @@ async function main() {
|
|||
|
||||
// create + fetch account
|
||||
console.log(`Creating mangoaccount...`);
|
||||
const mangoAccount = await client.getOrCreateMangoAccount(
|
||||
group,
|
||||
user.publicKey,
|
||||
);
|
||||
const mangoAccount = await client.getOrCreateMangoAccount(group);
|
||||
console.log(`...created/found mangoAccount ${mangoAccount.publicKey}`);
|
||||
console.log(mangoAccount.toString());
|
||||
|
||||
|
|
|
@ -53,10 +53,7 @@ async function main() {
|
|||
|
||||
// create + fetch account
|
||||
console.log(`Creating mangoaccount...`);
|
||||
const mangoAccount = await client.getOrCreateMangoAccount(
|
||||
group,
|
||||
user.publicKey,
|
||||
);
|
||||
const mangoAccount = await client.getOrCreateMangoAccount(group);
|
||||
console.log(`...created/found mangoAccount ${mangoAccount.publicKey}`);
|
||||
console.log(`start balance \n${mangoAccount.toString(group)}`);
|
||||
|
||||
|
|
|
@ -71,10 +71,7 @@ async function main() {
|
|||
|
||||
// create + fetch account
|
||||
console.log(`Creating mangoaccount...`);
|
||||
const mangoAccount = await client.getOrCreateMangoAccount(
|
||||
group,
|
||||
user.publicKey,
|
||||
);
|
||||
const mangoAccount = await client.getOrCreateMangoAccount(group);
|
||||
console.log(`...created/found mangoAccount ${mangoAccount.publicKey}`);
|
||||
console.log(mangoAccount.toString(group));
|
||||
|
||||
|
|
|
@ -68,10 +68,7 @@ async function main() {
|
|||
|
||||
// create + fetch account
|
||||
console.log(`Creating mangoaccount...`);
|
||||
let mangoAccount = (await client.getOrCreateMangoAccount(
|
||||
group,
|
||||
user.publicKey,
|
||||
))!;
|
||||
let mangoAccount = (await client.getOrCreateMangoAccount(group))!;
|
||||
if (!mangoAccount) {
|
||||
throw new Error(`MangoAccount not found for user ${user.publicKey}`);
|
||||
}
|
||||
|
|
|
@ -337,10 +337,7 @@ async function createUser(userKeypair: string) {
|
|||
const user = result[2];
|
||||
|
||||
console.log(`Creating MangoAccount...`);
|
||||
const mangoAccount = await client.getOrCreateMangoAccount(
|
||||
group,
|
||||
user.publicKey,
|
||||
);
|
||||
const mangoAccount = await client.getOrCreateMangoAccount(group);
|
||||
if (!mangoAccount) {
|
||||
throw new Error(`MangoAccount not found for user ${user.publicKey}`);
|
||||
}
|
||||
|
|
|
@ -34,10 +34,7 @@ async function main() {
|
|||
|
||||
// create + fetch account
|
||||
console.log(`Creating mangoaccount...`);
|
||||
const mangoAccount = await client.getOrCreateMangoAccount(
|
||||
group,
|
||||
user.publicKey,
|
||||
);
|
||||
const mangoAccount = await client.getOrCreateMangoAccount(group);
|
||||
console.log(`...created/found mangoAccount ${mangoAccount.publicKey}`);
|
||||
console.log(mangoAccount.toString(group));
|
||||
|
||||
|
|
Loading…
Reference in New Issue