Skip to content

Commit 1e2e01c

Browse files
committed
Extract api functions
1 parent 6a4d81a commit 1e2e01c

File tree

5 files changed

+39
-25
lines changed

5 files changed

+39
-25
lines changed

api/issues.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { axios } from "./axios";
2+
3+
type IssueFilters = {
4+
status?: "open" | "resolved";
5+
};
6+
7+
const ENDPOINT = "/issue";
8+
9+
export async function getIssues(
10+
page: number,
11+
filters: IssueFilters = {},
12+
options?: { signal?: AbortSignal }
13+
) {
14+
const { data } = await axios.get(ENDPOINT, {
15+
params: { page, ...filters },
16+
signal: options?.signal,
17+
});
18+
return data;
19+
}
20+
21+
export async function resolveIssue(issueId: string) {
22+
const { data } = await axios.patch(`${ENDPOINT}/${issueId}`, {
23+
status: "resolved",
24+
});
25+
return data;
26+
}

api/projects.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { axios } from "./axios";
2+
3+
const ENDPOINT = "/project";
4+
5+
export async function getProjects() {
6+
const { data } = await axios.get(ENDPOINT);
7+
return data;
8+
}

features/issues/api/use-get-issues.tsx

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useEffect } from "react";
22
import { useQuery, useQueryClient } from "@tanstack/react-query";
3-
import { axios } from "@api/axios";
3+
import { getIssues } from "@api/issues";
44
import type { Page } from "@typings/page.types";
55
import type { Issue } from "@features/issues";
66

@@ -13,18 +13,10 @@ export function getQueryKey(page?: number) {
1313
return [QUERY_KEY, page];
1414
}
1515

16-
async function getIssues(page: number, options?: { signal?: AbortSignal }) {
17-
const { data } = await axios.get("/issue", {
18-
params: { page, status: "open" },
19-
signal: options?.signal,
20-
});
21-
return data;
22-
}
23-
2416
export function useGetIssues(page: number) {
2517
const query = useQuery<Page<Issue>, Error>(
2618
getQueryKey(page),
27-
({ signal }) => getIssues(page, { signal }),
19+
({ signal }) => getIssues(page, { status: "open" }, { signal }),
2820
{ keepPreviousData: true }
2921
);
3022

@@ -33,7 +25,7 @@ export function useGetIssues(page: number) {
3325
useEffect(() => {
3426
if (query.data?.meta.hasNextPage) {
3527
queryClient.prefetchQuery(getQueryKey(page + 1), ({ signal }) =>
36-
getIssues(page + 1, { signal })
28+
getIssues(page + 1, { status: "open" }, { signal })
3729
);
3830
}
3931
}, [query.data, page, queryClient]);

features/issues/api/use-resolve-issue.tsx

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,9 @@
11
import { useMutation, useQueryClient } from "@tanstack/react-query";
22
import { useRef } from "react";
3-
import { axios } from "@api/axios";
3+
import { resolveIssue } from "@api/issues";
44
import * as GetIssues from "./use-get-issues";
55
import type { Issue } from "@features/issues";
66

7-
async function resolveIssue(issueId: string) {
8-
const { data } = await axios.patch(`/issue/${issueId}`, {
9-
status: "resolved",
10-
});
11-
return data;
12-
}
13-
147
export function useResolveIssue(page: number) {
158
const queryClient = useQueryClient();
169
const ongoingMutationCount = useRef(0);
Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
11
import { useQuery } from "@tanstack/react-query";
2-
import { axios } from "@api/axios";
2+
import { getProjects } from "@api/projects";
33
import type { Project } from "@features/projects";
44

5-
async function getProjects() {
6-
const { data } = await axios.get("/project");
7-
return data;
8-
}
9-
105
export function useProjects() {
116
return useQuery<Project[], Error>(["projects"], getProjects);
127
}

0 commit comments

Comments
 (0)