Skip to content

Commit 364ad41

Browse files
Add useEvents hook
1 parent e0779e7 commit 364ad41

File tree

7 files changed

+76
-3
lines changed

7 files changed

+76
-3
lines changed

.changeset/spotty-brooms-design.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@aptos-labs/js-pro": patch
3+
"@aptos-labs/react": patch
4+
---
5+
6+
Add `useEvents` hook

packages/js-pro/src/client.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ import {
3030
fetchAccountCollections,
3131
fetchViewModule,
3232
fetchLedgerInfo,
33+
fetchEvents,
34+
fetchAccountTransactions,
35+
fetchAccountTokens,
3336
} from "./queries/index.js";
3437
import {
3538
buildTransaction,
@@ -39,8 +42,6 @@ import {
3942
submitTransaction,
4043
waitForTransaction,
4144
} from "./mutations/index.js";
42-
import { fetchAccountTokens } from "./queries/fetchAccountTokens.js";
43-
import { fetchAccountTransactions } from "./queries/fetchAccountTransactions.js";
4445

4546
type IndexerClientOptions = ConstructorParameters<typeof GraphQLClient>[1];
4647

@@ -308,6 +309,8 @@ export class AptosJSProClient {
308309

309310
fetchViewModule = fetchViewModule;
310311

312+
fetchEvents = fetchEvents;
313+
311314
//* Client Mutations
312315

313316
submitTransaction = submitTransaction;
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// Copyright © Aptos
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
import { Aptos, GetEventsResponse, MoveResource } from "@aptos-labs/ts-sdk";
5+
import { AptosJSProClient } from "../client.js";
6+
import { WithNetwork } from "../types/parameters.js";
7+
8+
export type FetchEventsParameters = WithNetwork<
9+
Parameters<Aptos["getEvents"]>[0]
10+
>;
11+
12+
export type FetchEventsResult = GetEventsResponse;
13+
14+
export async function fetchEvents(
15+
this: AptosJSProClient,
16+
{ network, ...params }: FetchEventsParameters
17+
): Promise<FetchEventsResult> {
18+
const { aptos } = this.getClients({ network });
19+
20+
const result = await aptos.getEvents(params);
21+
22+
return result;
23+
}

packages/js-pro/src/queries/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,4 @@ export * from "./fetchViewModule.js";
1919
export * from "./fetchFungibleAssetMetadata.js";
2020
export * from "./fetchAccountTransactions.js";
2121
export * from "./fetchAccountTokens.js";
22+
export * from "./fetchEvents.js";

packages/js-pro/src/types/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ export * from "./resources.js";
88
export * from "./tokens.js";
99
export * from "./fungibleAssets.js";
1010
export * from "./transactions.js";
11-
export * from "./activities.js";
11+
export * from "./activities.js";``

packages/react/src/queries/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,4 @@ export * from "./useTokenData.js";
2323
export * from "./useTransaction.js";
2424
export * from "./useViewModule.js";
2525
export * from "./useWaitForTransaction.js";
26+
export * from "./useEvents.js";
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// Copyright © Aptos
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
import { useQuery } from "@tanstack/react-query";
5+
import { useAptosCore } from "../AptosJSCoreProvider.js";
6+
import { FetchEventsParameters, FetchEventsResult } from "@aptos-labs/js-pro";
7+
import { AnyNumber } from "@aptos-labs/ts-sdk";
8+
import { UseQueryOptions } from "../types/queries.js";
9+
10+
export const getUseEventsQueryKey = (params: {
11+
network: string;
12+
minimumLedgerVersion?: AnyNumber;
13+
options?: FetchEventsParameters["options"];
14+
}) => ["events", params.network, params.minimumLedgerVersion, params.options];
15+
16+
export type UseEventsQueryParameters = FetchEventsParameters &
17+
UseQueryOptions<FetchEventsResult>;
18+
19+
export function useEvents({
20+
network,
21+
minimumLedgerVersion,
22+
options,
23+
...queryOptions
24+
}: UseEventsQueryParameters) {
25+
const core = useAptosCore();
26+
27+
const activeNetwork = network ?? core.network;
28+
29+
return useQuery({
30+
queryKey: getUseEventsQueryKey({
31+
network: activeNetwork.network,
32+
minimumLedgerVersion,
33+
options,
34+
}),
35+
queryFn: () =>
36+
core.client.fetchEvents({ network, minimumLedgerVersion, options }),
37+
...queryOptions,
38+
});
39+
}

0 commit comments

Comments
 (0)