Skip to content
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

10주차 산출물 #120

Merged
merged 151 commits into from
Nov 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
151 commits
Select commit Hold shift + click to select a range
ae27adc
Refactor/#47 6주차 코드리뷰 리팩토링 (#48)
kang-kibong Oct 15, 2024
8355b25
Feat/#42, #43 지원자 목록 페이지 및 팝업 구현 (#51)
KimJi-An Oct 16, 2024
89d9065
refactor: MyAccount 페이지 구조 변경 및 CompanyRecruitments로 파일명 변경
KimJi-An Oct 16, 2024
55ba78b
refactor: visaRegistration 관련 파일 구조 변경
KimJi-An Oct 16, 2024
8923cea
feat: Table 컴포넌트 구현
KimJi-An Oct 17, 2024
88e063a
feat: 변경된 고용주 마이페이지 구현
KimJi-An Oct 17, 2024
073a389
refactor: 회사 관련 공통 기능을 features/companies로 이동 및 CompanyInfo 수정
KimJi-An Oct 17, 2024
26156cd
refactor: CompanyRecruitments 페이지 이름을 MyCompany로 변경
KimJi-An Oct 17, 2024
7925d21
feat: EmployerMyAccount path 설정
KimJi-An Oct 17, 2024
018882d
refactor: 불필요한 코드 삭제 및 폴더명 일관성 있게 변경
KimJi-An Oct 17, 2024
a20fddc
Feat/#50 Select 컴포넌트 구현 (#53)
kang-kibong Oct 18, 2024
83f4b89
refactor: EmployerMyAccount 페이지에서 mock 데이터 분리 및 코드 정리
KimJi-An Oct 19, 2024
414f62a
refactor: visaRegistration 및 applicants 페이지의 mock, style 파일 분리
KimJi-An Oct 19, 2024
cc112d9
refactor: RecruitmentList 컴포넌트 리팩토링 및 RecruitmentsTable 분리
KimJi-An Oct 20, 2024
7442410
refactor: CompanyInfo 반응형 디자인 수정
KimJi-An Oct 20, 2024
9458fab
refactor: 외국인 번호 및 비자 발급 일자 등록 페이지 스타일 수정
KimJi-An Oct 20, 2024
adc6008
refactor: Header 컴포넌트의 닉네임 버튼을 사용자 프로필 이미지로 변경
KimJi-An Oct 21, 2024
2d40e4f
Refactor/#54 Modal 컴포넌트 재설계 (#55)
kang-kibong Oct 22, 2024
e0d26eb
refactor: 코드 리뷰 반영
KimJi-An Oct 22, 2024
63d9a90
Feat/#56 메인 페이지 API 연동 (#57)
kang-kibong Oct 23, 2024
64a27e0
Feat/#58 OAuth 구글 로그인 구현 (#59)
kang-kibong Oct 23, 2024
a44ea1f
Feat/#60 가입자 정보 선택 API 연동 (#61)
kang-kibong Oct 23, 2024
763d0ef
Merge branch 'feat/#52' of https://github.com/KimJi-An/Team18_FE into…
kang-kibong Oct 23, 2024
0c091e2
style: Button 컴포넌트 Props 이름변경 theme->design
YIMSEBIN Oct 24, 2024
04b5241
feat: 근로자마이페이지 아이콘 설정
YIMSEBIN Oct 24, 2024
38bd68c
feat: 근로자 마이페이지 구현
YIMSEBIN Oct 24, 2024
8da4a9b
feat: 근로자마이페이지 라우터 설정
YIMSEBIN Oct 24, 2024
9e1cc13
style: Button props 이름 변경
YIMSEBIN Oct 24, 2024
bd85e56
feat: msw 세팅 및 API path 작성
YIMSEBIN Oct 24, 2024
5210eeb
feat: 구인글 등록 API 연결 및 msw 세팅
YIMSEBIN Oct 24, 2024
f3e1e2b
fix: 구인글 업로드 mock 핸들러 수정
YIMSEBIN Oct 24, 2024
20847b3
feat: 근로자 마이페이지 mock 핸들러 추가
YIMSEBIN Oct 24, 2024
97fed35
feat: 근로자 마이페이지 API 연결 및 msw 설정
YIMSEBIN Oct 24, 2024
19e1a90
feat: 이력서 페이지 구현 (#63)
tteokbokki-master Oct 24, 2024
ec1d9a6
Merge branch 'main' of https://github.com/YIMSEBIN/Team18_FE into Weekly
kang-kibong Oct 24, 2024
1bdf9eb
fix: change button prop
kang-kibong Oct 24, 2024
f4545c6
feat: add GitHub Actions workflow for linting and type checking
kang-kibong Oct 24, 2024
21c3b41
Feat/#74 사인 등록 페이지 구현 (#75)
tteokbokki-master Oct 28, 2024
7ad9fc4
Feat/#77 회사 등록 페이지 구현 (#78)
YIMSEBIN Oct 28, 2024
89d3b41
Feat/#76 지원서 페이지 API 연동(msw) (#79)
tteokbokki-master Oct 29, 2024
b2f35ed
Feat/#69 API 연동 (#80)
KimJi-An Oct 29, 2024
4a4a27b
feat: 근로계약서 path 설정
YIMSEBIN Oct 30, 2024
684a542
Merge pull request #82 from YIMSEBIN/Weekly
YIMSEBIN Oct 30, 2024
ed7cd75
Feat/#81 구인 글 상세 화면 수정 및 API 연결 (#83)
tteokbokki-master Oct 30, 2024
6d2d80e
Refactor/#71 9주차 기능 개선 및 리팩토링 (#84)
KimJi-An Oct 30, 2024
c4383b3
Feat/#85 Header 컴포넌트 기능 추가 및 개선 (#87)
KimJi-An Oct 31, 2024
323d7ce
feat: 근로자 마이페이지 path 연결 완료
YIMSEBIN Oct 31, 2024
5a2a46a
feat: 구인글 업로드 path 연결 완료
YIMSEBIN Oct 31, 2024
096bc5c
feat: 회사 등록 API 연결
YIMSEBIN Oct 31, 2024
5bd6021
feat: i18n 번역 데이터 - 구인글 업로드, 근로자 마이페이지, 회사 등록 페이지
YIMSEBIN Oct 31, 2024
139ea3e
refactor: 구인글 업로드 및 근로자 마이페이지 폴더구조 정리
YIMSEBIN Oct 31, 2024
13109cc
feat: 고용주 근로계약서 작성 API 연결 및 구인글 작성 API 폴더구조 정리
YIMSEBIN Oct 31, 2024
d1dd3eb
feat: 근로자 근로계약서 불러오기 API 연결
YIMSEBIN Oct 31, 2024
17c16c9
feat: 근로자 근로계약서 저장하기 API 연결
YIMSEBIN Oct 31, 2024
9537624
feat: 근로계약서 다운로드 API 연결
YIMSEBIN Oct 31, 2024
11e6f78
Merge pull request #89 from YIMSEBIN/Weekly
YIMSEBIN Nov 1, 2024
46f6372
Merge branch 'Develop' into Weekly
kang-kibong Nov 1, 2024
48214c5
Merge branch 'Weekly' of https://github.com/YIMSEBIN/Team18_FE_fork i…
YIMSEBIN Nov 1, 2024
59c52ec
fix: 이전 merge된 코드에서 발생한 오류 및 잘못된 부분 수정
KimJi-An Nov 1, 2024
48140ed
chore: npm 패키지 업데이트
KimJi-An Nov 1, 2024
7f71e37
Merge pull request #94 from KimJi-An/fix
YIMSEBIN Nov 1, 2024
d48eae1
refactor: 지원자 목록 페이지 경로 수정 및 불필요한 버튼 제거
KimJi-An Nov 1, 2024
fb3ba79
refactor: 근로계약서 페이지 이동 시 applyId 전달 기능 추가
KimJi-An Nov 1, 2024
f8d126f
refactor: 로컬 스토리지의 user 정보 변경에 따라 새로고침 없이 Header가 변경되도록 수정
KimJi-An Nov 1, 2024
ab35532
feat: 구인글 마감 API 연결
KimJi-An Nov 2, 2024
4918010
refactor: 로컬 스토리지 접근 추상화
KimJi-An Nov 4, 2024
b81a502
Merge remote-tracking branch 'upstream/Weekly' into Weekly
tteokbokki-master Nov 4, 2024
521ed2c
Merge branch 'Develop' into Weekly
kang-kibong Nov 4, 2024
054d717
feat: 번역 데이터 작성
KimJi-An Nov 4, 2024
4c0d04a
feat: 이력서 열람 모달 구현
tteokbokki-master Nov 4, 2024
bbaa072
refactor: 언어 관련 기능 및 UI 적용
KimJi-An Nov 4, 2024
9a1d0c7
Merge remote-tracking branch 'upstream/Weekly' into feat/#88
KimJi-An Nov 4, 2024
dd0c670
feat: 자세히 보러가기 버튼 클릭 시 해당 구인글 상세 페이지로 이동
KimJi-An Nov 4, 2024
a711461
refactor: 파일명 및 폴더 구조 개선
KimJi-An Nov 5, 2024
20a47f6
refactor: 폴더 구조 개선
KimJi-An Nov 5, 2024
6937900
refactor: 페이지 이동 기능 함수 이름 변경
KimJi-An Nov 5, 2024
21d223b
fix: 로그인/로그아웃 시 기본 언어 설정 문제 해결
KimJi-An Nov 5, 2024
abde45c
refactor: 내 회사 및 지원자 목록 페이지에 로딩 상태 추가
KimJi-An Nov 5, 2024
ad6be2b
refactor: MyCompany 및 Applicants 페이지 분리
KimJi-An Nov 5, 2024
b6e44a3
Merge pull request #99 from KimJi-An/feat/#88
YIMSEBIN Nov 5, 2024
384c7d9
Merge branch 'Weekly' of https://github.com/YIMSEBIN/Team18_FE_fork i…
YIMSEBIN Nov 5, 2024
78d10cc
fix: 폴더구조 정리 및 훅 이름 변경
YIMSEBIN Nov 5, 2024
2844745
fix: 훅 이름 변경
YIMSEBIN Nov 5, 2024
2a156af
fix: default_inputs 컴포넌트 밖에 정의
YIMSEBIN Nov 5, 2024
1a52467
Merge remote-tracking branch 'upstream/Weekly' into Weekly
tteokbokki-master Nov 6, 2024
b57a8b0
Merge branch 'Weekly' into feat/resumeViewer
tteokbokki-master Nov 6, 2024
c62bbfc
Merge pull request #100 from tteokbokki-master/feat/resumeViewer
YIMSEBIN Nov 6, 2024
b0f1322
chore: i18n 라이브러리 설치
tteokbokki-master Nov 6, 2024
55eeeb5
refactor: 구인글 상세 페이지 path 및 path 타입 변경
tteokbokki-master Nov 6, 2024
fbbaedf
feat: i18n 세팅
tteokbokki-master Nov 6, 2024
b348a8a
feat: 이력서 페이지 i18n 적용
tteokbokki-master Nov 6, 2024
63b065a
Merge pull request #103 from tteokbokki-master/feat/#101
tteokbokki-master Nov 6, 2024
01b03f5
refactor: 번역 데이터 수정
KimJi-An Nov 6, 2024
e59cdd2
feat: 고용주 마이페이지 번역 기능 추가
KimJi-An Nov 6, 2024
a431ee4
feat: 내 회사 페이지 번역 기능 추가
KimJi-An Nov 6, 2024
360ef91
feat: 지원자 목록 페이지 번역 기능 추가
KimJi-An Nov 6, 2024
7540c4d
feat: 외국인 번호 및 비자 발급 일자 등록 페이지 번역 기능 추가
KimJi-An Nov 6, 2024
078733a
feat: 계약하기 팝업창 번역 기능 추가
KimJi-An Nov 6, 2024
03313f2
feat: Header 번역 기능 추가
KimJi-An Nov 6, 2024
ee475cb
refactor: CompanyInfo 반응형 디자인 수정
KimJi-An Nov 6, 2024
704f5a3
fix: 대소문자 인식 문제 해결로 인한 경로 오류 수정
KimJi-An Nov 6, 2024
6cb193a
refactor: 불필요한 코드 삭제 및 Header의 태블릿 환경 너비 조정
KimJi-An Nov 6, 2024
7ddde2e
feat: 고용주 마이페이지에 회사 등록 버튼 추가
KimJi-An Nov 7, 2024
ccf02fd
Merge pull request #105 from KimJi-An/refactor/#102
tteokbokki-master Nov 7, 2024
a5abee8
feat: Footer 컴포넌트 번역 데이터 적용
tteokbokki-master Nov 7, 2024
b88d1e5
feat: 구인글 상세화면 번역 데이터 적용
tteokbokki-master Nov 7, 2024
be4d118
feat: 지원 프로세스 번역 데이터 적용
tteokbokki-master Nov 7, 2024
2c8437b
feat: 지원서 페이지 번역 데이터 적용
tteokbokki-master Nov 7, 2024
2a70d2e
feat: 사인 등록 페이지 번역 데이터 적용
tteokbokki-master Nov 7, 2024
c561572
Merge pull request #107 from tteokbokki-master/feat/#104
YIMSEBIN Nov 7, 2024
058afa4
Merge branch 'kakao-tech-campus-2nd-step3:Weekly' into Weekly
YIMSEBIN Nov 7, 2024
3ffbe6d
feat: 번역데이터 구조 정리 및 근로계약서 번역데이터 작성
YIMSEBIN Nov 7, 2024
99d474a
feat: 번역데이터 적용 - 근로계약서, 회사등록, 근로자마이페이지
YIMSEBIN Nov 7, 2024
4b23087
feat: Input 컴포넌트에 labelstyle props 추가
YIMSEBIN Nov 7, 2024
e2ef7f0
feat: NoticeRequestData type파일로 이동 및 PostNotice 페이지 입력값 수정
YIMSEBIN Nov 7, 2024
5857be2
Feat/#108 번역데이터 적용 및 Input 컴포넌트 수정 (#110)
YIMSEBIN Nov 7, 2024
94c2c82
feat: add prev path
kang-kibong Nov 7, 2024
162030b
feat: translate to auth, home pages
kang-kibong Nov 7, 2024
960ee3c
fix: 근로자 마이페이지 프로필 수정 버튼 삭제
YIMSEBIN Nov 7, 2024
d89a867
Merge branch 'Weekly' into Weekly
YIMSEBIN Nov 7, 2024
0b53421
feat: 구인글 등록 페이지 번역데이터 적용
YIMSEBIN Nov 7, 2024
ebe403b
Merge branch 'Weekly' of https://github.com/YIMSEBIN/Team18_FE_fork i…
YIMSEBIN Nov 7, 2024
92ce097
Merge pull request #111 from YIMSEBIN/Weekly
YIMSEBIN Nov 7, 2024
0818df3
style: 근로계약서 서명버튼 스타일 변경
YIMSEBIN Nov 7, 2024
a7aa25d
Merge pull request #112 from YIMSEBIN/Weekly
YIMSEBIN Nov 7, 2024
c1987cf
feat: 구인글 상세 페이지 비자,이력서,외국인 번호 등록 여부 조회 구현
tteokbokki-master Nov 7, 2024
c5faaee
feat: 지원서 페이지 연결
tteokbokki-master Nov 7, 2024
e002eae
feat: 이력서 제출 성공 시 마이페이지 리다이렉트 구현
tteokbokki-master Nov 7, 2024
dc8b801
refactor: 지원서 페이지 번역 추가
tteokbokki-master Nov 7, 2024
3944bc7
feat: 사인 등록 성공 시 리다이렉트 구현
tteokbokki-master Nov 7, 2024
dcb20fc
feat: 근로자 마이페이지 인삿말 추가 및 입력 오류 수정
YIMSEBIN Nov 7, 2024
185c3c3
fix: 입력 오류 수정
YIMSEBIN Nov 7, 2024
4867571
feat: 구인글 상세 페이지 고용주 버튼 클릭 금지 구현
tteokbokki-master Nov 7, 2024
97c5ef3
fix: 근로계약서 입력 오류 수정
YIMSEBIN Nov 7, 2024
46b6002
Merge branch 'Weekly' into feat/#104
YIMSEBIN Nov 7, 2024
a87a130
Merge pull request #113 from tteokbokki-master/feat/#104
YIMSEBIN Nov 7, 2024
4845f20
Merge pull request #114 from YIMSEBIN/Weekly
YIMSEBIN Nov 7, 2024
c7d28bf
fix: handlers.ts import 오류 수정
YIMSEBIN Nov 8, 2024
52be843
Merge pull request #116 from YIMSEBIN/Weekly
YIMSEBIN Nov 8, 2024
824fef7
feat: add Pagination component
kang-kibong Nov 8, 2024
eb8662c
refactor: move to hooks
kang-kibong Nov 8, 2024
4aee3dd
fix: change select action type to optional
kang-kibong Nov 8, 2024
5a4141f
feat: 고용주 마이페이지에 사용자 이름 표시
KimJi-An Nov 8, 2024
2417f5d
feat: add useRecruitmentData hooks
kang-kibong Nov 8, 2024
ada3702
feat: success GoogleOAuth API
kang-kibong Nov 8, 2024
7d19e34
Merge pull request #117 from KimJi-An/refactor/#115
YIMSEBIN Nov 8, 2024
afef69a
Merge branch 'Weekly' into feat/#86
kang-kibong Nov 8, 2024
f705635
Merge pull request #118 from kakao-tech-campus-2nd-step3/feat/#86
YIMSEBIN Nov 8, 2024
6819e3c
refactor: RecruitDetail storybook 오류 수정 (#119)
tteokbokki-master Nov 8, 2024
3cd29ce
docs: update README.md
kang-kibong Nov 8, 2024
f946f72
Merge branch 'Develop' into Weekly
kang-kibong Nov 8, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 0 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,26 +1 @@
# 🍪 내가 먹은 쿠키 - 18조 FE

## 🙋‍♂️ 9주차 코드리뷰 질문

컴포넌트에는 개발하면서 페이지 내에서 임시로 만들어 사용하는 컴포넌트가 있고, 공통 컴포넌트로 개발해둔 것이 있고, 라이브러리에서 가져와서 사용하는 컴포넌트가 있습니다. 그런데 이런 컴포넌트를 필요에 따라 혼용해서 사용하니까 헷갈리기도 합니다. 이런 컴포넌트 사용에 있어서 지키면 좋을 규칙같은 게 있을까요?

예를 들어 아래에서 Section은 제가 해당 컴포넌트 내에서만 사용하려고 만든 컴포넌트이고, Typo는 공통컴포넌트로 이전에 개발한 컴포넌트입니다.
```tsx
<Section>
<Typo bold element="h3" size="20px" style={{ marginBottom: '24px' }}>
내가 지원한 공고
</Typo>
{myRecruitList && <MyRecruitList myRecruitList={myRecruitList} />}
</Section>
</InnerContainer>
</Layout>
);
}

const Section = styled.div`
width: 100%;
direction: column;
align-items: center;
margin-bottom: 52px;
`;

2,476 changes: 622 additions & 1,854 deletions package-lock.json

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,14 @@
"axios": "^1.7.7",
"buffer": "^6.0.3",
"csstype": "^3.1.3",
"i18next": "^23.16.4",
"jquery": "^3.7.1",
"prop-types": "^15.8.1",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-error-boundary": "^4.1.2",
"react-hook-form": "^7.53.0",
"react-i18next": "^15.1.0",
"react-router-dom": "^6.26.2",
"react-signature-canvas": "^1.0.6",
"zustand": "^4.5.5"
Expand Down
1 change: 1 addition & 0 deletions src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import AppProviders from '@components/providers/index.provider';
import { Outlet } from 'react-router-dom';
import '@/assets/translator/i18n';

function App() {
return (
Expand Down
20 changes: 17 additions & 3 deletions src/apis/apiPath.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
const BASE_URL = '/api';

export const APIPath = {
postRegister: `${BASE_URL}/register`,
postOAuth: `${BASE_URL}/oauth`,
postNotice: `${BASE_URL}/recruitments`,
getSlides: `${BASE_URL}/slides`,
getRecruitments: `${BASE_URL}/recruitments/:filter`,
allApplication: `${BASE_URL}/application/all`,
signEmployeeContract: `${BASE_URL}/contract/employee`,
makeContract: `${BASE_URL}/contract`,
Expand All @@ -14,16 +18,26 @@ export const APIPath = {
getForeigner: `${BASE_URL}/visa/:userId`,
registerVisa: `${BASE_URL}/visa`,
registerCompany: `${BASE_URL}/company`,
apply: '/api/application/',
recruitmentsDetail: '/api/recruitments/:postId',
apply: `${BASE_URL}/application/:recruitmentId`,
resume: `${BASE_URL}/resumes`,
recruitmentsDetail: '/api/recruitments/:recruitmentId',
getApplicantProfile: '/api/resumes/:resumeId/:applyId',
closeRecruitment: `${BASE_URL}/recruitment/hiringClose/:recruitmentId`,
requiredFieldCheck: `${BASE_URL}/application`,
};

export const getDynamicAPIPath = {
downloadContract: (applyId: number) => APIPath.downloadContract.replace(':applyId', applyId.toString()),
apply: (recruitmentId: number) => APIPath.apply.replace(':recruitmentId', recruitmentId.toString()),
getContract: (applyId: number) => APIPath.getContract.replace(':applyId', applyId.toString()),
getMyRecruitments: (companyId: number) => APIPath.getMyRecruitments.replace(':companyId', companyId.toString()),
getMyApplicants: (recruitmentId: number) =>
APIPath.getMyApplicants.replace(':recruitmentId', recruitmentId.toString()),
getForeigner: (userId: number) => APIPath.getForeigner.replace(':userId', userId.toString()),
recruitmentsDetail: (postId: string) => APIPath.recruitmentsDetail.replace(':postId', postId.toString()),
recruitmentsDetail: (postId: number) => APIPath.recruitmentsDetail.replace(':recruitmentId', postId.toString()),
getApplicantProfile: (resumeId: number, applyId: number) =>
APIPath.getApplicantProfile.replace(':resumeId', resumeId.toString()).replace(':applyId', applyId.toString()),
closeRecruitment: (recruitmentId: number) =>
APIPath.closeRecruitment.replace(':recruitmentId', recruitmentId.toString()),
getRecruitments: (filter: string) => APIPath.getRecruitments.replace(':filter', filter),
};
19 changes: 19 additions & 0 deletions src/apis/applicants/hooks/useGetProfileInfo.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { getDynamicAPIPath } from '@/apis/apiPath';
import { clientInstance } from '@/apis/instance';
import { useQuery } from '@tanstack/react-query';

type IdProps = {
resumeId: number;
applyId: number;
};

export const getProfileInfo = async ({ resumeId, applyId }: IdProps) => {
const response = await clientInstance.get(getDynamicAPIPath.getApplicantProfile(resumeId, applyId));
return response.data;
};

export const useGetProfileInfo = ({ resumeId, applyId }: IdProps) =>
useQuery({
queryKey: [getDynamicAPIPath.getApplicantProfile(resumeId, applyId)],
queryFn: () => getProfileInfo({ resumeId, applyId }),
});
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export const recruitment = {
recruitmentId: 1,
image: CompanyImage,
koreanTitle: '쿠팡 유성점에서 아르바이트 모집합니다.',
vietnameseTitle: '',
vietnameseTitle: 'Coupang đang tuyển dụng làm việc bán thời gian tại chi nhánh Yuseong.',
companyName: '쿠팡 유성점',
salary: 50000000,
workHours: '',
Expand Down
2 changes: 1 addition & 1 deletion src/apis/applicants/mocks/foreignerMockHandler.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { APIPath } from '@/apis/apiPath';
import { foreigner } from '@/features/applicants/ApplicantList/ContractModal/ContractModal.mock';
import { foreigner } from './foreigner.mock';
import { http, HttpResponse } from 'msw';

export const foreignerMockHandler = [http.get(APIPath.getForeigner, () => HttpResponse.json(foreigner))];
18 changes: 18 additions & 0 deletions src/apis/applicants/mocks/getApplicantProfile.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { http, HttpResponse } from 'msw';
import { APIPath } from '@/apis/apiPath';

const mockData = {
applicantName: '임세빈',
address: '충남대학교',
phoneNumber: '010-1111-1111',
career: `카페에서 1년 알바했습니다. 클럽에서 30년 근무했습니다.`,
koreanLanguageLevel: '고급',
introduction: `맡은 업무에 항상 최선을 다하는 인재입니다. 안녕하세용안녕하세용안녕하세용안녕하세용안녕하세용안녕하세용`,
motivation: '돈',
};

export const getProfileInfoHandler = [
http.get(APIPath.getApplicantProfile, () => {
return HttpResponse.json(mockData);
}),
];
2 changes: 1 addition & 1 deletion src/apis/applicants/mocks/myApplicantsMockHandler.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { APIPath } from '@/apis/apiPath';
import { applicantList } from '@/pages/applicants/Applicants.mock';
import { applicantList } from './applicants.mock';
import { http, HttpResponse } from 'msw';

export const myApplicantsMockHandler = [http.get(APIPath.getMyApplicants, () => HttpResponse.json(applicantList))];
4 changes: 2 additions & 2 deletions src/apis/apply/postApply.mock.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { http, HttpResponse } from 'msw';
import { getApply } from '../apply/useApplyHook';
import { APIPath } from '@/apis/apiPath';

export const postApplyMockHandler = [
http.post(`${getApply()}/:id`, async ({ request, params }) => {
http.post(`${APIPath.apply}`, async ({ request, params }) => {
const { id } = params;
const req = await request.json();
return HttpResponse.json({ req, id }, { status: 201 });
Expand Down
16 changes: 8 additions & 8 deletions src/apis/apply/useApplyHook.tsx
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
import { APIPath } from '@/apis/apiPath';
import { getDynamicAPIPath } from '@/apis/apiPath';
import { clientInstance } from '@/apis/instance';
import { useMutation } from '@tanstack/react-query';
// import { useNavigate } from 'react-router-dom';
import { useNavigate } from 'react-router-dom';

export const getApply = () => `${APIPath.registerSign}`;
export const getApply = (recruitmentId: number) => `${getDynamicAPIPath.apply(recruitmentId)}`;

export const Apply = async ({ req, recruitmentId }: { req: string; recruitmentId: string }) => {
const response = await clientInstance.post(`${getApply()}/${recruitmentId}`, req);
export const Apply = async ({ req, recruitmentId }: { req: string; recruitmentId: number }) => {
const response = await clientInstance.post(`${getApply(recruitmentId)}`, req);
return response.data;
};

export const FetchApply = () => {
// const nav = useNavigate();
const nav = useNavigate();

return useMutation({
mutationFn: ({ data, recruitmentId }: { data: string; recruitmentId: string }) =>
mutationFn: ({ data, recruitmentId }: { data: string; recruitmentId: number }) =>
Apply({ req: data, recruitmentId }),
onSuccess: () => {
// nav('/');
nav('/');
},
});
};
30 changes: 30 additions & 0 deletions src/apis/auth/hooks/mutations/useGoogleOAuthMutation.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import { clientInstance } from '@apis/instance';
import { useMutation } from '@tanstack/react-query';
import { AxiosError } from 'axios';
import { OAuthRequest } from '../../types/request';
import { OAuthResponse } from '../../types/response';
import { APIPath } from '@/apis/apiPath';

const postOAuth = async ({ code }: OAuthRequest): Promise<OAuthResponse> => {
const res = await clientInstance.post(APIPath.postOAuth, { code });

const authorizationHeader = res.headers['authorization'];
const accessToken = authorizationHeader.replace('Bearer ', '');

if (!accessToken) {
throw new Error('Authorization header is missing in the response');
}

return {
accessToken,
type: res.data.type,
profileImage: res.data.profileImage,
name: res.data.name,
};
};

export function useGoogleOAuthMutation() {
return useMutation<OAuthResponse, AxiosError, OAuthRequest>({
mutationFn: postOAuth,
});
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import { clientInstance } from '@apis/instance';
import { useMutation, UseMutationResult } from '@tanstack/react-query';
import { AxiosError } from 'axios';
import { AUTH_PATH } from '../path';
import { RegisterRequest } from '../types/request';
import { RegisterResponse } from '../types/response';
import { RegisterRequest } from '../../types/request';
import { RegisterResponse } from '../../types/response';
import { APIPath } from '@/apis/apiPath';

const postRegister = async ({ type }: RegisterRequest): Promise<RegisterResponse> => {
const res = await clientInstance.post(AUTH_PATH.REGISTER, { type });
const res = await clientInstance.post(APIPath.postRegister, { type });
return res.data;
};

export const useRegister = (): UseMutationResult<RegisterResponse, AxiosError, RegisterRequest> => {
export const useRegisterMutation = (): UseMutationResult<RegisterResponse, AxiosError, RegisterRequest> => {
return useMutation<RegisterResponse, AxiosError, RegisterRequest>({
mutationFn: postRegister,
});
Expand Down
81 changes: 0 additions & 81 deletions src/apis/auth/mutations/useGoogleOAuth.tsx

This file was deleted.

6 changes: 0 additions & 6 deletions src/apis/auth/path.ts

This file was deleted.

2 changes: 1 addition & 1 deletion src/apis/auth/types/request.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export interface OAuthRequest {
token: string;
code: string;
}

export interface RegisterRequest {
Expand Down
1 change: 1 addition & 0 deletions src/apis/auth/types/response.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ export interface OAuthResponse {
accessToken: string;
type: 'first' | 'employee' | 'employer';
profileImage: string;
name: string;
}

export interface RegisterResponse {
Expand Down
2 changes: 1 addition & 1 deletion src/apis/companies/mocks/myCompaniesMockHandler.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { APIPath } from '@/apis/apiPath';
import { companyList } from '@/pages/myPage/employer/EmployerMyPage.mock';
import { companyList } from './myCompanies.mock';
import { http, HttpResponse } from 'msw';

export const myCompaniesMockHandler = [http.get(APIPath.getMyCompanies, () => HttpResponse.json(companyList))];
15 changes: 15 additions & 0 deletions src/apis/contract/hooks/useGetContractImg.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { getDynamicAPIPath } from '@/apis/apiPath';
import { clientInstance } from '@/apis/instance';
import { useQuery } from '@tanstack/react-query';

export const getContractImgPath = (applyId: number) => `${getDynamicAPIPath.downloadContract(applyId)}`;
const getContractImg = async (applyId: number) => {
const res = await clientInstance.get(getContractImgPath(applyId));
return res.data;
};

export const useGetContractImg = (applyId: number) =>
useQuery({
queryKey: [getContractImgPath],
queryFn: () => getContractImg(applyId),
});
22 changes: 22 additions & 0 deletions src/apis/home/hooks/queries/useFetchRecruitments.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { AxiosError } from 'axios';
import { RecruitmentResponse } from '../../types/response';
import { useSuspenseQuery, UseSuspenseQueryResult } from '@tanstack/react-query';
import { clientInstance } from '@apis/instance';
import { QUERY_KEYS } from './queryKeys';
import { getDynamicAPIPath } from '@/apis/apiPath';

const getRecruitments = async (filter: string, page: number): Promise<RecruitmentResponse[]> => {
const url = `${getDynamicAPIPath.getRecruitments(filter)}?page=${page}`;
const res = await clientInstance.get<RecruitmentResponse[]>(url);
return res.data;
};

export const useFetchRecruitments = (
filter: string,
page: number,
): UseSuspenseQueryResult<RecruitmentResponse[], AxiosError> => {
return useSuspenseQuery<RecruitmentResponse[], AxiosError>({
queryKey: [QUERY_KEYS.RECRUITMENTS, filter, page],
queryFn: () => getRecruitments(filter, page),
});
};
Loading
Loading