Skip to content

Commit

Permalink
feat : frontend api에 objectToQueryString 적용
Browse files Browse the repository at this point in the history
DESC
----
- frontend api에 queryString이 필요한 경우 objectToQueryString 사용
  • Loading branch information
Themion committed Sep 17, 2023
1 parent 0e57cf1 commit f957d88
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 11 deletions.
8 changes: 5 additions & 3 deletions packages/frontend/src/api/group/list.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
import { GroupListDTO } from '@my-task/common';
import { GroupListDTO, mergeObjects } from '@my-task/common';
import { useQuery } from '@tanstack/react-query';
import { GroupListParam, QueryOptions } from '~/types';
import { objectToQueryString } from '~/utils';
import _fetch from '../core';

const fetchGroupList = (options: QueryOptions<GroupListDTO>, param: Partial<GroupListParam>) =>
useQuery({
queryKey: ['fetchGroupList', (param.page ?? 1).toString()],
queryFn: () => {
const paramArr = Object.entries(param).map(([key, value]) => `${key}=${value}`);
return _fetch(`/group?${paramArr.join('&')}`);
const queryObject = mergeObjects(param, { page: 1 }) as GroupListParam;
const queryString = objectToQueryString(queryObject);
return _fetch(`/group${queryString}`);
},
...options,
});
Expand Down
13 changes: 5 additions & 8 deletions packages/frontend/src/api/member/list.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,18 @@
import { MemberListDTO } from '@my-task/common';
import { MemberListDTO, mergeObjects } from '@my-task/common';
import { useMutation } from '@tanstack/react-query';
import { HttpMethod } from '~/constants';
import { MemberListParam, MutationOptions } from '~/types';
import { objectToQueryString } from '~/utils';
import _fetch from '../core';

const fetchMemberList = (options: MutationOptions<MemberListDTO>) =>
useMutation({
mutationKey: ['fetchMemberList'],
mutationFn: (param: MemberListParam) => {
const { groupId, page } = param;
const { groupId, page } = mergeObjects(param, { page: 1 }) as Required<MemberListParam>;
const queryString = objectToQueryString({ page });

const queryString = Object.entries({ page })
.filter(([_, value]) => !!value)
.map(([key, value]) => `${key}=${value}`)
.join('&');

return _fetch(`/member/${groupId}${queryString && `?${queryString}`}`, {
return _fetch(`/member/${groupId}${queryString}`, {
method: HttpMethod.GET,
});
},
Expand Down

0 comments on commit f957d88

Please sign in to comment.