sparcs-kaist / taxi-front

KAIST Taxi Party Matching Web Service
https://taxi.kaist.ac.kr
MIT License
14 stars 2 forks source link

#784 송금하지 않은 방이 있는 경우 추가 방 참여 제한 #787

Closed jinhyeonkwon closed 1 month ago

jinhyeonkwon commented 3 months ago

Summary

It closes #784

미정산 문제에 대한 대응 중 하나로, 다른 참여자가 정산을 올렸으나 본인이 송금하지 않은 방이 있다면 1) 추가 방 참여와 2) 새로운 방 생성을 제한합니다.

  1. 방 참여

    • 이미 참여 중인 방을 제외하고, 미송금 여부 확인을 최우선순위로 진행하여 송금하지 않은 방이 있다면 버튼을 비활성화하고 안내 텍스트가 보이게 합니다.
  2. 방 생성

    • 미송금 여부 확인을 최우선순위로 진행하여 송금하지 않은 방이 있다면 버튼을 비활성화하고 안내 텍스트가 보이게 합니다.

중점적으로 피드백 받고 싶은 부분

  1. InfoSection에서는, 정렬된 방 목록 (sortedMyRoom) 에서 혹시 정산 또는 결제 (이 PR은 정산이 진행 중이나 본인이 송금하지 않은 상황에 한정되므로 조건은 다릅니다) 가 이루어지지 않은 방이 있는지를 확인하는 notOver라는 변수가 있습니다. 이 과정을 최대한 보존하면서 아래와 같이 수정하였는데, 관련 질문이 있습니다.

    • sortedMyRoom 대신 정렬만 뺀 myOngoingRoom을 선언하여 사용했습니다. 이것이 적절한 사용인지 궁금합니다. 정렬을 하지 않을 것이라면 이렇게 선언하는 것이 불필요한 중복 변수 선언이 될 수 있는 여지가 있는지 궁금합니다.
    • notOver 대신, 정산 진행 중이나 본인이 송금하지 않은 방이 있는지 알기 위해서, 각 방에 대하여 part 안에서 본인 id와 일치하면서 isSettlement === "send-required" 인 방을 찾아 그 여부를 notPaid라는 변수에 저장하는 로직이 들어가 있습니다. 방 참여 쪽 수정 사항이 들어간 BodyRoomSelection에는 loginInfo를 이미 가져오고 있어서 그대로 사용했으나, 방 생성 쪽 수정 사항이 들어간 Addroom의 index.tsx에서는 새롭게 const loginInfo = useValueRecoilState("loginInfo"); 를 추가하였습니다. 문제가 되지 않을 것으로 판단했으나 적절한지 궁금합니다.
  2. notPaid를 설정하는 과정에서 any type으로 인해 VSCode에서 뜨는 에러를 없애기 위해 arrow function의 매개변수를 item: any 라는 형식으로 썼습니다. (이것을 명시하기 전, 오류가 뜨는 상황에서도 작동은 정상적으로 되었습니다) 이것이 적절한 방법이 아닌 것 같아서, 개선할 방법이 있는지 궁금합니다.

  3. 사소한 부분이나, 비활성화된 버튼의 텍스트가 적절한지 궁금합니다.

Images or Screenshots

image

image

Further Work

netlify[bot] commented 3 months ago

Deploy Preview for taxi-dev-preview ready!

Name Link
Latest commit 0e64ffab7e28aca46e276ea73111a3d698d41622
Latest deploy log https://app.netlify.com/sites/taxi-dev-preview/deploys/668d334f29db050007b857ae
Deploy Preview https://deploy-preview-787--taxi-dev-preview.netlify.app
Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.