telling-me / tellingme-iOS

tellingme의 iOS 공간입니다
MIT License
4 stars 1 forks source link

⭐️ 홈화면을 리펙터링했습니다. #143

Closed PecanPiePOS closed 1 year ago

PecanPiePOS commented 1 year ago

📃 전달 사항

📍 Xcode 15.0 으로 작업했습니다.

🔸 파일이 많이 보이는데, 그 중 minor 한 변경이 있는 파일들이 있기 때문에 실제로는 그렇게 많은 파일이 바뀌지 않았습니다. 천천히 보시면 될 것 같습니다.

⭐️ 꼭 StringLiterals 파일 추가하시고, 에셋 파일 슬랙으로 보내드렸으니, 그거 꼭 기존에 있는 파일 지우시고, 추가해주시기 바랍니다~

📸 주요 코드

이해가 필요하거나 추가적인 설명이 필요한 코드 설명 추가했습니다.

코드 추가 설명


https://github.com/telling-me/tellingme-iOS/blob/db08f7a3d37a8a0e27a3338d18b76c6c33ef5d5e/TellingMe/tellingMe/data/home/model/HomeModel.swift#L12-L34 https://github.com/telling-me/tellingme-iOS/blob/db08f7a3d37a8a0e27a3338d18b76c6c33ef5d5e/TellingMe/tellingMe/presentation/home/REF_viewModels/HHomeViewModel.swift#L44-L53

  1. protocol 로 DIP 를 활용합니다. QuestionModelType 으로 필요한 모델을 경우에 따라 쉽게 바꿔 쓸 수 있게 합니다.

    https://github.com/telling-me/tellingme-iOS/blob/db08f7a3d37a8a0e27a3338d18b76c6c33ef5d5e/TellingMe/tellingMe/presentation/alarm/viewControllers/AlarmViewController.swift#L14-L16 https://github.com/telling-me/tellingme-iOS/blob/db08f7a3d37a8a0e27a3338d18b76c6c33ef5d5e/TellingMe/tellingMe/presentation/alarm/viewControllers/AlarmViewController.swift#L100-L104

  2. 알림뷰에서 "나의 서재 관련" 알림이 오면 delegate 을 통해 dismiss 된 후 tab 을 이동하는 코드입니다.


https://github.com/telling-me/tellingme-iOS/blob/db08f7a3d37a8a0e27a3338d18b76c6c33ef5d5e/TellingMe/tellingMe/presentation/common/base/BBaseButton.swift#L19-L23

  1. 버튼의 실제 눌리는 면적을 늘리는 코드입니다. BaseUIButton 에서 선언했습니다. 둥그런 버튼 말고, Square 모양의 아이콘을 누르는 버튼에 사용해서 ux 를 좋게 만듭니다.

    https://github.com/telling-me/tellingme-iOS/blob/db08f7a3d37a8a0e27a3338d18b76c6c33ef5d5e/TellingMe/tellingMe/presentation/common/base/BBaseViewController.swift#L13-L34

  2. ⭐️BaseViewController 의 사용 방법입니다. func bindViewModel() {} func setStyles() {} func setLayout() {} 는 상속을 받아 override 해서 사용하시면 됩니다. 애초에 viewDidLoad 는 항상 override 하여 사용하므로 추가적으로 viewDidLoad 안에 선언하실 필요가 없습니다. 🔸 우선은 리펙토링을 한 뷰와 뷰컨 위주로 사용했습니다. 천천히 바꿔보시죠!

    https://github.com/telling-me/tellingme-iOS/blob/db08f7a3d37a8a0e27a3338d18b76c6c33ef5d5e/TellingMe/tellingMe/presentation/home/REF_viewControllers/HHomeViewController.swift#L240-L253

  3. identity 를 미리 먼저 set 함으로써 애니메이션이 다시 시작할 수 있게 합니다.

    https://github.com/telling-me/tellingme-iOS/blob/db08f7a3d37a8a0e27a3338d18b76c6c33ef5d5e/TellingMe/tellingMe/presentation/home/REF_viewModels/HHomeViewModel.swift#L127-L151

  4. 에러 메세지가 nil 이 아닌 data 를 RxRelay 로 받으면, 네트워크 오류 팝업뷰를 띄웁니다.

    https://github.com/telling-me/tellingme-iOS/blob/390b955712ea336032680a2c773c88daae543d1e/TellingMe/tellingMe/util/managers/TimeManager.swift#L10-L48

  5. 현재 시간이 아침 6시인지 확인하고, 오전 6시 이후인데 업데이트가 되어있지 않았다면, 홈화면의 question 을 업데이트합니다. 만약 그렇지 않다면 업데이트를 하지 않습니다. 🔸 불필요한 통신을 줄입니다.

✔ 진행사항

🔴 ETC

기타 사항을 적어주세요. 실제 개발 기간 : 23시간

💻 개발환경

macOS: Ventura 13.6 iOS: iphone 15 pro simulator

closes: #123 closes: #137 closes: #138 closes: #145