Skip to content

Commit 27be86b

Browse files
committed
feat: useAaveChains, useUserSupplies, useUserBorrows hooks
1 parent 9f4085e commit 27be86b

File tree

3 files changed

+164
-0
lines changed

3 files changed

+164
-0
lines changed

packages/react/src/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
export * from './AaveProvider';
22
export { useAaveClient } from './context';
33
export * from './markets';
4+
export * from './misc';
5+
export * from './reserves';
6+
export * from './user';

packages/react/src/misc.ts

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import { type Chain, ChainsQuery } from '@aave/graphql';
2+
import type {
3+
ReadResult,
4+
Suspendable,
5+
SuspendableResult,
6+
SuspenseResult,
7+
} from './helpers';
8+
import { useSuspendableQuery } from './helpers';
9+
10+
/**
11+
* Fetch all supported Aave chains.
12+
*
13+
* This signature supports React Suspense:
14+
*
15+
* ```tsx
16+
* const { data } = useAaveChains({
17+
* suspense: true,
18+
* });
19+
* ```
20+
*/
21+
export function useAaveChains(args: Suspendable): SuspenseResult<Chain[]>;
22+
23+
/**
24+
* Fetch all supported Aave chains.
25+
*
26+
* ```tsx
27+
* const { data, loading } = useAaveChains();
28+
* ```
29+
*/
30+
export function useAaveChains(): ReadResult<Chain[]>;
31+
32+
export function useAaveChains({
33+
suspense = false,
34+
}: {
35+
suspense?: boolean;
36+
} = {}): SuspendableResult<Chain[]> {
37+
return useSuspendableQuery({
38+
document: ChainsQuery,
39+
variables: {},
40+
suspense,
41+
});
42+
}

packages/react/src/user.ts

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
import {
2+
UserBorrowsQuery,
3+
type UserBorrowsRequest,
4+
type UserReserveBorrowPosition,
5+
type UserReserveSupplyPosition,
6+
UserSuppliesQuery,
7+
type UserSuppliesRequest,
8+
} from '@aave/graphql';
9+
import type {
10+
ReadResult,
11+
Suspendable,
12+
SuspendableResult,
13+
SuspenseResult,
14+
} from './helpers';
15+
import { useSuspendableQuery } from './helpers';
16+
17+
export type UseUserSuppliesArgs = UserSuppliesRequest;
18+
19+
/**
20+
* Fetch all user supply positions.
21+
*
22+
* This signature supports React Suspense:
23+
*
24+
* ```tsx
25+
* const { data } = useUserSupplies({
26+
* markets: [evmAddress('0x87870bca...')],
27+
* user: evmAddress('0x742d35cc...'),
28+
* orderBy: { name: OrderDirection.ASC },
29+
* suspense: true,
30+
* });
31+
* ```
32+
*/
33+
export function useUserSupplies(
34+
args: UseUserSuppliesArgs & Suspendable,
35+
): SuspenseResult<UserReserveSupplyPosition[]>;
36+
37+
/**
38+
* Fetch all user supply positions.
39+
*
40+
* ```tsx
41+
* const { data, loading } = useUserSupplies({
42+
* markets: [evmAddress('0x87870bca...')],
43+
* user: evmAddress('0x742d35cc...'),
44+
* orderBy: { name: OrderDirection.ASC },
45+
* });
46+
* ```
47+
*/
48+
export function useUserSupplies(
49+
args: UseUserSuppliesArgs,
50+
): ReadResult<UserReserveSupplyPosition[]>;
51+
52+
export function useUserSupplies({
53+
suspense = false,
54+
markets,
55+
user,
56+
orderBy,
57+
}: UseUserSuppliesArgs & {
58+
suspense?: boolean;
59+
}): SuspendableResult<UserReserveSupplyPosition[]> {
60+
return useSuspendableQuery({
61+
document: UserSuppliesQuery,
62+
variables: {
63+
request: { markets, user, orderBy },
64+
},
65+
suspense,
66+
});
67+
}
68+
69+
export type UseUserBorrowsArgs = UserBorrowsRequest;
70+
71+
/**
72+
* Fetch all user borrow positions.
73+
*
74+
* This signature supports React Suspense:
75+
*
76+
* ```tsx
77+
* const { data } = useUserBorrows({
78+
* markets: [evmAddress('0x87870bca...')],
79+
* user: evmAddress('0x742d35cc...'),
80+
* orderBy: { name: OrderDirection.ASC },
81+
* suspense: true
82+
* });
83+
* ```
84+
*/
85+
export function useUserBorrows(
86+
args: UseUserBorrowsArgs & Suspendable,
87+
): SuspenseResult<UserReserveBorrowPosition[]>;
88+
89+
/**
90+
* Fetch all user borrow positions.
91+
*
92+
* ```tsx
93+
* const { data, loading } = useUserBorrows({
94+
* markets: [evmAddress('0x87870bca...')],
95+
* user: evmAddress('0x742d35cc...'),
96+
* orderBy: { name: OrderDirection.ASC },
97+
* });
98+
* ```
99+
*/
100+
export function useUserBorrows(
101+
args: UseUserBorrowsArgs,
102+
): ReadResult<UserReserveBorrowPosition[]>;
103+
104+
export function useUserBorrows({
105+
suspense = false,
106+
markets,
107+
user,
108+
orderBy,
109+
}: UseUserBorrowsArgs & {
110+
suspense?: boolean;
111+
}): SuspendableResult<UserReserveBorrowPosition[]> {
112+
return useSuspendableQuery({
113+
document: UserBorrowsQuery,
114+
variables: {
115+
request: { markets, user, orderBy },
116+
},
117+
suspense,
118+
});
119+
}

0 commit comments

Comments
 (0)