From 51dfc9e91c08f86fdc425b43a09b0af3f7a67fd7 Mon Sep 17 00:00:00 2001 From: youz2me Date: Fri, 19 Jul 2024 00:06:14 +0900 Subject: [PATCH] =?UTF-8?q?feat/#223=20=EC=A7=80=EA=B0=81=20=EA=BE=B8?= =?UTF-8?q?=EB=AC=BC=EC=9D=B4=20=EB=B7=B0=20=ED=99=94=EB=A9=B4=20=EC=A0=84?= =?UTF-8?q?=ED=99=98=20=EB=B0=8F=20=EB=A1=9C=EC=A7=81=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PromiseInfoViewController.swift | 6 ++++ .../Source/Promise/Tardy/View/TardyView.swift | 2 +- .../ViewController/TardyViewController.swift | 33 ++++++++++++++++++- .../Tardy/ViewModel/TardyViewModel.swift | 5 +-- 4 files changed, 42 insertions(+), 4 deletions(-) diff --git a/KkuMulKum/Source/Promise/PromiseInfo/ViewController/PromiseInfoViewController.swift b/KkuMulKum/Source/Promise/PromiseInfo/ViewController/PromiseInfoViewController.swift index 23f377fc..4607d923 100644 --- a/KkuMulKum/Source/Promise/PromiseInfo/ViewController/PromiseInfoViewController.swift +++ b/KkuMulKum/Source/Promise/PromiseInfo/ViewController/PromiseInfoViewController.swift @@ -28,6 +28,12 @@ class PromiseInfoViewController: BaseViewController { fatalError("init(coder:) has not been implemented") } + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + + // TODO: 서버 통신하고 데이터 바인딩 + } + override func setupView() { view.addSubview(promiseInfoView) self.navigationController?.navigationBar.shadowImage = nil diff --git a/KkuMulKum/Source/Promise/Tardy/View/TardyView.swift b/KkuMulKum/Source/Promise/Tardy/View/TardyView.swift index eb1be060..a788b7bb 100644 --- a/KkuMulKum/Source/Promise/Tardy/View/TardyView.swift +++ b/KkuMulKum/Source/Promise/Tardy/View/TardyView.swift @@ -39,7 +39,7 @@ class TardyView: BaseView { let finishMeetingButton: CustomButton = CustomButton( title: "약속 마치기", - isEnabled: false + isEnabled: true ).then { $0.backgroundColor = .maincolor } diff --git a/KkuMulKum/Source/Promise/Tardy/ViewController/TardyViewController.swift b/KkuMulKum/Source/Promise/Tardy/ViewController/TardyViewController.swift index 034a9370..6ca53d45 100644 --- a/KkuMulKum/Source/Promise/Tardy/ViewController/TardyViewController.swift +++ b/KkuMulKum/Source/Promise/Tardy/ViewController/TardyViewController.swift @@ -33,7 +33,20 @@ class TardyViewController: BaseViewController { // MARK: - Setup override func loadView() { - view = tardyViewModel.hasTardy.value ? tardyView : arriveView + let state = !tardyViewModel.hasTardy.value && tardyViewModel.isPastDue.value + view = state ? tardyView : arriveView + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + + // TODO: 서버 통신하고 데이터 바인딩 + } + + override func viewDidLoad() { + super.viewDidLoad() + + setupBinding() } override func setupDelegate() { @@ -43,6 +56,23 @@ class TardyViewController: BaseViewController { } +// MARK: - Extension + +private extension TardyViewController { + func setupBinding() { + /// 시간이 지나고 지각자가 없을 때 arriveView로 띄워짐 + tardyViewModel.hasTardy.bind(with: self) { owner, flag in + let state = !flag && owner.tardyViewModel.isPastDue.value + owner.view = state ? owner.tardyView : owner.arriveView + } + + /// isFinishButtonEnabled에 따라서 버튼 활성화 상태 변경 + tardyViewModel.isFinishButtonEnabled.bind(with: self) { owner, flag in + self.tardyView.finishMeetingButton.isEnabled = flag + } + } +} + // MARK: UICollectionViewDelegate extension TardyViewController: UICollectionViewDelegate { @@ -57,6 +87,7 @@ extension TardyViewController: UICollectionViewDataSource { _ collectionView: UICollectionView, numberOfItemsInSection section: Int ) -> Int { + // TODO: 데이터 바인딩 return 10 } diff --git a/KkuMulKum/Source/Promise/Tardy/ViewModel/TardyViewModel.swift b/KkuMulKum/Source/Promise/Tardy/ViewModel/TardyViewModel.swift index 2e3e9c50..c03ecb79 100644 --- a/KkuMulKum/Source/Promise/Tardy/ViewModel/TardyViewModel.swift +++ b/KkuMulKum/Source/Promise/Tardy/ViewModel/TardyViewModel.swift @@ -13,8 +13,9 @@ class TardyViewModel { // MARK: Property let tardyService: TardyServiceType - var isPastDue: ObservablePattern = ObservablePattern(false) - var hasTardy: ObservablePattern = ObservablePattern(false) + var isPastDue: ObservablePattern = ObservablePattern(true) + var hasTardy: ObservablePattern = ObservablePattern(true) + var isFinishButtonEnabled: ObservablePattern = ObservablePattern(true) let promiseID: ObservablePattern