Closed rkdcodus closed 2 days ago
api/diary/{diaryId}/visibility
당일이 아니더라도 일기의 공개/비공개를 설정할 수 있는 기능이 추가되었습니다.
const fetchAxios = async (diaryId: Id) => { const res = await API.patch(END_POINT.visibility(diaryId)); return res.data; }; export const usePatchVisibility = (diaryId: Id, isPrivate?: boolean) => { const { toast } = useToast(); const queryClient = useQueryClient(); return useMutation({ mutationFn: () => fetchAxios(diaryId), onSuccess: () => { toast(isPrivate ? '일기를 공개했어요' : '일기를 비공개했어요'); queryClient.invalidateQueries({ queryKey: ['get-diaryDetail'], }); }, }); };
const Setting = ({ diaryId, createdDate, detail }: SettingProps) => { ... const { mutate: patchVisibility } = usePatchVisibility( diaryId, detail?.isPrivate, ); const editVisibility = () => { if (detail) { const setting = { title: detail.isPrivate ? '일기 공개하기' : '일기 비공개하기', content: detail.isPrivate ? MODAL.visibility.public : MODAL.visibility.private, }; const button1 = { active: true, text: MODAL.cancel, }; const button2 = { active: true, text: detail.isPrivate ? '공개하기' : '비공개하기', clickHandler: patchVisibility, color: semantic.light.accent.solid.alternative, interaction: INTERACTION.accent.subtle(), }; modal(setting, button1, button2); } }; ... return ( <Menus icon={more}> {detail && ( <Menu onClick={editVisibility} text={detail.isPrivate ? '공개하기' : '비공개하기'} svg={detail.isPrivate ? lockOpen : lock} /> )} ...
공개하기
비공개하기
추가적인 참고 사항이나 관련된 문서, 링크 등을 제공해주세요.
변경 사항에 대한 스크린샷이 있다면 첨부해주세요.
이슈 번호:
✅ 체크리스트
api/diary/{diaryId}/visibility
api 적용📝 작업 상세 내용
당일이 아니더라도 일기의 공개/비공개를 설정할 수 있는 기능이 추가되었습니다.
usePatchVisibility api 훅 생성
api/diary/{diaryId}/visibility
patch api를 요청하는 훅을 생성했습니다.DiaryDetail/Setting.tsx 내부
공개하기
/비공개하기
버튼을 클릭하면 patch api를 요청합니다.🚨 버그 발생 이유 (선택 사항)
🔎 후속 작업 (선택 사항)
🤔 질문 사항 (선택 사항)
📚 참고 자료 (선택 사항)
추가적인 참고 사항이나 관련된 문서, 링크 등을 제공해주세요.
📸 스크린샷 (선택 사항)
변경 사항에 대한 스크린샷이 있다면 첨부해주세요.
✅ 셀프 체크리스트
이슈 번호: