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

전남대_12조_픽업셔틀_7-9주차 #77

Merged
merged 113 commits into from
Nov 6, 2023
Merged

전남대_12조_픽업셔틀_7-9주차 #77

merged 113 commits into from
Nov 6, 2023

Conversation

rktdnjs
Copy link
Contributor

@rktdnjs rktdnjs commented Nov 5, 2023

PR 타입(하나 이상의 PR 타입을 선택해주세요)

  • 기능 추가
  • 기능 삭제
  • 버그 수정
  • CSS등 UI 수정
  • 의존성, 환경 변수, 빌드 관련 코드 업데이트

전달 사항

안녕하십니까 멘토님! 이번 7-9주차 개발 진행 사항을 모아 PR 드립니다!
이번주차 멘토링 사전질문 & 개발 내용과 관련된 질문은 멘토링 전까지 하단 링크에 별도로 정리해놓도록 하겠습니다😊
개발 마지막까지 최선을 다해 끝마쳐보도록 하겠습니다..!!(화이팅)

링크 : https://www.notion.so/FE-10-30bd485067694f719616cd51a251a7b1

작업 사항

7주차 개발사항

  • 공고 작성 페이지 일부 버그 fix
  • 로그인 & 접근권한 체크 컴포넌트 ProtectedRoute.jsx 구현
    • 로그인 유무는 localStorage의 accessToken을 통해 확인
    • 접근권한 체크는 localStoragegrade를 통해 확인
    • 접근권한은 해당 컴포넌트로 감싼곳에서 ProtectedRoutepropsrequiredAuth 값을 배열형태로 제공하면 적용
    • 접근권한을 따로 제공하지 않으면 로그인 유무만 판단한다고 생각하면 됨
    • 로그인 + 접근권한을 둘 다 체크해야하는 곳에서는 로그인(1순위) - 접근권한(2순위)로 적용됨
    • 로그인 x 인 경우에는 로그인 경고 메시지와 함께 로그인페이지로 이동
    • 접근권한 x 인 경우에는 접근 거부 메시지와 함께 마이페이지로 이동(학생증 인증 권유)

8주차 개발사항

  • 공고상세페이지
    • 공고상세페이지 내용을 조회할 수 있도록 API 처리 함수 추가
    • 백엔드 API로부터 유저 = 공고글 작성자 여부에 따라 공고상세페이지를 달리 보여주는 부분은 개발 진행중
  • 마이페이지
    • 로그인한 유저의 등급에 따라 Admin, Student, Guest 페이지를 보여줄 수 있도록 분기 처리
    레이아웃 참고 : https://github.com/Step3-kakao-tech-campus/Team12_FE/pull/57
    
  • 관리자 페이지
    • /components/organisms/AuthRequest.jsx
    • /pages/AdminPage.jsx
    • AdminPage에서 데이터 불러오기 → 하위 AuthRequest.jsx에 뿌림
    • 추후 무한스크롤 구현 예정
  • 관리자 학생 인증 상세 페이지
    • /components/organisms/AuthDetail.jsx
    • /pages/AdminAuthPage.jsx
    • AdminAuthPage에서 데이터 불러오기→ 하위 AuthDetail.jsx에 뿌림
    • mswidparams로 불러오는 부분이 구현이 안됨
  • 공고글 작성 페이지
    • PostWritePage.jsx
      • 저번주차 피드백에 따라 switch → IIFE로 분기
      • 특정 input에 에러메시지가 안뜨는 문제 발생 → 해결 중
      • alertutils
  • 회원가입(계좌 정보 입력 페이지)
    • 계좌 정보 입력 페이지 : RegisterBankPage.jsx
    • 계좌 정보 입력 컴포넌트(Molecules) : BankForm.jsx 구현
    • 은행은 토글 버튼을 통해 선택 & 계좌 번호는 직접 입력하는 형태
    • 계좌 정보 미 입력시 경고 문구 계좌 정보 입력란 하단 출력 & Swal로 경고 alert 띄움
    • 회원 가입 버튼 하단의 로그인 텍스트 클릭을 통해 로그인 화면으로 이동 가능
    • 백엔드 API or 모킹을 통해 POST 테스트 필요함
    레이아웃 참고 : https://github.com/Step3-kakao-tech-campus/Team12_FE/pull/64
    
  • msw 라이브러리 적용
    📦mocks
     ┣ 📂data
     ┃ ┗ 📜adminData.js
     ┣ 📂handlers
     ┃ ┣ 📜admin.js
     ┃ ┗ 📜index.js
     ┗ 📜browser.js
    
    • mocks/data/: 임시 데이터 넣어둠
    • mocks/handlers/admin.js: 관리자 페이지 관련 get 요청 정의
    • mocks/handlers/index.js: 핸들러 모아서 export / 추후 다른 핸들러가 더 생긴다면 추가 가능
    • mocks/brower.js: worker 정의
    • 참고한 레퍼런스 (공식문서)

9주차 개발 사항

마이페이지 - 학생증 업로드 & 공고상세페이지 관련 파트

  • [feat]: 학생증 업로드, 공고상세페이지 수정 #70
  • 마이페이지에서 유저 등급에 따라 보여주는 페이지 구현
    • AdminMyPageTemplate(관리자)
    • GuestMyPageTemplate(학생)
    • StudentMyPageTemplate(일반 유저, 학생증 인증 x 상태)
  • 학생증 업로드 기능 구현
  • 학생증 이미지를 formData 형태에 담아 POST 하는 API 로직 구현
  • 학생증 이미지 업로드 전에는 취소 및 입력완료 버튼이 보이지 않도록 함
  • 공고 상세 페이지 유저 등급 & 공고글 작성자 일치 여부에 따라 보여주는 페이지 구현
    • PickerMatchTemplate(사용자가 매칭완료된 글을 클릭)(자신의 글 x)
    • PickerNoMatchTemplate(사용자가 매칭전 공고글 클릭)(자신의 글 x)
    • WriterMatchTemplate(사용자가 매칭완료된 자신의 공고글을 클릭)
    • WriterNoMatchTemplate(사용자가 매칭전 자신의 공고글 클릭)

계좌정보 입력 페이지(회원가입) 관련 파트

  • [feat] : 계좌정보 입력 & 공고현황페이지 모킹 적용 및 코드 디버깅 #71
  • date.js 코드 수정
    • 1시 2분 → 01시 02분과 같은 형태로 자동 변경 및 적용되도록 코드 수정
  • 공고현황페이지 코드 수정
    • 코드를 복잡하게 보이게 하는 console.log 제거
    • 일부 코드에 주석을 추가하여 설명 보충
    • 원본 공고글을 따로 저장해놓지 않아 필터적용 이후에 다시 All 클릭시 공고글이 삭제되는 부분 수정
    • lastpage : false인 경우에 대해 렌더링 과정에서 버그가 있는데, 이는 API 연동을 통해 잡아야 할 것으로 보임
    • 모킹으로 주는 데이터는 세부 로직을 적용하지 않아, 정확한 디버깅을 위해서는 API 연동이 필요함

공고 작성 페이지 관련 파트

  • [feat]: 공고 작성 페이지 수정 및 msw 테스트 #72
  • 공고 작성 페이지에서 useFormContext를 사용하여 props drilling을 막으려고 함 (노력은 했는데 전이랑 똑같은 것 같기도..)
  • 공고 작성 페이지 msw 적용
  • 에러메시지 반환 시 라이브러리 사용 (npm install @hookform/error-message 해주세요!)
  • 공고 작성 페이지에서 백엔드가 요구하는 시간 형식에 따라 요청 보냄 (utils/dateAndTime.js 에 정의)
  • 각종 상수 데이터를 constant로 분리

관리자 페이지(학생증 인증 승인) & 공고 작성 페이지 관련 파트

그 외 작업 사항

  • 로그인 페이지 & 공고 작성 입장 페이지에 텍스트 애니메이션 적용
  • atoms & templates 컴포넌트들 명칭 및 기능에 따라 카테고리별 분류
  • API 배포 전 상태여서 모킹 적용 및 테스팅 하며 변수명 수정
  • 9주차 Merge 후 일부 버그 수정
    • 공고 상세 페이지 NaN 시간 렌더링 버그
    • 학생증 이미지 업로드 페이지에서 Swal이 OK만 띄우는 버그
    • 태그 중에 div가 아닌 dijv로 되어있던 부분 수정

