Skip to content

Commit dbcd94a

Browse files
committed
feat: userTransactionHistory action and useUserTransactionHistory hook
1 parent a16de60 commit dbcd94a

File tree

3 files changed

+68
-1
lines changed

3 files changed

+68
-1
lines changed

packages/client/src/actions/user.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import {
22
type MarketUserReserveBorrowPosition,
33
type MarketUserReserveSupplyPosition,
4+
type PaginatedUserTransactionHistoryResult,
45
UserBorrowsQuery,
56
type UserBorrowsRequest,
67
UserSuppliesQuery,
78
type UserSuppliesRequest,
9+
UserTransactionHistoryQuery,
810
} from '@aave/graphql';
911
import type { ResultAsync } from '@aave/types';
1012
import type { AaveClient } from '../client';
@@ -51,3 +53,19 @@ export function userBorrows(
5153
): ResultAsync<MarketUserReserveBorrowPosition[], UnexpectedError> {
5254
return client.query(UserBorrowsQuery, { request });
5355
}
56+
57+
/**
58+
* Fetches the user's transaction history.
59+
*
60+
* ```ts
61+
* const result = await userTransactionHistory(client);
62+
* ```
63+
*
64+
* @param client - Aave client.
65+
* @returns The user's paginated transaction history.
66+
*/
67+
export function userTransactionHistory(
68+
client: AaveClient,
69+
): ResultAsync<PaginatedUserTransactionHistoryResult, UnexpectedError> {
70+
return client.query(UserTransactionHistoryQuery, {});
71+
}

packages/graphql/src/user.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import {
22
MarketUserReserveBorrowPositionFragment,
33
MarketUserReserveSupplyPositionFragment,
4+
PaginatedUserTransactionHistoryResultFragment,
45
} from './fragments';
56
import { graphql, type RequestOf } from './graphql';
67

@@ -12,7 +13,6 @@ export const UserSuppliesQuery = graphql(
1213
}`,
1314
[MarketUserReserveSupplyPositionFragment],
1415
);
15-
export type UserSuppliesRequest = RequestOf<typeof UserSuppliesQuery>;
1616

1717
export const UserBorrowsQuery = graphql(
1818
`query UserBorrows($request: UserBorrowsRequest!) {
@@ -23,3 +23,14 @@ export const UserBorrowsQuery = graphql(
2323
[MarketUserReserveBorrowPositionFragment],
2424
);
2525
export type UserBorrowsRequest = RequestOf<typeof UserBorrowsQuery>;
26+
27+
export const UserTransactionHistoryQuery = graphql(
28+
`query UserTransactionHistory {
29+
value: userTransactionHistory {
30+
...PaginatedUserTransactionHistoryResult
31+
}
32+
}`,
33+
[PaginatedUserTransactionHistoryResultFragment],
34+
);
35+
36+
export type UserSuppliesRequest = RequestOf<typeof UserSuppliesQuery>;

packages/react/src/user.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import type {
22
MarketUserReserveBorrowPosition,
33
MarketUserReserveSupplyPosition,
44
MarketUserState,
5+
PaginatedUserTransactionHistoryResult,
56
UserBorrowsRequest,
67
UserMarketStateRequest,
78
UserSuppliesRequest,
@@ -10,6 +11,7 @@ import {
1011
UserBorrowsQuery,
1112
UserMarketStateQuery,
1213
UserSuppliesQuery,
14+
UserTransactionHistoryQuery,
1315
} from '@aave/graphql';
1416
import type {
1517
ReadResult,
@@ -175,3 +177,39 @@ export function useUserMarketState({
175177
suspense,
176178
});
177179
}
180+
181+
/**
182+
* Fetch user transaction history.
183+
*
184+
* This signature supports React Suspense:
185+
*
186+
* ```tsx
187+
* const { data } = useUserTransactionHistory({
188+
* suspense: true,
189+
* });
190+
* ```
191+
*/
192+
export function useUserTransactionHistory(
193+
args: Suspendable,
194+
): SuspenseResult<PaginatedUserTransactionHistoryResult>;
195+
196+
/**
197+
* Fetch user transaction history.
198+
*
199+
* ```tsx
200+
* const { data, loading } = useUserTransactionHistory();
201+
* ```
202+
*/
203+
export function useUserTransactionHistory(): ReadResult<PaginatedUserTransactionHistoryResult>;
204+
205+
export function useUserTransactionHistory({
206+
suspense = false,
207+
}: {
208+
suspense?: boolean;
209+
} = {}): SuspendableResult<PaginatedUserTransactionHistoryResult> {
210+
return useSuspendableQuery({
211+
document: UserTransactionHistoryQuery,
212+
variables: {},
213+
suspense,
214+
});
215+
}

0 commit comments

Comments
 (0)