과제 사전 설정
1.
이전 이터레이션에서 merge한 main 브랜치를 받아옵니다.
2.
작업용 브랜치 feature4 을 생성합니다.
$ git checkout main
$ git pull
$ git checkout -b feature4
Shell
복사
3.
생성한 feature4 브랜치가 이터레이션 #4 과제를 제출할 브랜치가 됩니다.
과제 내용
구현 요구 사항
위 화면처럼 다양한 상황에서 발생할 수 있는 에러 처리를 강화해주세요.
에러의 처리는 모든 페이지에서 동일하게 적용되어야 해요.
1.
기기에서 걸음 수 정보를 가져올 권한이 없는 경우, /src/components/ErrorSection.tsx 를 활용해 권한이 없음을 안내하는 UI를 출력해주세요.
a.
허용하기를 누르면 앱브릿지를 호출해 권한을 허용한 후, 새로운 권한 기준으로 화면을 갱신해주세요.
2.
포인트 받기 요청이 실패한 경우, /src/hooks/useAlert.tsx 를 활용해서 응답에 포함된 에러 코드에 맞는 메시지를 출력해주세요.
a.
응답 status code는 200으로 내려와요.
b.
MISSION_NOT_FOUND: 존재하지 않는 미션이에요.
c.
ALREADY_REWARDED: 이미 포인트를 받았어요.
d.
INSUFFICIENT_STEP_COUNT: 걸음수가 부족해요.
3.
[API 공통] GET 요청에서 예측하지 못한 에러가 발생할 경우, 에러 발생을 안내하는 UI를 출력해주세요.
a.
응답 status code는 500으로 내려와요.
API 문서
미션 리워드 수령
•
path: POST /api/step-mission/${missionId}/reward
•
request body
{
currentStepCount: number, //현재 걸음수
}
JavaScript
복사
•
response (성공)
{
rewardAmount: number, // 미션 성공으로 지급된 포인트 금액
}
TypeScript
복사
•
response (실패)
{
errorCode: string;
}
// 에러 종류
MISSION_NOT_FOUND = 잘못된 Id
ALREADY_REWARDED = 이미 리워드 수령함
INSUFFICIENT_STEP_COUNT = 걸음수 부족함
TypeScript
복사
앱브릿지 @toss-next/toss-app-bridge API 문서
걸음 수 가져오기 권한 획득 여부 확인
•
method name: checkStepCountPermission
•
Response
Promise<boolean>
// → requestStepCountPermission 요청이 발생할 때 까지는 false를 응답하고
// requestStepCountPermission 요청이 발생한 후에는 true를 응답
TypeScript
복사
걸음 수 가져오기 권한 요청
•
Method name: requestStepCountPermission
•
Response
Promise<boolean>
TypeScript
복사
과제 제출하기
과제 제출하기
1.
작업이 완료되면 feature4 브랜치를 GitHub 원격 저장소에 푸시해주세요.
2.
작업이 잘 되었다면 GitHub 저장소에 다시 접속했을 때 [Compare & Pull Request] 초록색 버튼을 확인하실 수 있어요.
3.
[Compare & Pull Request] 버튼을 누르고 Pull Request를 생성해주세요. main 브랜치에 병합하는 형태가 되도록 Pull Request를 생성해주세요.
a.
Pull Request의 본문은 자유롭게 작성해주세요.
4.
main 브랜치에 병합해주세요.
이어서
다음 이터레이션을 수행하기 위해 노란색으로 강조된 링크를 따라가주세요.
이 문제의 저작권은 주식회사 비바리퍼블리카에 있으며, 지원자는 오로지 채용을 위한 목적으로만 이 문제를 활용할 수 있습니다. 이 문제의 전부 또는 일부를 공개, 게재, 배포, 제3자에게 제공하는 등의 일체의 “누설 행위”에 대해서는 저작권법에 의해 민・형사상의 책임을 질 수 있습니다. 이 "누설 행위"에는 문제의 문구를 변형하여 그 취지를 알 수 있도록 하는 경우도 포함됩니다.

