# 2021.10.14 PR 기록
# 작업 목록
- OrderView 및 ProductListView에 필요한 API 구현
- OrderView 구현
- 특정 카테고리의 Product를 보여주는 ProductListView 구현
# 수정할 사항
- 카테고리별 API 요청 함수 통합
- 기존 음료 정보를 가져오는 API 요청 함수는 음료의 종류별로 다 분리가 되어있었음
- 음료별로 API주소가 다 다르다보니 함수도 다 별도로 분리하게 되었음
- API url에서 공통적인 부분을 발견하게 되어서 음료 정보를 가져오는 하나의 함수를 만들어보기로 함
- OrderViewUsecase를 Protocol 기반으로 변형
- 의존성 역전을 위해 추상화
- HomeUseCase에서 ProductAccessable을 빼내기
- 공통 사용이 가능한 프로토콜이므로 독립시킴
- HomeView에서 사용하는 DataSource에 DispatchGroup 적용
- 데이터 순서 유지
- 필요할 때 1번만 DataSource를 갱신
# 질문 및 고민
- 조건에 따라서 이벤트 관련 화면을 보여주거나, 홈 화면을 보여주어야합니다.
이때, 어떠한 방식으로 구현하는 방식이 주로 쓰이는지 궁금합니다.
1. 홈화면을 시작 vc로 두고 viewDidLoad에서 조건을 체크하여 present로 이벤트화면을 출력한다.
- 장점 : 이벤트 화면을 dismiss하면 바로 사라짐(불필요하게 뒤에 깔리는 vc가 없음)
- 단점 : 앱을 시작할 때, 기기의 성능에 따라서 홈화면이 잠깐 노출되고 그 위에 이벤트화면이 뜨는 경우가 있다.
2. 앱이 실행 될 때 rootVC를 이벤트 화면으로 할지, 홈 화면으로 할지를 ScenDelegate 단에서 체크한다.
- 장점 : 앱 시작 과정이 깔끔하다. 사용자가 입장에서 거슬리는 점이 없다.
- 단점 : 이벤트 화면이 표시되고나서 사용자가 닫기를 누르면 home vc를 present하기 때문에 이벤트 vc가 앱 구동 중에 항상 깔려있다.
요구사항에 있는 홈화면에서 적힌 모든 API목록
https://api.codesquad.kr/starbuckst
https://www.starbucks.co.kr/whats_new/getIngList.do
- 이벤트 종류할때? 헤더에 데이터를 넣고 보내서 사용하는듯
- MENU_CD의 값으로 이걸 요청하면,
- 화면 순서
- 추천 메뉴(콜렉션뷰)
- https://api.codesquad.kr/starbuckst 를 사용한다
- 메인 이벤트(스택뷰)
- 이벤트종류(콜렉션뷰)
- 인기 메뉴(콜렉션뷰)
- Home 진입
- https://api.codesquad.kr/starbuckst
```
{
"display-name": "딸기HARRY",
"your-recommand": {
"products": [
"9200000002760",
"168010",
"9200000002502",
"9300000003072"
]
},
"main-event": {
"img_UPLOAD_PATH": "https://image.istarbucks.co.kr",
"mob_THUM": "APP_THUM_20210719090612417.jpg"
},
"now-recommand": {
"products": [
"106509",
"9200000000479",
"9200000000433",
"9200000002760",
"9200000002487"
]
}
}
```
- 추천 메뉴 목록
- HomeJSON/your-recommand/products 배열값
- 메뉴별 요청 API
- https://www.starbucks.co.kr/menu/productViewAjax.do
- body
- form-data
- product_cd = {배열값}
```
{
"view": {
"content": "부드러운 목넘김의 나이트로 커피와 바닐라 크림의 매력을 한번에 느껴보세요!",
"product_ENGNM": "Nitro Vanilla Cream",
"product_CD": "9200000002487",
"product_NM": "나이트로 바닐라 크림",
"cate_NAME": "콜드 브루",
"recommend": "부드러운 목넘김의 나이트로 커피와 바닐라 크림의 매력을 한번에 느껴보세요!",
"kcal": "75", // 칼로리
"fat": "2.7", // 지방
"price": "",
"standard": "12",
"unit": "oz",
"sat_FAT": "2", //포화지방
"trans_FAT": "0", // 트랜스지방
"cholesterol": "5", // 콜레스테롤
"sugars": "10", // 당류
"chabo": "10", // ?
"protein": "1", // 단백질
"sodium": "20", // 나트륨
"caffeine": "245", // 카페인
"allergy": "우유"
}
}
```
- 메인 이벤트
- 모든 이벤트 가져오기
- https://www.starbucks.co.kr/whats_new/getIngList.do
- header
- Content-Type = application/x-www-form-urlencoded
- charset = utf-8
- body
- form-data
- menu_cd = all
- HomeJSON/main-event 값이랑 동일한 이미지 선택
- 대표 이벤트 사진
- https://image.istarbucks.co.kr/upload/promotion/{mob_THUM}
- 대표 이벤트 내용 표시
```
{
"list": [
{
"img_UPLOAD_PATH": "https://image.istarbucks.co.kr",
"title": "할로윈 음료 Tri-Star Dash 이벤트",
"start_DT": "2021-10-11",
"end_DT": "2021-10-18",
"view_DATE": "2021-10-12 ~ 2021-10-18",
"mob_THUM": "APP_THUM_20211007091038328.jpg",
"sbtitle_NAME": "할로윈 음료 Tri-Star Dash 이벤트"
}
]
}
```
- 시간별 추천 메뉴 목록
- 메뉴별 요청 API
- https://www.starbucks.co.kr/menu/productViewAjax.do
- body
- form-data
- product_cd = {배열값}