Skip to content

Commit

Permalink
[Refactor] #201 - MypageViewController ViewModel로부터 데이터 수신을 위한 코드 리팩토링
Browse files Browse the repository at this point in the history
  • Loading branch information
GodSamble committed Oct 26, 2023
1 parent 969ab90 commit 6a9d9dc
Showing 1 changed file with 18 additions and 50 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,7 @@ import WebKit
final class MypageViewController: UIViewController, UIScrollViewDelegate {

// MARK: - Properties
private var nickname: String?
private var userLevel: UserLevel?
private var duringGoalAmount: Int?
private var duringGoalCount: Int?
private var targetMoney: Int?
private var dday: Int?
private var isOver: Bool = false
private var viewModel = MypageViewModel()
private let userService = UserService()
private let loginService = LoginService()

Expand All @@ -48,11 +42,12 @@ final class MypageViewController: UIViewController, UIScrollViewDelegate {
setUI()
bind()
setAddTarget()
viewModel.getTotalUser()
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
getTotalUser()
viewModel.getTotalUser()
}

override func viewDidAppear(_ animated: Bool) {
Expand Down Expand Up @@ -125,9 +120,12 @@ final class MypageViewController: UIViewController, UIScrollViewDelegate {
private func bind() {
NotificationCenter.default.publisher(for: .whenSetGoalCompleted)
.sink { [weak self] _ in
self?.getTotalUser()
self?.viewModel.getTotalUser()
}
.store(in: &bag)
viewModel.dataUpdated = { [weak self] in
self?.collectionView.reloadData()
}
}

private func goToSaveGoal() {
Expand Down Expand Up @@ -186,8 +184,8 @@ extension MypageViewController: UICollectionViewDataSource {
for: indexPath
) as? MypageProfileCell
else { return UICollectionViewCell()}
let nickname = nickname ?? ""
let userLevel = userLevel ?? .none
let nickname = viewModel.nickname ?? ""
let userLevel = viewModel.userLevel ?? .none
mypageProfileCell.configure(model: .init(nickname: nickname, level: userLevel))
mypageProfileCell.infoButtonTappedClosure = {
let logEvent = LogEventImpl(category: .click_info)
Expand Down Expand Up @@ -215,18 +213,18 @@ extension MypageViewController: UICollectionViewDataSource {
) as? MypageGoalInfoCell
else { return UICollectionViewCell()}

if isOver {
duringGoalCount = nil
duringGoalAmount = nil
targetMoney = nil
dday = nil
if viewModel.isOver {
viewModel.duringGoalCount = nil
viewModel.duringGoalAmount = nil
viewModel.targetMoney = nil
viewModel.dday = nil
}
mypageGoalInfoCell.configure(
model: .init(
duringGoalAmount,
duringGoalCount,
targetMoney,
dday
viewModel.duringGoalAmount,
viewModel.duringGoalCount,
viewModel.targetMoney,
viewModel.dday
)
)
mypageGoalInfoCell.saveGoalButtonTappedClosure = { [weak self] in
Expand Down Expand Up @@ -342,36 +340,6 @@ extension MypageViewController: UICollectionViewDelegateFlowLayout {
}
}

// MARK: - Server

extension MypageViewController {
private func getTotalUser() {
userService.getTotalUser() { [weak self] response in
guard let response = response, let data = response.data else { return }
guard let self else { return }
let userData = data.userResponseUserDto
self.userLevel = self.judgeUserLevel(userData.userLevel)
self.nickname = userData.nickname

let goal = data.userResponseGoalDto
self.duringGoalCount = goal?.duringGoalCount
self.duringGoalAmount = goal?.duringGoalAmount
self.dday = goal?.dday
self.targetMoney = goal?.targetMoney
self.isOver = data.userResponseGoalDto?.isOver ?? false

let hasGoal = data.userResponseGoalDto != nil
UserSingleton.saveGoal(hasGoal)

self.collectionView.reloadData()
}
}

private func judgeUserLevel(_ userLevel: String) -> UserLevel? {
return UserLevel(rawValue: userLevel)
}
}

// MARK: - Login
extension MypageViewController {

Expand Down

0 comments on commit 6a9d9dc

Please sign in to comment.