Skip to content

Commit

Permalink
Address comments
Browse files Browse the repository at this point in the history
  • Loading branch information
mariavarvaroi committed Feb 12, 2024
1 parent 4c7e558 commit c790c9b
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 72 deletions.
18 changes: 5 additions & 13 deletions src/api/getHarvestParams.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { StakewiseConnector } from '../internal/connector';

export const getHarvestParams = async (connector: StakewiseConnector, vault: Hex) => {
try {
const harvestResponse = await connector.graphqlRequest({
const harvestData = await connector.graphqlRequest({
type: 'graph',
op: 'HarvestParams',
query: `
Expand All @@ -19,22 +19,14 @@ export const getHarvestParams = async (connector: StakewiseConnector, vault: Hex
variables: {
address: vault.toLowerCase(),
},
onSuccess: function (value: Response) {
return value;
},
onSuccess: (value: { data: any }) => value,
onError: function (reason: any): PromiseLike<never> {
throw new Error(`Failed to get harvest from Stakewise: ${reason}`);
},
});
if (!harvestResponse.ok) {
throw new Error('Invalid response from Stakewise');
}
const harvestData = await harvestResponse.json();
if (harvestData.errors && harvestData.errors.length) {
throw new Error(harvestData.errors[0].message);
}
if (!harvestData.data || !harvestData.data.harvestParams) {
throw new Error('Vault data is missing or incomplete');

if (!harvestData.data.harvestParams) {
throw new Error('Vault data is missing the harvestParams field');
}
return harvestData.data.harvestParams;
} catch (error) {
Expand Down
20 changes: 6 additions & 14 deletions src/api/rewardsHistory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,30 +16,22 @@ async function extractVaultUserRewards(
dateFrom: Math.floor(dateFrom.getTime() / 1000).toString(),
};
try {
const responseRewards = await connector.graphqlRequest({
const rewardsData = await connector.graphqlRequest({
type: 'api',
op: 'UserRewards',
query: `query UserRewards($user: String!, $vaultAddress: String!, $dateFrom: DateAsTimestamp!) { userRewards(user: $user, vaultAddress: $vaultAddress, dateFrom: $dateFrom) { date, sumRewards, }}`,
variables: vars_getRewards,
onSuccess: function (value: Response): Response {
return value;
},
onSuccess: (value: { data: any }) => value,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
onError: function (reason: any): PromiseLike<never> {
throw new Error(`Failed to get rewards from Stakewise: ${reason}`);
},
});
if (!responseRewards.ok) {
throw new Error('Invalid response from Stakewise');
}
const rewardsData = await responseRewards.json();

if (rewardsData.errors && rewardsData.errors.length) {
throw new Error(rewardsData.errors[0].message);
}

if (!rewardsData.data || !rewardsData.data.userRewards || rewardsData.data.userRewards.length === 0) {
throw new Error('Rewards data is missing or incomplete');
if (!rewardsData.data.userRewards || rewardsData.data.userRewards.length === 0) {
throw new Error(
`Rewards data is missing the userRewards field or the field is empty ${rewardsData.data.userRewards}`,
);
}
const dataPoints: RewardsDataPoint[] = [];
// eslint-disable-next-line @typescript-eslint/no-explicit-any
Expand Down
18 changes: 6 additions & 12 deletions src/api/transactionsHistory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ async function extractTransactionsHistory(
skip: 0,
};
try {
const responseActions = await connector.graphqlRequest({
const actionsData = await connector.graphqlRequest({
type: 'graph',
op: 'AllocatorActions',
query: `
Expand All @@ -29,23 +29,17 @@ async function extractTransactionsHistory(
{ id assets createdAt actionType }}
`,
variables: vars_getActions,
onSuccess: function (value: Response): Response {
return value;
},
onSuccess: (value: { data: any }) => value,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
onError: function (reason: any): PromiseLike<never> {
throw new Error(`Failed to get vault from Stakewise: ${reason}`);
},
});

const actionsData = await responseActions.json();

if (actionsData.errors && actionsData.errors.length) {
throw new Error(actionsData.errors[0].message);
}

if (!actionsData.data || !actionsData.data.allocatorActions || actionsData.data.allocatorActions.length === 0) {
throw new Error('Transaction data is missing or incomplete');
if (!actionsData.data.allocatorActions || actionsData.data.allocatorActions.length === 0) {
throw new Error(
`Transaction data is missing the allocatorActions field or the field is empty ${actionsData.data.allocatorActions}`,
);
}
const interactions: VaultTransaction[] = [];
// eslint-disable-next-line @typescript-eslint/no-explicit-any
Expand Down
18 changes: 4 additions & 14 deletions src/api/vaultDetails.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ async function extractVaultProperties(connector: StakewiseConnector, vault: Hex)
today.setDate(today.getDate());

try {
const responseVault = await connector.graphqlRequest({
const vaultData = await connector.graphqlRequest({
type: 'graph',
op: 'Vault',
query: `
Expand Down Expand Up @@ -61,25 +61,15 @@ async function extractVaultProperties(connector: StakewiseConnector, vault: Hex)
}
}`,
variables: vars_getVault,
onSuccess: function (value: Response): Response {
return value;
},
onSuccess: (value: { data: any }) => value,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
onError: function (reason: any): PromiseLike<never> {
throw new Error(`Failed to get vault from Stakewise: ${reason}`);
},
});
if (!responseVault.ok) {
throw new Error('Invalid response from Stakewise');
}
const vaultData = await responseVault.json();

if (vaultData.errors && vaultData.errors.length > 0) {
throw new Error(vaultData.errors[0].message);
}

if (!vaultData.data || !vaultData.data.vault) {
throw new Error('Vault data is missing or incomplete');
if (!vaultData.data.vault) {
throw new Error(`Vault data is missing the vault field ${vaultData.data}`);
}
return { vaultData: vaultData.data };
} catch (error) {
Expand Down
21 changes: 18 additions & 3 deletions src/internal/connector.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ export interface GraphQLRequest {
query: string;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
variables: any;
onSuccess: (value: Response) => Response;
onSuccess: (value: { data: any }) => { data: any };
// eslint-disable-next-line @typescript-eslint/no-explicit-any
onError: (reason: any) => PromiseLike<never>;
}
Expand Down Expand Up @@ -95,7 +95,7 @@ export class StakewiseConnector {
}

// Perform graphQL request
graphqlRequest = (request: GraphQLRequest): Promise<Response> => {
graphqlRequest = (request: GraphQLRequest): Promise<{ data: any }> => {
const body: string = JSON.stringify({
operationName: request.op,
query: request.query.trim(),
Expand Down Expand Up @@ -123,6 +123,21 @@ export class StakewiseConnector {
}

const endpoint = `${uri}?opName=${request.op}`;
return fetch(endpoint, params).then(request.onSuccess).catch(request.onError);
return fetch(endpoint, params)
.then(async (response) => {
if (!response.ok) {
throw new Error('Invalid response from Stakewise');
}
const responseData = await response.json();

if (responseData.errors && responseData.errors.length) {
throw new Error(responseData.errors[0].message);
}
if (!responseData.data) {
throw new Error('Response from Stakewise is missing data');
}
return request.onSuccess(responseData);
})
.catch(request.onError);
};
}
22 changes: 6 additions & 16 deletions src/internal/osTokenRequests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ export const getStakeBalance = async (pool: OpusPool, vaultAddress: Hex): Promis

export const getOsTokenPosition = async (pool: OpusPool, vaultAddress: Hex): Promise<OsTokenPositionReturnType> => {
try {
const gqlMintedSharesResult = await pool.connector.graphqlRequest({
const gqlMintedSharesJson = await pool.connector.graphqlRequest({
op: 'OsTokenPositions',
type: 'graph',
query: `
Expand All @@ -146,24 +146,14 @@ export const getOsTokenPosition = async (pool: OpusPool, vaultAddress: Hex): Pro
vaultAddress,
address: pool.userAccount,
},
onSuccess: (value: Response) => value,
onSuccess: (value: { data: any }) => value,
onError: (reason: any) => Promise.reject(reason),
});
if (!gqlMintedSharesResult.ok) {
throw new Error('Invalid response from Stakewise');
}
const gqlMintedSharesJson = await gqlMintedSharesResult.json();

if (gqlMintedSharesJson.errors && gqlMintedSharesJson.errors.length) {
throw new Error(gqlMintedSharesJson.errors[0].message);
}

if (
!gqlMintedSharesJson.data ||
!gqlMintedSharesJson.data.osTokenPositions ||
gqlMintedSharesJson.data.osTokenPositions.length === 0
) {
throw new Error('Minted shares data is incomplete');
if (!gqlMintedSharesJson.data.osTokenPositions || gqlMintedSharesJson.data.osTokenPositions.length === 0) {
throw new Error(
`Minted shares data is missing the osTokenPositions field or the field is empty ${gqlMintedSharesJson.data.osTokenPositions}`,
);
}
const gqlMintedShares = BigInt(gqlMintedSharesJson.data.osTokenPositions[0]?.shares || 0);

Expand Down

0 comments on commit c790c9b

Please sign in to comment.