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

[iOS] 여정 목록 비즈니스 로직 #125

Merged

Conversation

SwiftyJunnos
Copy link
Member

@SwiftyJunnos SwiftyJunnos commented Nov 27, 2023

❗ 배경

작업 배경에 대한 설명을 작성합니다.
Issue에 대한 링크를 첨부합니다.

close #124
close #106

🔧 작업 내역

작업한 내용들을 나열합니다.
간결하게 리스트 업하고, 자세한 설명은 아래 리뷰 노트에서 합니다.

  • CI 수정
  • MSData 패키지 추가
  • MSNetworking 리팩토링
  • Workspace 파일 수정
  • 여정 목록 비즈니스 로직 구현

🧪 테스트 방법

동작을 테스트할 수 있는 방법을 설명합니다.
앱 실행 방법일 수 있고, 유닛 테스트 실행 방법일 수 있습니다.

  • JourneyLIst
    JourneyListDemo 앱 실행
  • MSCacheStorage
    MSCacheStorageTests 유닛 테스트

📝 리뷰 노트

작업 내역에 대한 자세한 설명을 작성합니다.

MSData

Data 레이어를 위한 MSData 패키지를 추가했습니다.

Screenshot 2023-11-30 at 01 02 07

구조는 현재 위와 같이 되어 있습니다.

서버와 로컬 스토리지의 값을 불러오기 위한 DTO 구조체들과
마찬가지로 외부 스토리지의 값들을 불러오는 로직에 대한 책임을 갖는 Repository 클래스들이 주요 파일입니다.

그 외에도 API 정보를 담는 secret 파일인 APIInfo.plist 파일과 Mock 데이터들이 Resource 디렉토리 내부에 있습니다.
| 현재는 secret 처리가 되어있지 않습니다. 이후에 실제 서버 주소가 들어가면 gitignore에 추가해줘야 합니다.
Router에는 네트워킹을 위한 URLRequest 인스턴스를 생성하는 MSNetworkingRouter 프로토콜을 채택하는 클래스들이 포함되어 있습니다.

MSNetworking

MSNetworking을 실제로 사용하면서 개선할만한 부분들을 조금 고쳐봤습니다.

  1. MSRouter 삭제
    전체 API 정보를 담는 MSRouter 대신 각 Repository에 필요한 API를 분리해서 관리하기 위해
    MSRouter는 삭제하고 MSDataJourneyRouter처럼 Data 레이어에서 정의하도록 변경했습니다.
  2. MSNetworkError 수정
    MSNetworkError의 네이밍을 수정하고 추가적으로 필요한 에러를 추가했습니다.
    또한 Equatable 프로토콜을 채택시켜서 에러 간 비교가 가능하도록 했습니다.
  3. timeout 추가
    MSNetworking 구조체의 requesttimeout 파라미터를 추가했습니다.
    dataTaskPublisher의 오퍼레이터를 활용했습니다.
    추가적으로 decode 로직도 기본 오퍼레이터를 사용하는 것으로 수정해 가독성을 높였습니다.

7898+

Screenshot 2023-11-30 at 00 04 36

하하하하 세상에
다른 머지되지 않은 작업들을 떙겨와서 작업했더니 PR이 왕 거대해졌습니다.
다른 브랜치들부터 정리하고 리뷰 남겨주세요 ㅎㅎ;

📸 스크린샷

작업한 내용에 대한 스크린샷, 영상 등을 첨부합니다.

데모 영상

@SwiftyJunnos SwiftyJunnos marked this pull request as ready for review November 29, 2023 16:22

extension JourneyRouter {

public var body: HTTPBody? {
Copy link
Member

Choose a reason for hiding this comment

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

HTTPBody에 contents를 넣어야하는 경우를 생각하면 메소드로 만들어서, 보낼 contents를 함께 주는 것도 좋지 않을까요?

Copy link
Member Author

Choose a reason for hiding this comment

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

밑에 switch 문으로 분기 처리해서 넣어주려고 했습니다..!

@SwiftyJunnos SwiftyJunnos merged commit d7621ac into iOS/epic/JourneyListScene Nov 30, 2023
28 checks passed
@SwiftyJunnos SwiftyJunnos deleted the iOS/task/JourneyList-Business-Logic branch November 30, 2023 12:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
♻️ 리팩토링 코드 동작 방식 변경, 리팩토링 ✨ 신규 기능 신규 기능 개발 🎨 UI 비즈니스 로직이 없는 UI 작업 🛠️ 환경 세팅 프로젝트/환경 설정
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Data 레이어 추가 JourneyList Scene 비즈니스 로직 구현
3 participants