From d65754efb0bf061cf6fa68b821fe02ef5668dcfd Mon Sep 17 00:00:00 2001 From: prgmr99 Date: Thu, 16 May 2024 14:12:23 +0900 Subject: [PATCH 1/3] =?UTF-8?q?fix:=20#189=20=EB=A1=9C=EA=B7=B8=EC=9D=B8?= =?UTF-8?q?=20=EC=83=81=ED=83=9C=20=EC=9C=A0=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/atom.tsx | 1 + src/components/header/Header.tsx | 12 ++++++------ .../recruit/recruitDetailPage/RecruitDetailPage.tsx | 2 ++ 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/atom.tsx b/src/atom.tsx index f3362000..c46e8c01 100644 --- a/src/atom.tsx +++ b/src/atom.tsx @@ -14,6 +14,7 @@ export const userState = atom({ export const loginState = atom({ key: 'loginState', default: false, + effects: [LocalStorageEffect('loginState')], }); export const pageState = atom({ diff --git a/src/components/header/Header.tsx b/src/components/header/Header.tsx index 14bbfdb4..ff14ae64 100644 --- a/src/components/header/Header.tsx +++ b/src/components/header/Header.tsx @@ -3,7 +3,7 @@ import S from './Header.styled'; import { useLocation, useNavigate, useParams } from 'react-router-dom'; import { DropdownArrow, Logo, LogoName } from '../../assets'; import { ProfileImage, WaitModal } from '..'; -import { useRecoilState, useSetRecoilState } from 'recoil'; +import { useRecoilState, useSetRecoilState, useRecoilValue } from 'recoil'; import { recruitFilterState, userState, waitModalState, loginState } from '../../atom'; import { useLogin, useSignOut } from '../../hooks'; import { fixModalBackground, resetFormData } from '../../utils'; @@ -12,7 +12,7 @@ const Header = () => { const navigate = useNavigate(); const { id } = useParams(); const location = useLocation(); - const { isLoggedIn } = useLogin(); + const isLogin = useRecoilValue(loginState); const setLoginState = useSetRecoilState(loginState); const [userInfo, setUserState] = useRecoilState(userState); const dropdownRef = useRef(null); @@ -45,7 +45,7 @@ const Header = () => { }; const onClickMy = () => { - if (!isLoggedIn) { + if (!isLogin) { navigate('/signin'); } else { setOpenDrop(prev => !prev); @@ -89,13 +89,13 @@ const Header = () => { resetFormData(); return ( - +
- {isLoggedIn && 광운대학교} + {isLogin && 광운대학교}
{
- {isLoggedIn ? ( + {isLogin ? (
diff --git a/src/pages/recruit/recruitDetailPage/RecruitDetailPage.tsx b/src/pages/recruit/recruitDetailPage/RecruitDetailPage.tsx index 333857d8..256df549 100644 --- a/src/pages/recruit/recruitDetailPage/RecruitDetailPage.tsx +++ b/src/pages/recruit/recruitDetailPage/RecruitDetailPage.tsx @@ -58,6 +58,8 @@ const RecruitDetailPage = () => { queryKey: ['detailedPage', { pageNum, isLoggedIn }], queryFn: () => getPostingData({ pageNum, isLoggedIn }), }); + + console.log(detailedData?.comments); const period = detailedData?.proceedingStart + ' ~ ' + detailedData?.proceedingEnd; const diffDate = detailedData && calculateDate(detailedData.deadline); const totalCommentsCount = useMemo(() => { From 4f39e1ebb927370a1c9b3c20dc6aa8a1d9783ce4 Mon Sep 17 00:00:00 2001 From: prgmr99 Date: Thu, 16 May 2024 14:17:30 +0900 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20#189=20=EB=A9=98=EC=85=98=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=20=EB=B0=8F=20=EB=B3=80=EC=88=98=20=EB=84=A4?= =?UTF-8?q?=EC=9D=B4=EB=B0=8D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/comment/comment/Comment.tsx | 5 ++--- src/components/comment/comment/ReplyComment.tsx | 4 ++-- src/components/comment/replyInput/ReplyInput.tsx | 11 ++--------- src/components/dropdown/Dropdown.tsx | 6 +++--- src/components/meeteam/card/RecruitCard.tsx | 4 ++-- .../recruitDetail/footer/ApplierFooter.tsx | 6 +++--- .../recruitDetail/titleInfo/TitleInfo.tsx | 4 ++-- src/hooks/useLogin.ts | 11 +---------- .../recruitCreatePage/RecruitCreatePage.tsx | 6 +++--- .../recruitDetailPage/RecruitDetailPage.tsx | 8 ++++---- src/pages/recruit/recruitPage/RecruitPage.tsx | 16 ++++++++-------- src/service/recruit/board.ts | 6 +++--- src/service/recruit/detail.ts | 6 +++--- 13 files changed, 38 insertions(+), 55 deletions(-) diff --git a/src/components/comment/comment/Comment.tsx b/src/components/comment/comment/Comment.tsx index d4db8e75..b73fa812 100644 --- a/src/components/comment/comment/Comment.tsx +++ b/src/components/comment/comment/Comment.tsx @@ -24,7 +24,7 @@ const Comment = ({ }: CommentType) => { const { id: recruitId } = useParams(); const pageNum = Number(recruitId); - const { isLoggedIn } = useLogin(); + const { isLogin } = useLogin(); const [replyClicked, setReplyClicked] = useState(false); const [value, setValue] = useState(content); const [showKebab, setShowKebab] = useState(true); @@ -170,7 +170,7 @@ const Comment = ({ )}
- {showKebab && isLoggedIn && ( + {showKebab && isLogin && ( )}
@@ -187,7 +187,6 @@ const Comment = ({ onClickCancel={onClickCancel} groupNumber={groupNumber} pageNum={pageNum} - mention={mention} replyInputHandler={replyInputHandler} /> )} diff --git a/src/components/comment/comment/ReplyComment.tsx b/src/components/comment/comment/ReplyComment.tsx index a180cde5..7ca22186 100644 --- a/src/components/comment/comment/ReplyComment.tsx +++ b/src/components/comment/comment/ReplyComment.tsx @@ -23,7 +23,7 @@ const ReplyComment = ({ replyComment, }: CommentType) => { const { id: recruitId } = useParams(); - const { isLoggedIn } = useLogin(); + const { isLogin } = useLogin(); const pageNum = Number(recruitId); const [value, setValue] = useState(content); const [showKebab, setShowKebab] = useState(true); @@ -161,7 +161,7 @@ const ReplyComment = ({ )} - {showKebab && isLoggedIn && ( + {showKebab && isLogin && ( )} diff --git a/src/components/comment/replyInput/ReplyInput.tsx b/src/components/comment/replyInput/ReplyInput.tsx index ef079058..a670151e 100644 --- a/src/components/comment/replyInput/ReplyInput.tsx +++ b/src/components/comment/replyInput/ReplyInput.tsx @@ -8,23 +8,16 @@ import { useRecoilValue } from 'recoil'; import { userState } from '../../../atom'; interface ReplyHandler { - mention?: string; pageNum: number; groupNumber: number; onClickCancel: () => void; replyInputHandler: () => void; } -const ReplyInput = ({ - mention, - pageNum, - groupNumber, - onClickCancel, - replyInputHandler, -}: ReplyHandler) => { +const ReplyInput = ({ pageNum, groupNumber, onClickCancel, replyInputHandler }: ReplyHandler) => { const postComment = useComment(); const queryClient = useQueryClient(); - const [contents, setContents] = useState(mention ? `@${mention + ' '}` : ''); + const [contents, setContents] = useState(''); const userInfo = useRecoilValue(userState); const addReply = () => { diff --git a/src/components/dropdown/Dropdown.tsx b/src/components/dropdown/Dropdown.tsx index ab155982..2b39509f 100644 --- a/src/components/dropdown/Dropdown.tsx +++ b/src/components/dropdown/Dropdown.tsx @@ -43,7 +43,7 @@ const Dropdown = ({ data, initialData, scope, category, applicant, roleObj }: Dr course: false, professor: false, }); - const { isLoggedIn } = useLogin(); + const { isLogin } = useLogin(); const [isScopeSelected, setIsScopeSelected] = useState(false); const [isCategorySelected, setIsCategorySelected] = useState(false); const insideRef = useRef(null); @@ -68,14 +68,14 @@ const Dropdown = ({ data, initialData, scope, category, applicant, roleObj }: Dr const { data: dataCourse, isLoading: isLoadingCourse } = useQuery({ queryKey: ['searchCourse', keywordCourse], queryFn: () => getCourseKeyword(keywordCourse), - enabled: isLoggedIn, + enabled: isLogin, staleTime: Infinity, gcTime: Infinity, }); const { data: dataProfessor, isLoading: isLoadingProfessor } = useQuery({ queryKey: ['searchProfessor', keywordProfessor], queryFn: () => getProfessorKeyword(keywordProfessor), - enabled: isLoggedIn, + enabled: isLogin, staleTime: Infinity, gcTime: Infinity, }); diff --git a/src/components/meeteam/card/RecruitCard.tsx b/src/components/meeteam/card/RecruitCard.tsx index 6f2592d9..ffaa8099 100644 --- a/src/components/meeteam/card/RecruitCard.tsx +++ b/src/components/meeteam/card/RecruitCard.tsx @@ -31,7 +31,7 @@ const RecruitCard = ({ const location = useLocation(); const navigate = useNavigate(); const [path, setPath] = useState(''); - const { isLoggedIn } = useLogin(); + const { isLogin } = useLogin(); const { mutate: bookmarked } = useBookmark({ queryKey: path, }); @@ -50,7 +50,7 @@ const RecruitCard = ({ const onClickBookmark = (event: React.MouseEvent) => { event.stopPropagation(); - if (!isLoggedIn) { + if (!isLogin) { setNeedLoginModal({ isOpen: true, type: 'BOOKMARK' }); return; } diff --git a/src/components/recruit/recruitDetail/footer/ApplierFooter.tsx b/src/components/recruit/recruitDetail/footer/ApplierFooter.tsx index 06d34df1..eb508bb2 100644 --- a/src/components/recruit/recruitDetail/footer/ApplierFooter.tsx +++ b/src/components/recruit/recruitDetail/footer/ApplierFooter.tsx @@ -16,7 +16,7 @@ interface ApplierData { const ApplierFooter = ({ deadline, isApplied, isBookmarked }: ApplierData) => { const { id } = useParams(); const pageNum = Number(id); - const { isLoggedIn } = useLogin(); + const { isLogin } = useLogin(); const diffDate = calculateDate(deadline); const setIsModal = useSetRecoilState(applyModalState); const setNeedLoginModal = useSetRecoilState(needLoginModalState); @@ -26,7 +26,7 @@ const ApplierFooter = ({ deadline, isApplied, isBookmarked }: ApplierData) => { const setIsCancel = useSetRecoilState(applyCancelModalState); const onClickApply = () => { - if (isLoggedIn) { + if (isLogin) { setIsModal(true); } else { setNeedLoginModal({ isOpen: true, type: 'RECRUIT_APPLY' }); @@ -38,7 +38,7 @@ const ApplierFooter = ({ deadline, isApplied, isBookmarked }: ApplierData) => { }; const onClickBookmark = () => { - if (!isLoggedIn) { + if (!isLogin) { setNeedLoginModal({ isOpen: true, type: 'BOOKMARK' }); return; } diff --git a/src/components/recruit/recruitDetail/titleInfo/TitleInfo.tsx b/src/components/recruit/recruitDetail/titleInfo/TitleInfo.tsx index 6f369994..ce4c6ea9 100644 --- a/src/components/recruit/recruitDetail/titleInfo/TitleInfo.tsx +++ b/src/components/recruit/recruitDetail/titleInfo/TitleInfo.tsx @@ -21,13 +21,13 @@ const TitleInfo = ({ isBookmarked, }: TitleAndEtc) => { const { id } = useParams(); - const { isLoggedIn } = useLogin(); + const { isLogin } = useLogin(); const { mutate: bookmarked } = useBookmark({ queryKey: 'detailedPage' }); const { mutate: unBookmarked } = useDelBookmark({ queryKey: 'detailedPage' }); const [needLoginModal, setNeedLoginModal] = useRecoilState(needLoginModalState); const toggleBookmark = () => { - if (!isLoggedIn) { + if (!isLogin) { setNeedLoginModal({ isOpen: true, type: 'BOOKMARK' }); return; } diff --git a/src/hooks/useLogin.ts b/src/hooks/useLogin.ts index 48d83e01..df0b5f25 100644 --- a/src/hooks/useLogin.ts +++ b/src/hooks/useLogin.ts @@ -4,18 +4,9 @@ import { loginState } from '../atom'; // 임시 const useLogin = () => { - const [isLoggedIn, setIsLoggedIn] = useState(false); const isLogin = useRecoilValue(loginState); - useEffect(() => { - if (isLogin) { - setIsLoggedIn(true); - } else { - setIsLoggedIn(false); - } - }, [isLogin]); - - return { isLoggedIn }; + return { isLogin }; }; export default useLogin; diff --git a/src/pages/create/recruitCreatePage/RecruitCreatePage.tsx b/src/pages/create/recruitCreatePage/RecruitCreatePage.tsx index 27252cec..a8913a72 100644 --- a/src/pages/create/recruitCreatePage/RecruitCreatePage.tsx +++ b/src/pages/create/recruitCreatePage/RecruitCreatePage.tsx @@ -22,7 +22,7 @@ const RecruitCreatePage = () => { const { id } = useParams(); const location = useLocation(); const navigate = useNavigate(); - const { isLoggedIn } = useLogin(); + const { isLogin } = useLogin(); const validCheck = useRecoilValue(validState); const setIsSubmit = useSetRecoilState(validState); const [beforeSubmit, setBeforeSubmit] = useState(false); @@ -47,8 +47,8 @@ const RecruitCreatePage = () => { const pageNum = Number(id); const { data, isSuccess } = useQuery({ - queryKey: ['detailedPage', { pageNum, isLoggedIn }], - queryFn: () => getPostingData({ pageNum, isLoggedIn }), + queryKey: ['detailedPage', { pageNum, isLogin }], + queryFn: () => getPostingData({ pageNum, isLogin }), enabled: !!id, }); diff --git a/src/pages/recruit/recruitDetailPage/RecruitDetailPage.tsx b/src/pages/recruit/recruitDetailPage/RecruitDetailPage.tsx index 256df549..2b521fdf 100644 --- a/src/pages/recruit/recruitDetailPage/RecruitDetailPage.tsx +++ b/src/pages/recruit/recruitDetailPage/RecruitDetailPage.tsx @@ -53,10 +53,10 @@ const RecruitDetailPage = () => { 1: , 2: , }; - const { isLoggedIn } = useLogin(); + const { isLogin } = useLogin(); const { data: detailedData, isSuccess } = useQuery({ - queryKey: ['detailedPage', { pageNum, isLoggedIn }], - queryFn: () => getPostingData({ pageNum, isLoggedIn }), + queryKey: ['detailedPage', { pageNum, isLogin }], + queryFn: () => getPostingData({ pageNum, isLogin }), }); console.log(detailedData?.comments); @@ -124,7 +124,7 @@ const RecruitDetailPage = () => { return ; })} - {isLoggedIn ? ( + {isLogin ? ( ) : (
diff --git a/src/pages/recruit/recruitPage/RecruitPage.tsx b/src/pages/recruit/recruitPage/RecruitPage.tsx index e9334397..f72d17a7 100644 --- a/src/pages/recruit/recruitPage/RecruitPage.tsx +++ b/src/pages/recruit/recruitPage/RecruitPage.tsx @@ -66,10 +66,10 @@ const RecruitPage = () => { }); const [searchParams, setSearchParams] = useSearchParams(); const [needLoginModal, setNeedLoginModal] = useRecoilState(needLoginModalState); - const { isLoggedIn } = useLogin(); + const { isLogin } = useLogin(); const { data, isLoading } = useQuery({ - queryKey: ['recruit_board', { filterState, isLoggedIn, page }], - queryFn: () => getPostList({ filterState, isLoggedIn, page }), + queryKey: ['recruit_board', { filterState, isLogin, page }], + queryFn: () => getPostList({ filterState, isLogin, page }), }); const onClickDetailed = (event: React.MouseEvent) => { @@ -170,7 +170,7 @@ const RecruitPage = () => { }; const recruitCreateHandler = () => { - if (isLoggedIn) { + if (isLogin) { navigate('/recruitment/postings'); } else { setNeedLoginModal({ isOpen: true, type: 'RECRUIT_CREATE' }); @@ -178,7 +178,7 @@ const RecruitPage = () => { }; const bookmarkNavigateHandler = () => { - if (isLoggedIn) { + if (isLogin) { navigate('/management/bookmark'); } else { setNeedLoginModal({ isOpen: true, type: 'MANAGE_BOOKMARK' }); @@ -186,7 +186,7 @@ const RecruitPage = () => { }; const profileCreateHandler = () => { - if (isLoggedIn) { + if (isLogin) { navigate('/profile/edit'); } else { setNeedLoginModal({ isOpen: true, type: 'PROFILE_CREATE' }); @@ -194,7 +194,7 @@ const RecruitPage = () => { }; const portfolioCreateHandler = () => { - if (isLoggedIn) { + if (isLogin) { navigate('/portfolio/edit'); } else { setNeedLoginModal({ isOpen: true, type: 'PORTFOLIO_CREATE' }); @@ -327,7 +327,7 @@ const RecruitPage = () => {
- {isLoggedIn && ( + {isLogin && ( )} { +export const getPostList = async ({ filterState, isLogin, page }: FilterItem) => { try { - if (isLoggedIn) { + if (isLogin) { const response = await axiosAuthInstance.get(EndPoint.RECRUITMENT_BOARD.list, { params: { skill: filterState.skill, diff --git a/src/service/recruit/detail.ts b/src/service/recruit/detail.ts index 84e58032..d49b7d1d 100644 --- a/src/service/recruit/detail.ts +++ b/src/service/recruit/detail.ts @@ -10,12 +10,12 @@ import { interface PostingData { pageNum: number; - isLoggedIn: boolean; + isLogin: boolean; } -export const getPostingData = async ({ pageNum, isLoggedIn }: PostingData) => { +export const getPostingData = async ({ pageNum, isLogin }: PostingData) => { try { - if (isLoggedIn) { + if (isLogin) { const response = await axiosAuthInstance.get( EndPoint.RECRUIT_DETAIL.posting(pageNum) ); From 1e364bbb7e6135ef85ecab59753dd67a03568547 Mon Sep 17 00:00:00 2001 From: prgmr99 Date: Thu, 16 May 2024 14:34:07 +0900 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20#189=20=EC=97=AD=ED=95=A0=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=20=EB=A1=9C=EC=A7=81=20=EB=B9=A0=EC=A7=84=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../recruit/create/recruitRoles/RecruitRolesForm.tsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/components/recruit/create/recruitRoles/RecruitRolesForm.tsx b/src/components/recruit/create/recruitRoles/RecruitRolesForm.tsx index b5e8dc0e..0a427ff0 100644 --- a/src/components/recruit/create/recruitRoles/RecruitRolesForm.tsx +++ b/src/components/recruit/create/recruitRoles/RecruitRolesForm.tsx @@ -8,6 +8,7 @@ import { RecruitApplicantsList } from '../../../../types'; const RecruitRoleForm = ({ applicantsList }: RecruitApplicantsList) => { const { id } = useParams(); + const pageNum = Number(id); const [info, setInfo] = useRecoilState(recruitInputState); const setWarnRoleDeleteState = useSetRecoilState(warnRoleDeleteModalState); @@ -23,6 +24,11 @@ const RecruitRoleForm = ({ applicantsList }: RecruitApplicantsList) => { } else { setWarnRoleDeleteState(true); } + } else { + setInfo(prev => ({ + ...prev, + recruitmentRoles: prev.recruitmentRoles?.filter(elem => elem.roleId !== id), + })); } };