Skip to content

Commit 05a5570

Browse files
authored
Merge pull request #100 from boostcampwm-2022/refactor/HomeView
Refactor/home view
2 parents 1c0805b + f1d0c75 commit 05a5570

File tree

12 files changed

+125
-113
lines changed

12 files changed

+125
-113
lines changed

DailyQuest/DailyQuest.xcodeproj/project.pbxproj

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,10 @@
4646
34283103292E2D9B00AE811B /* ToggleCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34283102292E2D9B00AE811B /* ToggleCell.swift */; };
4747
34283105292E2E3F00AE811B /* ToggleField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34283104292E2E3F00AE811B /* ToggleField.swift */; };
4848
3429084F29383D73001812B1 /* UserRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3429084E29383D73001812B1 /* UserRepository.swift */; };
49+
3436FCFA293F2654003575C3 /* Notification+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3436FCF9293F2654003575C3 /* Notification+.swift */; };
4950
34404D92293EF75F0007E661 /* SettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34404D91293EF75F0007E661 /* SettingsViewModel.swift */; };
5051
34404D94293EF9850007E661 /* SettingsUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34404D93293EF9850007E661 /* SettingsUseCase.swift */; };
5152
34404D96293EF9E50007E661 /* DefaultSettingsUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34404D95293EF9E50007E661 /* DefaultSettingsUseCase.swift */; };
52-
3436FCFA293F2654003575C3 /* Notification+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3436FCF9293F2654003575C3 /* Notification+.swift */; };
5353
3449AD5B2922164B00B87619 /* Quest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3449AD5A2922164B00B87619 /* Quest.swift */; };
5454
3449AD5D2922197000B87619 /* User.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3449AD5C2922197000B87619 /* User.swift */; };
5555
3449AD6029222B3900B87619 /* UserInfoCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3449AD5F29222B3900B87619 /* UserInfoCell.swift */; };
@@ -64,6 +64,7 @@
6464
347D258D292C6E220038FCA2 /* MessageBubble.swift in Sources */ = {isa = PBXBuildFile; fileRef = 347D258C292C6E220038FCA2 /* MessageBubble.swift */; };
6565
34874AA0292509A4000570DF /* QuestViewHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34874A9F292509A4000570DF /* QuestViewHeader.swift */; };
6666
34874AA229250C43000570DF /* UIButton+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34874AA129250C43000570DF /* UIButton+.swift */; };
67+
348FCE022940294900E4940C /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 348FCE012940294900E4940C /* HomeViewModel.swift */; };
6768
349955122923220E007AB99E /* SwiftUIPreview.swift in Sources */ = {isa = PBXBuildFile; fileRef = 349955112923220E007AB99E /* SwiftUIPreview.swift */; };
6869
3499551529232533007AB99E /* UIColor+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3499551429232533007AB99E /* UIColor+.swift */; };
6970
3499551E29233DEF007AB99E /* QuestCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3499551D29233DEF007AB99E /* QuestCell.swift */; };
@@ -108,15 +109,13 @@
108109
34EE0C652935FD79002BEC23 /* BrowseViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3499552A29236041007AB99E /* BrowseViewModel.swift */; };
109110
34EE0C662935FD7D002BEC23 /* BrowseItemViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3499552629235D1E007AB99E /* BrowseItemViewModel.swift */; };
110111
34EE6EB72924C674005AF583 /* QuestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34EE6EB62924C674005AF583 /* QuestView.swift */; };
111-
34EE6EB92924CAA1005AF583 /* QuestViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34EE6EB82924CAA1005AF583 /* QuestViewModel.swift */; };
112112
34FCD366293DE62700E0DC8A /* DefaultEnrollUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34FCD365293DE62700E0DC8A /* DefaultEnrollUseCase.swift */; };
113113
34FCD369293DEED600E0DC8A /* FriendViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34FCD368293DEED600E0DC8A /* FriendViewController.swift */; };
114114
34FCD36B293DF2F600E0DC8A /* FriendStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34FCD36A293DF2F600E0DC8A /* FriendStatusView.swift */; };
115115
34FEFB992935EA6D00954A40 /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = 34FEFB982935EA6D00954A40 /* Kingfisher */; };
116116
34FF6C5A292B86F8002AFD4D /* SnapKit-Dynamic in Frameworks */ = {isa = PBXBuildFile; productRef = 34FF6C46292B8014002AFD4D /* SnapKit-Dynamic */; };
117117
34FF6C5D292B8B27002AFD4D /* RxCocoa in Frameworks */ = {isa = PBXBuildFile; productRef = 34FF6C5C292B8B27002AFD4D /* RxCocoa */; };
118118
34FF6C5F292B8B27002AFD4D /* RxSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 34FF6C5E292B8B27002AFD4D /* RxSwift */; };
119-
34FF6C60292B8BC9002AFD4D /* QuestViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34EE6EB82924CAA1005AF583 /* QuestViewModel.swift */; };
120119
34FF6C64292B8C26002AFD4D /* RxCocoa-Dynamic in Frameworks */ = {isa = PBXBuildFile; productRef = 34FF6C63292B8C26002AFD4D /* RxCocoa-Dynamic */; };
121120
9B1CFB3F292B585700CCE97A /* QuestDTO+Mapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B1CFB3E292B585700CCE97A /* QuestDTO+Mapping.swift */; };
122121
9BD8CCF32935BC0D00E6EA2F /* DefaultBrowseRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BD8CCF22935BC0D00E6EA2F /* DefaultBrowseRepository.swift */; };
@@ -259,10 +258,10 @@
259258
34283102292E2D9B00AE811B /* ToggleCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToggleCell.swift; sourceTree = "<group>"; };
260259
34283104292E2E3F00AE811B /* ToggleField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToggleField.swift; sourceTree = "<group>"; };
261260
3429084E29383D73001812B1 /* UserRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserRepository.swift; sourceTree = "<group>"; };
261+
3436FCF9293F2654003575C3 /* Notification+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Notification+.swift"; sourceTree = "<group>"; };
262262
34404D91293EF75F0007E661 /* SettingsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewModel.swift; sourceTree = "<group>"; };
263263
34404D93293EF9850007E661 /* SettingsUseCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsUseCase.swift; sourceTree = "<group>"; };
264264
34404D95293EF9E50007E661 /* DefaultSettingsUseCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultSettingsUseCase.swift; sourceTree = "<group>"; };
265-
3436FCF9293F2654003575C3 /* Notification+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Notification+.swift"; sourceTree = "<group>"; };
266265
3449AD5A2922164B00B87619 /* Quest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Quest.swift; sourceTree = "<group>"; };
267266
3449AD5C2922197000B87619 /* User.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = User.swift; sourceTree = "<group>"; };
268267
3449AD5F29222B3900B87619 /* UserInfoCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserInfoCell.swift; sourceTree = "<group>"; };
@@ -277,6 +276,7 @@
277276
347D258C292C6E220038FCA2 /* MessageBubble.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageBubble.swift; sourceTree = "<group>"; };
278277
34874A9F292509A4000570DF /* QuestViewHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuestViewHeader.swift; sourceTree = "<group>"; };
279278
34874AA129250C43000570DF /* UIButton+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIButton+.swift"; sourceTree = "<group>"; };
279+
348FCE012940294900E4940C /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = "<group>"; };
280280
349955112923220E007AB99E /* SwiftUIPreview.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUIPreview.swift; sourceTree = "<group>"; };
281281
3499551429232533007AB99E /* UIColor+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+.swift"; sourceTree = "<group>"; };
282282
3499551D29233DEF007AB99E /* QuestCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuestCell.swift; sourceTree = "<group>"; };
@@ -316,7 +316,6 @@
316316
34EE0C612935FD0C002BEC23 /* BrowseUseCaseMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrowseUseCaseMock.swift; sourceTree = "<group>"; };
317317
34EE0C632935FD6B002BEC23 /* BrowseViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrowseViewModelTests.swift; sourceTree = "<group>"; };
318318
34EE6EB62924C674005AF583 /* QuestView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuestView.swift; sourceTree = "<group>"; };
319-
34EE6EB82924CAA1005AF583 /* QuestViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuestViewModel.swift; sourceTree = "<group>"; };
320319
34FCD365293DE62700E0DC8A /* DefaultEnrollUseCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultEnrollUseCase.swift; sourceTree = "<group>"; };
321320
34FCD368293DEED600E0DC8A /* FriendViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendViewController.swift; sourceTree = "<group>"; };
322321
34FCD36A293DF2F600E0DC8A /* FriendStatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendStatusView.swift; sourceTree = "<group>"; };
@@ -774,9 +773,9 @@
774773
34A529DE29247F13001BAD34 /* ViewModel */ = {
775774
isa = PBXGroup;
776775
children = (
777-
34EE6EB82924CAA1005AF583 /* QuestViewModel.swift */,
778776
345687FD29378AB900CA51E3 /* EnrollViewModel.swift */,
779777
B5115452292CD07100FDBD22 /* CalendarViewModel.swift */,
778+
348FCE012940294900E4940C /* HomeViewModel.swift */,
780779
);
781780
path = ViewModel;
782781
sourceTree = "<group>";
@@ -1279,7 +1278,6 @@
12791278
3417B1462935DA9D00900454 /* DefaultBrowseUseCase.swift in Sources */,
12801279
347D258D292C6E220038FCA2 /* MessageBubble.swift in Sources */,
12811280
A5D3C813293DB1BE00F43B76 /* DataConfigure.swift in Sources */,
1282-
34EE6EB92924CAA1005AF583 /* QuestViewModel.swift in Sources */,
12831281
A5656459292BBDD40033E763 /* String+.swift in Sources */,
12841282
3429084F29383D73001812B1 /* UserRepository.swift in Sources */,
12851283
34CAE318292B19A3007653AD /* QuestsRepository.swift in Sources */,
@@ -1302,6 +1300,7 @@
13021300
342830FB292E2A5F00AE811B /* NavigateItemViewModel.swift in Sources */,
13031301
A51F01C82923392F0031ECA2 /* UserInfoStorage.swift in Sources */,
13041302
34A529E429248178001BAD34 /* SettingsSceneDIContainer.swift in Sources */,
1303+
348FCE022940294900E4940C /* HomeViewModel.swift in Sources */,
13051304
340A7246293455CE00B26AA6 /* AuthRepository.swift in Sources */,
13061305
345687FA2937815900CA51E3 /* QuantityView.swift in Sources */,
13071306
342830AA292E12C700AE811B /* SettingsViewController.swift in Sources */,
@@ -1409,7 +1408,6 @@
14091408
340FDFDB292B7A1500C4E3DC /* QuestViewModelTests.swift in Sources */,
14101409
A5D3C848293DE06B00F43B76 /* ProtectedUserRepository.swift in Sources */,
14111410
34EE0C622935FD0C002BEC23 /* BrowseUseCaseMock.swift in Sources */,
1412-
34FF6C60292B8BC9002AFD4D /* QuestViewModel.swift in Sources */,
14131411
34EE0C5F2935FBA1002BEC23 /* BrowseUseCaseTests.swift in Sources */,
14141412
340FDFD4292B5DA100C4E3DC /* QuestUseCase.swift in Sources */,
14151413
A5D3C844293DDFE100F43B76 /* FirebaseService.swift in Sources */,

DailyQuest/DailyQuest/Application/AppAppearance.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import UIKit
1010
final class AppAppearance {
1111
static func setupAppearance() {
1212
UITabBar.appearance().backgroundColor = .white
13-
UITabBar.appearance().tintColor = .maxYellow
13+
UITabBar.appearance().tintColor = .maxGreen
1414

1515
UITableViewCell.appearance().selectionStyle = .none
1616
UITableView.appearance().separatorStyle = .none

DailyQuest/DailyQuest/Application/DIContainer/HomeSceneDIContainer.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ final class HomeSceneDIContainer {
2626
}
2727

2828
// MARK: - View Models
29-
func makeQuestViewModel() -> QuestViewModel {
30-
return QuestViewModel(questUseCase: makeQuestUseCase())
29+
func makeHomeViewModel() -> HomeViewModel {
30+
return HomeViewModel(questUseCase: makeQuestUseCase())
3131
}
3232

3333
func makeEnrollViewModel() -> EnrollViewModel {
@@ -36,7 +36,7 @@ final class HomeSceneDIContainer {
3636

3737
// MARK: - View Controller
3838
func makeHomeViewController() -> HomeViewController {
39-
return HomeViewController.create(with: makeQuestViewModel())
39+
return HomeViewController.create(with: makeHomeViewModel())
4040
}
4141

4242
func makeEnrollViewController() -> EnrollViewController {

DailyQuest/DailyQuest/Data/Repositories/DefaultQuestsRepository.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,6 @@ extension DefaultQuestsRepository: QuestsRepository {
2323
func save(with quest: [Quest]) -> Single<[Quest]> {
2424
return persistentStorage.saveQuests(with: quest)
2525
.flatMap (saveNetworkService(quests:))
26-
.do{ event in
27-
print("save", event)
28-
}
2926
}
3027

3128
func fetch(by date: Date) -> Observable<[Quest]> {

DailyQuest/DailyQuest/Presentation/Home/Flow/HomeCoordinator.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ final class DefaultHomeCoordinator: HomeCoordinator {
3131
func start() {
3232
let homeViewController = homeSceneDIContainer.makeHomeViewController()
3333
navigationController.pushViewController(homeViewController, animated: false)
34+
navigationController.isNavigationBarHidden = true
3435

3536
homeViewController
3637
.coordinatorPublisher

DailyQuest/DailyQuest/Presentation/Home/View/QuestView.swift

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,39 +11,35 @@ import RxSwift
1111
import RxCocoa
1212

1313
final class QuestView: UITableView {
14-
private var viewModel: QuestViewModel!
1514
private var disposableBag = DisposeBag()
1615

16+
override var contentSize: CGSize {
17+
didSet {
18+
invalidateIntrinsicContentSize()
19+
}
20+
}
21+
22+
override var intrinsicContentSize: CGSize {
23+
let number = numberOfRows(inSection: 0)
24+
return CGSize(width: contentSize.width, height: CGFloat(75*number + 75))
25+
}
26+
1727
override init(frame: CGRect, style: UITableView.Style) {
1828
super.init(frame: frame, style: style)
1929

20-
rowHeight = 75
21-
22-
register(QuestCell.self, forCellReuseIdentifier: QuestCell.reuseIdentifier)
30+
configureTableView()
2331
}
2432

2533
required init?(coder: NSCoder) {
2634
fatalError("init(coder:) has not been implemented")
2735
}
2836

29-
func setup(with viewModel: QuestViewModel) {
30-
self.viewModel = viewModel
31-
}
32-
33-
func bind() {
34-
let output = viewModel.transform(
35-
input: QuestViewModel
36-
.Input(viewDidLoad: .just(Date()).asObservable(),
37-
itemDidClicked: rx.modelSelected(Quest.self).asObservable())
38-
)
37+
private func configureTableView() {
38+
rowHeight = 75
39+
sectionHeaderTopPadding = 0
40+
isScrollEnabled = false
3941

40-
output
41-
.data
42-
.drive(rx.items(cellIdentifier: QuestCell.reuseIdentifier, cellType: QuestCell.self)) { row, item, cell in
43-
cell.setup(with: item)
44-
cell.backgroundColor = .white
45-
}
46-
.disposed(by: disposableBag)
42+
register(QuestCell.self, forCellReuseIdentifier: QuestCell.reuseIdentifier)
4743
}
4844
}
4945

DailyQuest/DailyQuest/Presentation/Home/View/StatusView.swift

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ final class StatusView: UIView {
6767
iconContainer.snp.makeConstraints { make in
6868
make.height.equalToSuperview()
6969
make.width.equalTo(iconContainer.snp.height)
70-
make.leading.equalToSuperview()
70+
make.top.leading.bottom.equalToSuperview()
7171
}
7272

7373
addSubview(messageBubble)
@@ -87,8 +87,7 @@ final class StatusView: UIView {
8787
addSubview(profileButton)
8888
profileButton.snp.makeConstraints { make in
8989
make.trailing.equalToSuperview()
90-
make.height.equalToSuperview()
91-
make.width.equalTo(profileButton.snp.height)
90+
make.centerY.equalToSuperview()
9291
}
9392

9493
addSubview(statusLabel)
@@ -97,21 +96,4 @@ final class StatusView: UIView {
9796
make.bottom.equalTo(progressBar.snp.top)
9897
}
9998
}
100-
101-
// Setup method goes here.
102-
}
103-
104-
#if canImport(SwiftUI) && DEBUG
105-
import SwiftUI
106-
107-
struct StatusViewPreview: PreviewProvider{
108-
static var previews: some View {
109-
UIViewPreview {
110-
let view = StatusView(frame: .zero)
111-
112-
return view
113-
}
114-
.previewLayout(.fixed(width: 500, height: 100))
115-
}
11699
}
117-
#endif

0 commit comments

Comments
 (0)