Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 0 additions & 27 deletions src/constants/graphEndpoints.ts

This file was deleted.

43 changes: 30 additions & 13 deletions src/hooks/queries/useGetActiveLoansForUser.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { useQuery } from "@tanstack/react-query";
import request, { gql } from "graphql-request";
import { useAccount } from "wagmi";
import { useGraphURL } from "../useGraphURL";
import { Address } from "viem";
import { useQuery } from '@tanstack/react-query';
import request, { gql } from 'graphql-request';
import { useAccount, useChainId } from 'wagmi';
import { Address } from 'viem';
import { useGetGraphEndpoint } from '../useGetGraphEndpoint';

type CollateralToken = {
name: string;
Expand Down Expand Up @@ -52,10 +52,10 @@ export type Loan = {
};

export enum LoanStatus {
DEFAULTED = "defaulted",
ACCEPTED = "accepted",
DUE_SOON = "dueSoon",
LATE = "late",
DEFAULTED = 'defaulted',
ACCEPTED = 'accepted',
DUE_SOON = 'dueSoon',
LATE = 'late',
}

export const activeStatuses = [
Expand All @@ -66,7 +66,11 @@ export const activeStatuses = [
];

export const useGetActiveLoansForUser = () => {
const graphURL = useGraphURL();
const chainId = useChainId();
const { endpoint: endpointOG, isFetched: isFetchedOG } = useGetGraphEndpoint(
chainId,
'og',
);
const { address } = useAccount();

const activeLoanForUser = gql`
Expand Down Expand Up @@ -241,9 +245,22 @@ export const useGetActiveLoansForUser = () => {
`;

const { data, isLoading } = useQuery({
queryKey: ["teller-widget", "getActiveLoansForUser", address],
queryFn: () => request(graphURL, activeLoanForUser),
enabled: !!address,
queryKey: ['teller-widget', 'getActiveLoansForUser', address],
queryFn: async () => {
let response = { user: { borrowers: [] } };
try {
if (endpointOG) {
response = await request(endpointOG, activeLoanForUser);
}

return response;
} catch (err) {
console.log(err);
} finally {
return response;
}
},
enabled: !!address && isFetchedOG && !!endpointOG,
}) as {
data: {
user: {
Expand Down
51 changes: 34 additions & 17 deletions src/hooks/queries/useGetCommitmentsForCollateralToken.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import request, { gql } from "graphql-request";
import { useMemo } from "react";
import { useGraphURL } from "../useGraphURL";
import { useQuery } from "@tanstack/react-query";
import { useForwarderAddresses } from "../useForwarderAddresses";
import { Address } from "viem";
import { useChainId } from "wagmi";
import { useGetGlobalPropsContext } from "../../contexts/GlobalPropsContext";
import request, { gql } from 'graphql-request';
import { useMemo } from 'react';
import { useQuery } from '@tanstack/react-query';
import { useForwarderAddresses } from '../useForwarderAddresses';
import { Address } from 'viem';
import { useChainId } from 'wagmi';
import { useGetGlobalPropsContext } from '../../contexts/GlobalPropsContext';
import { useGetGraphEndpoint } from '../useGetGraphEndpoint';

export type SubgraphTokenType = {
imageUri?: string | undefined;
Expand Down Expand Up @@ -50,10 +50,14 @@ export type CommitmentType = {

export const useGetCommitmentsForCollateralToken = (
collateralTokenAddress?: string,
userAddress?: Address
userAddress?: Address,
) => {
const graphURL = useGraphURL();
const chainId = useChainId();
const { endpoint: endpointOG, isFetched: isFetchedOG } = useGetGraphEndpoint(
chainId,
'og',
);

const { principalTokenForPair } = useGetGlobalPropsContext();

const { lcfAlphaAddress, lcfAddress } = useForwarderAddresses();
Expand All @@ -73,7 +77,7 @@ export const useGetCommitmentsForCollateralToken = (
? `principalToken_: {
address: "${principalTokenForPair.toLowerCase()}"
},`
: ""
: ''
}
status: "Active",
expirationTimestamp_gt: "${Math.floor(Date.now() / 1000)}",
Expand Down Expand Up @@ -139,25 +143,38 @@ export const useGetCommitmentsForCollateralToken = (
}
}
`,
[collateralTokenAddress, lcfAddress, lcfAlphaAddress, userAddress]
[collateralTokenAddress, lcfAddress, lcfAlphaAddress, userAddress],
);

const { data, isLoading, error } = useQuery({
queryKey: [
"teller-widget",
"commitmentsForCollateralToken-",
'teller-widget',
'commitmentsForCollateralToken-',
collateralTokenAddress,
chainId,
],
queryFn: async () => request(graphURL, collateralTokenCommitments),
enabled: !!collateralTokenAddress,
queryFn: async () => {
let response = { commitments: [] };
try {
if (endpointOG) {
response = await request(endpointOG, collateralTokenCommitments);
}

return response;
} catch (err) {
console.log(err);
} finally {
return response;
}
},
enabled: !!collateralTokenAddress && isFetchedOG && !!endpointOG,
}) as {
data: { commitments: CommitmentType[] };
isLoading: boolean;
error: string;
};

if (error) console.error("commitmentsForCollateralToken Query error", error);
if (error) console.error('commitmentsForCollateralToken Query error', error);

return { data, isLoading };
};
23 changes: 19 additions & 4 deletions src/hooks/queries/useGetCommitmentsForUserTokens.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import { createFingerprintHash } from "../../helpers/localStorageCache";
import type { LenderGroupsPoolMetrics } from "../../types/lenderGroupsPoolMetrics";
import { useGetGraphEndpoint } from "../useGetGraphEndpoint";
import type { UserToken } from "../useGetUserTokens";
import { useGraphURL } from "../useGraphURL";

interface Commitment {
collateralToken: {
Expand All @@ -34,7 +33,10 @@ const CACHE_TIME = 15 * 60 * 1000; // 15 minutes

export const useGetCommitmentsForUserTokens = () => {
const chainId = useChainId();
const graphURL = useGraphURL();
const { endpoint: endpointOG, isFetched: isFetchedOG } = useGetGraphEndpoint(
chainId,
"og"
);
const { endpoint: endpointV1, isFetched: isFetchedV1 } = useGetGraphEndpoint(
chainId,
"v1"
Expand Down Expand Up @@ -125,8 +127,21 @@ export const useGetCommitmentsForUserTokens = () => {
address,
userTokensFingerprint,
],
queryFn: async () => request(graphURL, userTokenCommitments),
enabled: userTokens.length > 0 && !!address && !!userTokensFingerprint,
queryFn: async () => {
let response = { commitments: [] };
try {
if (endpointOG) {
response = await request(endpointOG, userTokenCommitments);
}

return response;
} catch (err) {
console.log(err);
} finally {
return response;
}
},
enabled: userTokens.length > 0 && !!address && !!userTokensFingerprint && isFetchedOG && !!endpointOG,
}) as {
data: { commitments: Commitment[] };
isLoading: boolean;
Expand Down
27 changes: 22 additions & 5 deletions src/hooks/queries/useGetRolloverableCommitments.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,16 @@
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
import { useQuery } from "@tanstack/react-query";
import request, { gql } from "graphql-request";
import { useChainId } from "wagmi";
import { useEffect, useMemo, useState } from "react";
import { Address } from "viem";
import { useCalculateMaxCollateralFromCommitment } from "../useCalculateMaxCollateralFromCommitment";
import { useConvertLenderGroupCommitmentToCommitment } from "../useConvertLenderGroupCommitmentToCommitment";
import { useForwarderAddresses } from "../useForwarderAddresses";
import { useGetMinimumBetweenLenderAndCommitment } from "../useGetMinimumBetweenLenderAndCommitment";
import { useGraphURL } from "../useGraphURL";
import { Loan } from "./useGetActiveLoansForUser";
import { useGetRolloverableCommitmentsFromLiquidityPools } from "./useGetRolloverableCommitmentsFromLiquidityPools";
import { useGetGraphEndpoint } from "../useGetGraphEndpoint";

export type CommitmentMapArray = Map<string, CommitmentType[]>;

Expand Down Expand Up @@ -98,8 +99,11 @@ export const useGetRolloverableCommitments = (
principalTokenAddress?: string,
loan?: Loan
) => {
const graphURL = useGraphURL();

const chainId = useChainId();
const { endpoint: endpointOG, isFetched: isFetchedOG } = useGetGraphEndpoint(
chainId,
"og"
);
const { lcfAlphaAddress } = useForwarderAddresses();

const [filteredCommitments, setFilteredCommitments] = useState<CommitmentMap>(
Expand Down Expand Up @@ -191,8 +195,21 @@ export const useGetRolloverableCommitments = (
"rolloverableCommitmentsForCollateralToken-",
collateralTokenAddress,
],
queryFn: async () => request(graphURL, collateralTokenCommitments),
enabled: !!collateralTokenAddress,
queryFn: async () => {
let response = { commitments: [] };
try {
if (endpointOG) {
response = await request(endpointOG, collateralTokenCommitments);
}

return response;
} catch (err) {
console.log(err);
} finally {
return response;
}
},
enabled: !!collateralTokenAddress && !!endpointOG && isFetchedOG,
}) as { data: { commitments: CommitmentType[] }; isLoading: boolean };

const {
Expand Down
17 changes: 7 additions & 10 deletions src/hooks/queries/useGetUniswapPools.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
import { QueryClient, useQueryClient } from "@tanstack/react-query";
import { getUniswapV3GraphEndpointWithKey } from "../../constants/graphEndpoints";
import { useQueryClient } from "@tanstack/react-query";
import request, { gql } from "graphql-request";
import { useCallback, useState } from "react";
import { useChainId } from "wagmi";
import { UniswapV3Pool } from "../../constants/uniswapV3Pool.type";
import { useGetGlobalPropsContext } from "../../contexts/GlobalPropsContext";

export interface UseGetUniswapV3LiquidityPoolsParams {
/** The token address to search pools for */
Expand Down Expand Up @@ -85,16 +83,15 @@ const POOL_DAY_DATAS_QUERY = gql`
*/
export const useGetUniswapPools = () => {
const chainId = useChainId();
const { subgraphApiKey } = useGetGlobalPropsContext();
const queryClient = useQueryClient();
const graphURL = getUniswapV3GraphEndpointWithKey(subgraphApiKey, chainId);
const [isLoading, setIsLoading] = useState(false);

const fetchPoolData = useCallback(
async ({
async (endpoint: string, {
tokenAddress,
days = 30,
}: UseGetUniswapV3LiquidityPoolsParams) => {

setIsLoading(true);
try {
const result = await queryClient.fetchQuery({
Expand All @@ -108,7 +105,7 @@ export const useGetUniswapPools = () => {
queryFn: async () => {
// Step 1: Get the best pool
const poolsResponse = await request<PoolsResponse>(
graphURL || "",
endpoint,
UNISWAP_V3_POOLS_QUERY,
{ tokenAddress }
);
Expand All @@ -129,7 +126,7 @@ export const useGetUniswapPools = () => {
const daysAgoTimestamp = Math.floor(Date.now() / 1000) - secondsAgo;

const dayDataResponse = await request<PoolDayDatasResponse>(
graphURL || "",
endpoint,
POOL_DAY_DATAS_QUERY,
{
poolId: bestPool.id,
Expand Down Expand Up @@ -163,8 +160,8 @@ export const useGetUniswapPools = () => {
setIsLoading(false);
}
},
[chainId, graphURL, queryClient]
[chainId, queryClient]
);

return { fetchPoolData, isLoading };
return { fetchPoolData, isLoading: isLoading };
};
Loading