Add optional refresh parameter for whirlpoolclient (#17)

This commit is contained in:
meep 2022-05-26 10:00:01 -07:00 committed by GitHub
parent 0ea0bb2d53
commit 72666c9153
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 10 deletions

View File

@ -10,12 +10,12 @@ import { WhirlpoolImpl } from "./whirlpool-impl";
export class WhirlpoolClientImpl implements WhirlpoolClient {
constructor(readonly ctx: WhirlpoolContext, readonly fetcher: AccountFetcher) {}
public async getPool(poolAddress: Address): Promise<Whirlpool> {
const account = await this.fetcher.getPool(poolAddress, true);
public async getPool(poolAddress: Address, refresh = false): Promise<Whirlpool> {
const account = await this.fetcher.getPool(poolAddress, refresh);
if (!account) {
throw new Error(`Unable to fetch Whirlpool at address at ${poolAddress}`);
}
const tokenInfos = await getTokenInfos(this.fetcher, account);
const tokenInfos = await getTokenInfos(this.fetcher, account, false);
return new WhirlpoolImpl(
this.ctx,
this.fetcher,
@ -26,8 +26,8 @@ export class WhirlpoolClientImpl implements WhirlpoolClient {
);
}
public async getPosition(positionAddress: Address): Promise<Position> {
const account = await this.fetcher.getPosition(positionAddress, true);
public async getPosition(positionAddress: Address, refresh = false): Promise<Position> {
const account = await this.fetcher.getPosition(positionAddress, refresh);
if (!account) {
throw new Error(`Unable to fetch Position at address at ${positionAddress}`);
}
@ -35,14 +35,18 @@ export class WhirlpoolClientImpl implements WhirlpoolClient {
}
}
async function getTokenInfos(fetcher: AccountFetcher, data: WhirlpoolData): Promise<TokenInfo[]> {
async function getTokenInfos(
fetcher: AccountFetcher,
data: WhirlpoolData,
refresh: boolean
): Promise<TokenInfo[]> {
const mintA = data.tokenMintA;
const infoA = await fetcher.getMintInfo(mintA);
const infoA = await fetcher.getMintInfo(mintA, refresh);
if (!infoA) {
throw new Error(`Unable to fetch MintInfo for mint - ${mintA}`);
}
const mintB = data.tokenMintB;
const infoB = await fetcher.getMintInfo(mintB);
const infoB = await fetcher.getMintInfo(mintB, refresh);
if (!infoB) {
throw new Error(`Unable to fetch MintInfo for mint - ${mintB}`);
}

View File

@ -24,14 +24,14 @@ export interface WhirlpoolClient {
* @param poolAddress the address of the Whirlpool account
* @return a Whirlpool object to interact with
*/
getPool: (poolAddress: Address) => Promise<Whirlpool>;
getPool: (poolAddress: Address, refresh?: boolean) => Promise<Whirlpool>;
/**
* Get a Position object to interact with the Position account at the given address.
* @param positionAddress the address of the Position account
* @return a Position object to interact with
*/
getPosition: (positionAddress: Address) => Promise<Position>;
getPosition: (positionAddress: Address, refresh?: boolean) => Promise<Position>;
}
/**