-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature/BAR-153] 폴더 만들기 기능 추가 #57
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
충돌이 엄청 나겠네요... 죄송합니다😥
@dongkyun-dev @wonjin-dev
#58 이 작업 먼저 머지하면 좋을 것 같은데 요거 작업 먼저 리뷰 부탁드립니다! 😔
try { | ||
await mutateAsync(value); | ||
await queryClient.invalidateQueries({ | ||
queryKey: ['memo-folders'], | ||
}); | ||
closeModal(); | ||
} catch (e) { | ||
if (!(e instanceof AxiosError) || !e.response) throw e; | ||
if (e.response.data.errorCode === 'MF01') | ||
return setErrorMessage('이미 사용 중인 폴더 이름이에요!'); | ||
throw e; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
useMutation의 onError, onSuccess를 활용하시면 좋을 것 같아요!
요건... 지금하고 있는 다른 프로젝트에서 예시 코드 들고 왔습니다!
import { useToast } from '@chakra-ui/react';
import {
useMutation,
type UseMutationOptions,
useQueryClient,
} from '@tanstack/react-query';
import { type AxiosError } from 'axios';
import {
backOfficeApi,
type PortfolioResponse,
type PortfolioStatusParams,
} from '@/apis/backOffice';
import { PORTFOLIO_ITEM_KEY } from '@/constants/queryKey';
export const useUpdatePortfolioStatus = (
portfolioId: number,
options?: UseMutationOptions<
PortfolioResponse,
AxiosError,
Omit<PortfolioStatusParams, 'portfolioId'>
>
) => {
const toast = useToast();
const queryClient = useQueryClient();
return useMutation({
mutationFn: (params) =>
backOfficeApi.putPortfolioStatus({
...params,
portfolioId,
}),
...options,
onError: (error: AxiosError) => {
const isError = error.response?.data as { data?: string };
if (isError) {
toast({
title: isError.data,
status: 'error',
isClosable: true,
});
}
},
onSuccess: (data, variables, context) => {
queryClient.invalidateQueries(
PORTFOLIO_ITEM_KEY.detail([{ portfolioId }])
);
options?.onSuccess?.(data, variables, context);
toast({
title: '정상적으로 수정되었습니다.',
status: 'success',
isClosable: true,
});
},
});
};
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
요거 머지하고 150 브랜치에서 반영해볼게요!
* feat: 필요 api 작성 * feat: 에러 아이콘 추가 * feat: 불필요 모달 타입 제거 * feat: button, dialog 컴포넌트 확장 * fix: dialog z-index 수정 * feat: 새폴더만들기 모달 작성 * feat: dialog 연동
* feat: 필요 api 작성 * feat: 에러 아이콘 추가 * feat: 불필요 모달 타입 제거 * feat: button, dialog 컴포넌트 확장 * fix: dialog z-index 수정 * feat: 새폴더만들기 모달 작성 * feat: dialog 연동
* feat: 아이콘 반영 * feat: button이 호버되었을 때 svg의 fill 활성화 global 설정 * feat: Button 컴포넌트 확장 * feat: 아이콘의 기본 색상 props로 전달 * feat: 참고하는 탭 작성 * feat: 기본 모델 작성 * feat: FilterHeader 작성 * feat: FilterButton 작성 * feat: 버튼 호버시 아이콘의 색상 변경 * fix: pointerEvents 위치 변경 * refactor: api 하위 폴더 index 파일로 변경 * refactor: query hook 형식 변경 * [Feature/BAR-153] 폴더 만들기 기능 추가 (#57) * feat: 필요 api 작성 * feat: 에러 아이콘 추가 * feat: 불필요 모달 타입 제거 * feat: button, dialog 컴포넌트 확장 * fix: dialog z-index 수정 * feat: 새폴더만들기 모달 작성 * feat: dialog 연동 * feat: Dropdown 컴포넌트 반영 * feat: 템플릿에 대한 api 연동 * feat: 리뷰 반영 * feat: 템플릿 저장 기능 추가 * feat: mutate 처리 추가 * feat: 수정 사항 반영
Summary
To Reviewers
a55934d
Dialog 노출을 결정하는 버튼의 클릭에 대해서는 배제해야하기 때문에 ref를 넘기는 형태로 변경하였습니다.
How To Test