Skip to content

Commit b720787

Browse files
authored
Merge pull request #122 from boostcampwm-2022/refactor/QuestViewHeaderLabel
Refactor/quest view header label
2 parents 3efe71f + 1f3d95d commit b720787

File tree

3 files changed

+32
-3
lines changed

3 files changed

+32
-3
lines changed

DailyQuest/DailyQuest/Presentation/Home/View/QuestViewHeader.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ final class QuestViewHeader: UIStackView {
1616
var buttonDidClick = PublishSubject<Void>()
1717

1818
// MARK: - Components
19-
private lazy var titleLabel: UILabel = {
19+
private(set) lazy var titleLabel: UILabel = {
2020
let titleLabel = UILabel()
21-
titleLabel.text = "Today Quest"
21+
titleLabel.text = "Today Quests"
2222
titleLabel.textColor = .maxViolet
2323
titleLabel.font = UIFont.boldSystemFont(ofSize: 32)
2424

DailyQuest/DailyQuest/Presentation/Home/ViewController/HomeViewController.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,13 +162,21 @@ final class HomeViewController: UIViewController {
162162
disposeBag: disposableBag
163163
)
164164

165+
bindToQuestViewHeader(with: output)
165166
bindToCalendarView(with: output)
166167
bindToQuestHeaderButton()
167168
bindToQuestView(with: output)
168169
bindToStatusView(with: output)
169170

170171
}
171172

173+
private func bindToQuestViewHeader(with output: HomeViewModel.Output) {
174+
output
175+
.questHeaderLabel
176+
.bind(to: questViewHeader.titleLabel.rx.text)
177+
.disposed(by: disposableBag)
178+
}
179+
172180
private func bindToCalendarView(with output: HomeViewModel.Output) {
173181
output
174182
.displayDays

DailyQuest/DailyQuest/Presentation/Home/ViewModel/HomeViewModel.swift

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ final class HomeViewModel {
3131
}
3232

3333
struct Output {
34+
let questHeaderLabel: Observable<String>
3435
let data: Driver<[Quest]>
3536
let userData: Observable<User>
3637
let questStatus: Driver<(Int, Int)>
@@ -78,6 +79,11 @@ final class HomeViewModel {
7879
return !result.isEmpty ? owner.currentDate : nil
7980
}
8081

82+
let questHeaderLabel = input
83+
.daySelected
84+
.map(calculateRelative(_:))
85+
.asObservable()
86+
8187
let data = Observable
8288
.merge(
8389
updated,
@@ -175,11 +181,26 @@ final class HomeViewModel {
175181
})
176182
.disposed(by: disposeBag)
177183

178-
return Output(data: data,
184+
return Output(questHeaderLabel: questHeaderLabel,
185+
data: data,
179186
userData: userData,
180187
questStatus: questStatus,
181188
profileTapResult: profileTapResult,
182189
currentMonth: currentMonth,
183190
displayDays: displayDays)
184191
}
185192
}
193+
194+
private extension HomeViewModel {
195+
func calculateRelative(_ date: Date) -> String {
196+
let today = Date()
197+
198+
if today.startOfDay > date.startOfDay {
199+
return "Previous Quests"
200+
} else if today.startOfDay < date.startOfDay {
201+
return "Upcomming Quests"
202+
} else {
203+
return "Today Quests"
204+
}
205+
}
206+
}

0 commit comments

Comments
 (0)