Skip to content

Commit 08429a9

Browse files
committed
Adding cancelation when query unmounts
1 parent d933bfa commit 08429a9

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

components/dashboard/src/data/git-providers/provider-repositories-query.ts

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import { useQuery } from "@tanstack/react-query";
88
import { getGitpodService } from "../../service/service";
99
import { useCurrentUser } from "../../user-context";
10+
import { CancellationTokenSource } from "vscode-jsonrpc";
1011

1112
type UseProviderRepositoriesQueryArgs = {
1213
provider: string;
@@ -17,11 +18,22 @@ export const useProviderRepositoriesForUser = ({ provider, installationId }: Use
1718

1819
return useQuery(
1920
["provider-repositories", { userId: user?.id }, { provider, installationId }],
20-
async () => {
21-
return await getGitpodService().server.getProviderRepositoriesForUser({
22-
provider,
23-
hints: { installationId },
21+
async ({ signal }) => {
22+
// jsonrpc cancellation token that we subscribe to the abort signal provided by react-query
23+
const cancelToken = new CancellationTokenSource();
24+
25+
signal?.addEventListener("abort", () => {
26+
cancelToken.cancel();
2427
});
28+
29+
return await getGitpodService().server.getProviderRepositoriesForUser(
30+
{
31+
provider,
32+
hints: { installationId },
33+
},
34+
// @ts-ignore - not sure why types don't support this
35+
cancelToken.token,
36+
);
2537
},
2638
{
2739
enabled: !!provider,

0 commit comments

Comments
 (0)