diff --git a/DailyQuest/DailyQuest/Presentation/Home/View/QuestViewHeader.swift b/DailyQuest/DailyQuest/Presentation/Home/View/QuestViewHeader.swift index 732d810..003f70e 100644 --- a/DailyQuest/DailyQuest/Presentation/Home/View/QuestViewHeader.swift +++ b/DailyQuest/DailyQuest/Presentation/Home/View/QuestViewHeader.swift @@ -16,9 +16,9 @@ final class QuestViewHeader: UIStackView { var buttonDidClick = PublishSubject() // MARK: - Components - private lazy var titleLabel: UILabel = { + private(set) lazy var titleLabel: UILabel = { let titleLabel = UILabel() - titleLabel.text = "Today Quest" + titleLabel.text = "Today Quests" titleLabel.textColor = .maxViolet titleLabel.font = UIFont.boldSystemFont(ofSize: 32) diff --git a/DailyQuest/DailyQuest/Presentation/Home/ViewController/HomeViewController.swift b/DailyQuest/DailyQuest/Presentation/Home/ViewController/HomeViewController.swift index cdd29bc..3253a6c 100644 --- a/DailyQuest/DailyQuest/Presentation/Home/ViewController/HomeViewController.swift +++ b/DailyQuest/DailyQuest/Presentation/Home/ViewController/HomeViewController.swift @@ -162,6 +162,7 @@ final class HomeViewController: UIViewController { disposeBag: disposableBag ) + bindToQuestViewHeader(with: output) bindToCalendarView(with: output) bindToQuestHeaderButton() bindToQuestView(with: output) @@ -169,6 +170,13 @@ final class HomeViewController: UIViewController { } + private func bindToQuestViewHeader(with output: HomeViewModel.Output) { + output + .questHeaderLabel + .bind(to: questViewHeader.titleLabel.rx.text) + .disposed(by: disposableBag) + } + private func bindToCalendarView(with output: HomeViewModel.Output) { output .displayDays diff --git a/DailyQuest/DailyQuest/Presentation/Home/ViewModel/HomeViewModel.swift b/DailyQuest/DailyQuest/Presentation/Home/ViewModel/HomeViewModel.swift index 6fe84dd..22b895d 100644 --- a/DailyQuest/DailyQuest/Presentation/Home/ViewModel/HomeViewModel.swift +++ b/DailyQuest/DailyQuest/Presentation/Home/ViewModel/HomeViewModel.swift @@ -31,6 +31,7 @@ final class HomeViewModel { } struct Output { + let questHeaderLabel: Observable let data: Driver<[Quest]> let userData: Observable let questStatus: Driver<(Int, Int)> @@ -78,6 +79,11 @@ final class HomeViewModel { return !result.isEmpty ? owner.currentDate : nil } + let questHeaderLabel = input + .daySelected + .map(calculateRelative(_:)) + .asObservable() + let data = Observable .merge( updated, @@ -175,7 +181,8 @@ final class HomeViewModel { }) .disposed(by: disposeBag) - return Output(data: data, + return Output(questHeaderLabel: questHeaderLabel, + data: data, userData: userData, questStatus: questStatus, profileTapResult: profileTapResult, @@ -183,3 +190,17 @@ final class HomeViewModel { displayDays: displayDays) } } + +private extension HomeViewModel { + func calculateRelative(_ date: Date) -> String { + let today = Date() + + if today.startOfDay > date.startOfDay { + return "Previous Quests" + } else if today.startOfDay < date.startOfDay { + return "Upcomming Quests" + } else { + return "Today Quests" + } + } +}