관련 PR

baegyeong and others added 30 commits October 16, 2023 19:25
- 로그인 유무는 localStorage의 accessToken을 통해 확인
- 접근권한 체크는 localStorage의 grade를 통해 확인
- 접근권한은 해당 컴포넌트로 감싼곳에서 ProtectedRoute에 props로 requiredAuth 값을 배열형태로 제공하면 적용
- 접근권한을 따로 제공하지 않으면 로그인 유무만 판단한다고 생각하면 됨
- 로그인 + 접근권한을 둘 다 체크해야하는 곳에서는 로그인(1순위) - 접근권한(2순위)로 적용됨
- 로그인 x 인 경우에는 로그인 경고 메시지와 함께 로그인페이지로 이동
- 접근권한 x 인 경우에는 접근 거부 메시지와 함께 마이페이지로 이동(학생증 인증 권유)
- 현재는 임시 데이터로 저장하도록 구현
- 백엔드 API 연동이후 로그인 기능이 정상작동하면 accessToken, grade, username 저장하도록 변경 예정
[feat]: 공고 작성 페이지 버그 수정
[feat] : 로그인 로직 보완 & 로그인 및 접근권한 체크용 ProtectedRoute 컴포넌트 구현
[7주차] : 개발 사항 Merge(weekly-7 → develop)
- development가 아닐 때만 msw import
- 추후 admin외에 더 추가할 때 handlers 폴더 아래에 생성
- public/mockServiceWorker는 기본 설정파일
- msw 라이브러리 사용
- 각 학생 컴포넌트에 user 정보 넘김
- 하위 컴포넌트인 AuthRequest.jsx에서 nickname 출력
- id에 따라 Link로 상세페이지 이동 가능
- 추후 params에 따라 데이터 fetch
@rktdnjs rktdnjs added the 🙋‍♂️ Request Review Review Request label Nov 5, 2023
@rktdnjs rktdnjs self-assigned this Nov 5, 2023
@baegyeong baegyeong requested a review from yoeubi November 5, 2023 14:35
@imjasper2023 imjasper2023 requested review from imjasper2023 and removed request for yoeubi November 5, 2023 23:57
/* eslint-disable */
const Info = ({ response }) => {
// 마감시간
let finishTime = new Date(response.finishedAt);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

상수로 선언해주세요

Comment on lines +9 to +13
const showMenu = (item) => {
return item.map(({ name }) => {
return <div key={name}>{name}</div>;
});
};

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

컴포넌트 안에 종속되지 않는다면 바깥으로 빼주세요

// 사실상 user 권한의 경우는 로그인 토큰 자체만으로도 검증이 가능하기 때문에, 별도로 requiredAuth prop을 넘겨줄 필요 없음
// [admin, student] 이렇게 넘겨줄 수도 있는 경우를 감안하여 다음과 같이 처리
// requiredAuth 중 하나라도 만족하면, 페이지 접근 권한 유효함
const userAuth = localStorage.getItem('userAuth');

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

userAuth에 대한 용도는 잘 파악이 안되지만 사용자 데이터를 저장하는것은 지양합니다.

@@ -0,0 +1,10 @@
const AuthDetail = ({ user }) => {
Copy link

@imjasper2023 imjasper2023 Nov 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

가끔 props를 다 뭉뚱그려서 하나로 퉁치는데 다 풀어서 작성부탁드려요
재사용성에서 제약사항이 생깁니다.

import { BsArrowDown } from 'react-icons/bs';
import { MdLocationPin, MdOutlineLocationOn } from 'react-icons/md';

const Location = ({ response }) => {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
const Location = ({ response }) => {
const Location = ({ shopName, desination }) => {

Copy link

@imjasper2023 imjasper2023 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이번 주도 수고하셨습니다.

다만 코드에서 종속성을 가지는 패턴들이 너무 많이 보입니다.

props를 response, user로 퉁 치는 경향이 있습니다. 이런 코드는 추후에 확장하기가 어렵습니다.

@imjasper2023 imjasper2023 merged commit 91c33e9 into review Nov 6, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants