Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโ€™ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor/home view #100

Merged
merged 10 commits into from
Dec 7, 2022
Merged
14 changes: 6 additions & 8 deletions DailyQuest/DailyQuest.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,10 @@
34283103292E2D9B00AE811B /* ToggleCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34283102292E2D9B00AE811B /* ToggleCell.swift */; };
34283105292E2E3F00AE811B /* ToggleField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34283104292E2E3F00AE811B /* ToggleField.swift */; };
3429084F29383D73001812B1 /* UserRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3429084E29383D73001812B1 /* UserRepository.swift */; };
3436FCFA293F2654003575C3 /* Notification+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3436FCF9293F2654003575C3 /* Notification+.swift */; };
34404D92293EF75F0007E661 /* SettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34404D91293EF75F0007E661 /* SettingsViewModel.swift */; };
34404D94293EF9850007E661 /* SettingsUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34404D93293EF9850007E661 /* SettingsUseCase.swift */; };
34404D96293EF9E50007E661 /* DefaultSettingsUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34404D95293EF9E50007E661 /* DefaultSettingsUseCase.swift */; };
3436FCFA293F2654003575C3 /* Notification+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3436FCF9293F2654003575C3 /* Notification+.swift */; };
3449AD5B2922164B00B87619 /* Quest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3449AD5A2922164B00B87619 /* Quest.swift */; };
3449AD5D2922197000B87619 /* User.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3449AD5C2922197000B87619 /* User.swift */; };
3449AD6029222B3900B87619 /* UserInfoCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3449AD5F29222B3900B87619 /* UserInfoCell.swift */; };
Expand All @@ -64,6 +64,7 @@
347D258D292C6E220038FCA2 /* MessageBubble.swift in Sources */ = {isa = PBXBuildFile; fileRef = 347D258C292C6E220038FCA2 /* MessageBubble.swift */; };
34874AA0292509A4000570DF /* QuestViewHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34874A9F292509A4000570DF /* QuestViewHeader.swift */; };
34874AA229250C43000570DF /* UIButton+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34874AA129250C43000570DF /* UIButton+.swift */; };
348FCE022940294900E4940C /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 348FCE012940294900E4940C /* HomeViewModel.swift */; };
349955122923220E007AB99E /* SwiftUIPreview.swift in Sources */ = {isa = PBXBuildFile; fileRef = 349955112923220E007AB99E /* SwiftUIPreview.swift */; };
3499551529232533007AB99E /* UIColor+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3499551429232533007AB99E /* UIColor+.swift */; };
3499551E29233DEF007AB99E /* QuestCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3499551D29233DEF007AB99E /* QuestCell.swift */; };
Expand Down Expand Up @@ -108,15 +109,13 @@
34EE0C652935FD79002BEC23 /* BrowseViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3499552A29236041007AB99E /* BrowseViewModel.swift */; };
34EE0C662935FD7D002BEC23 /* BrowseItemViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3499552629235D1E007AB99E /* BrowseItemViewModel.swift */; };
34EE6EB72924C674005AF583 /* QuestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34EE6EB62924C674005AF583 /* QuestView.swift */; };
34EE6EB92924CAA1005AF583 /* QuestViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34EE6EB82924CAA1005AF583 /* QuestViewModel.swift */; };
34FCD366293DE62700E0DC8A /* DefaultEnrollUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34FCD365293DE62700E0DC8A /* DefaultEnrollUseCase.swift */; };
34FCD369293DEED600E0DC8A /* FriendViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34FCD368293DEED600E0DC8A /* FriendViewController.swift */; };
34FCD36B293DF2F600E0DC8A /* FriendStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34FCD36A293DF2F600E0DC8A /* FriendStatusView.swift */; };
34FEFB992935EA6D00954A40 /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = 34FEFB982935EA6D00954A40 /* Kingfisher */; };
34FF6C5A292B86F8002AFD4D /* SnapKit-Dynamic in Frameworks */ = {isa = PBXBuildFile; productRef = 34FF6C46292B8014002AFD4D /* SnapKit-Dynamic */; };
34FF6C5D292B8B27002AFD4D /* RxCocoa in Frameworks */ = {isa = PBXBuildFile; productRef = 34FF6C5C292B8B27002AFD4D /* RxCocoa */; };
34FF6C5F292B8B27002AFD4D /* RxSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 34FF6C5E292B8B27002AFD4D /* RxSwift */; };
34FF6C60292B8BC9002AFD4D /* QuestViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34EE6EB82924CAA1005AF583 /* QuestViewModel.swift */; };
34FF6C64292B8C26002AFD4D /* RxCocoa-Dynamic in Frameworks */ = {isa = PBXBuildFile; productRef = 34FF6C63292B8C26002AFD4D /* RxCocoa-Dynamic */; };
9B1CFB3F292B585700CCE97A /* QuestDTO+Mapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B1CFB3E292B585700CCE97A /* QuestDTO+Mapping.swift */; };
9BD8CCF32935BC0D00E6EA2F /* DefaultBrowseRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BD8CCF22935BC0D00E6EA2F /* DefaultBrowseRepository.swift */; };
Expand Down Expand Up @@ -259,10 +258,10 @@
34283102292E2D9B00AE811B /* ToggleCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToggleCell.swift; sourceTree = "<group>"; };
34283104292E2E3F00AE811B /* ToggleField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToggleField.swift; sourceTree = "<group>"; };
3429084E29383D73001812B1 /* UserRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserRepository.swift; sourceTree = "<group>"; };
3436FCF9293F2654003575C3 /* Notification+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Notification+.swift"; sourceTree = "<group>"; };
34404D91293EF75F0007E661 /* SettingsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewModel.swift; sourceTree = "<group>"; };
34404D93293EF9850007E661 /* SettingsUseCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsUseCase.swift; sourceTree = "<group>"; };
34404D95293EF9E50007E661 /* DefaultSettingsUseCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultSettingsUseCase.swift; sourceTree = "<group>"; };
3436FCF9293F2654003575C3 /* Notification+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Notification+.swift"; sourceTree = "<group>"; };
3449AD5A2922164B00B87619 /* Quest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Quest.swift; sourceTree = "<group>"; };
3449AD5C2922197000B87619 /* User.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = User.swift; sourceTree = "<group>"; };
3449AD5F29222B3900B87619 /* UserInfoCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserInfoCell.swift; sourceTree = "<group>"; };
Expand All @@ -277,6 +276,7 @@
347D258C292C6E220038FCA2 /* MessageBubble.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageBubble.swift; sourceTree = "<group>"; };
34874A9F292509A4000570DF /* QuestViewHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuestViewHeader.swift; sourceTree = "<group>"; };
34874AA129250C43000570DF /* UIButton+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIButton+.swift"; sourceTree = "<group>"; };
348FCE012940294900E4940C /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = "<group>"; };
349955112923220E007AB99E /* SwiftUIPreview.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUIPreview.swift; sourceTree = "<group>"; };
3499551429232533007AB99E /* UIColor+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+.swift"; sourceTree = "<group>"; };
3499551D29233DEF007AB99E /* QuestCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuestCell.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -316,7 +316,6 @@
34EE0C612935FD0C002BEC23 /* BrowseUseCaseMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrowseUseCaseMock.swift; sourceTree = "<group>"; };
34EE0C632935FD6B002BEC23 /* BrowseViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrowseViewModelTests.swift; sourceTree = "<group>"; };
34EE6EB62924C674005AF583 /* QuestView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuestView.swift; sourceTree = "<group>"; };
34EE6EB82924CAA1005AF583 /* QuestViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuestViewModel.swift; sourceTree = "<group>"; };
34FCD365293DE62700E0DC8A /* DefaultEnrollUseCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultEnrollUseCase.swift; sourceTree = "<group>"; };
34FCD368293DEED600E0DC8A /* FriendViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendViewController.swift; sourceTree = "<group>"; };
34FCD36A293DF2F600E0DC8A /* FriendStatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendStatusView.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -774,9 +773,9 @@
34A529DE29247F13001BAD34 /* ViewModel */ = {
isa = PBXGroup;
children = (
34EE6EB82924CAA1005AF583 /* QuestViewModel.swift */,
345687FD29378AB900CA51E3 /* EnrollViewModel.swift */,
B5115452292CD07100FDBD22 /* CalendarViewModel.swift */,
348FCE012940294900E4940C /* HomeViewModel.swift */,
);
path = ViewModel;
sourceTree = "<group>";
Expand Down Expand Up @@ -1279,7 +1278,6 @@
3417B1462935DA9D00900454 /* DefaultBrowseUseCase.swift in Sources */,
347D258D292C6E220038FCA2 /* MessageBubble.swift in Sources */,
A5D3C813293DB1BE00F43B76 /* DataConfigure.swift in Sources */,
34EE6EB92924CAA1005AF583 /* QuestViewModel.swift in Sources */,
A5656459292BBDD40033E763 /* String+.swift in Sources */,
3429084F29383D73001812B1 /* UserRepository.swift in Sources */,
34CAE318292B19A3007653AD /* QuestsRepository.swift in Sources */,
Expand All @@ -1302,6 +1300,7 @@
342830FB292E2A5F00AE811B /* NavigateItemViewModel.swift in Sources */,
A51F01C82923392F0031ECA2 /* UserInfoStorage.swift in Sources */,
34A529E429248178001BAD34 /* SettingsSceneDIContainer.swift in Sources */,
348FCE022940294900E4940C /* HomeViewModel.swift in Sources */,
340A7246293455CE00B26AA6 /* AuthRepository.swift in Sources */,
345687FA2937815900CA51E3 /* QuantityView.swift in Sources */,
342830AA292E12C700AE811B /* SettingsViewController.swift in Sources */,
Expand Down Expand Up @@ -1409,7 +1408,6 @@
340FDFDB292B7A1500C4E3DC /* QuestViewModelTests.swift in Sources */,
A5D3C848293DE06B00F43B76 /* ProtectedUserRepository.swift in Sources */,
34EE0C622935FD0C002BEC23 /* BrowseUseCaseMock.swift in Sources */,
34FF6C60292B8BC9002AFD4D /* QuestViewModel.swift in Sources */,
34EE0C5F2935FBA1002BEC23 /* BrowseUseCaseTests.swift in Sources */,
340FDFD4292B5DA100C4E3DC /* QuestUseCase.swift in Sources */,
A5D3C844293DDFE100F43B76 /* FirebaseService.swift in Sources */,
Expand Down
2 changes: 1 addition & 1 deletion DailyQuest/DailyQuest/Application/AppAppearance.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import UIKit
final class AppAppearance {
static func setupAppearance() {
UITabBar.appearance().backgroundColor = .white
UITabBar.appearance().tintColor = .maxYellow
UITabBar.appearance().tintColor = .maxGreen

UITableViewCell.appearance().selectionStyle = .none
UITableView.appearance().separatorStyle = .none
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ final class HomeSceneDIContainer {
}

// MARK: - View Models
func makeQuestViewModel() -> QuestViewModel {
return QuestViewModel(questUseCase: makeQuestUseCase())
func makeHomeViewModel() -> HomeViewModel {
return HomeViewModel(questUseCase: makeQuestUseCase())
}

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

// MARK: - View Controller
func makeHomeViewController() -> HomeViewController {
return HomeViewController.create(with: makeQuestViewModel())
return HomeViewController.create(with: makeHomeViewModel())
}

func makeEnrollViewController() -> EnrollViewController {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,6 @@ extension DefaultQuestsRepository: QuestsRepository {
func save(with quest: [Quest]) -> Single<[Quest]> {
return persistentStorage.saveQuests(with: quest)
.flatMap (saveNetworkService(quests:))
.do{ event in
print("save", event)
}
}

func fetch(by date: Date) -> Observable<[Quest]> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ final class DefaultHomeCoordinator: HomeCoordinator {
func start() {
let homeViewController = homeSceneDIContainer.makeHomeViewController()
navigationController.pushViewController(homeViewController, animated: false)
navigationController.isNavigationBarHidden = true

homeViewController
.coordinatorPublisher
Expand Down
38 changes: 17 additions & 21 deletions DailyQuest/DailyQuest/Presentation/Home/View/QuestView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,39 +11,35 @@ import RxSwift
import RxCocoa

final class QuestView: UITableView {
private var viewModel: QuestViewModel!
private var disposableBag = DisposeBag()

override var contentSize: CGSize {
didSet {
invalidateIntrinsicContentSize()
}
}

override var intrinsicContentSize: CGSize {
let number = numberOfRows(inSection: 0)
return CGSize(width: contentSize.width, height: CGFloat(75*number + 75))
}

override init(frame: CGRect, style: UITableView.Style) {
super.init(frame: frame, style: style)

rowHeight = 75

register(QuestCell.self, forCellReuseIdentifier: QuestCell.reuseIdentifier)
configureTableView()
}

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

func setup(with viewModel: QuestViewModel) {
self.viewModel = viewModel
}

func bind() {
let output = viewModel.transform(
input: QuestViewModel
.Input(viewDidLoad: .just(Date()).asObservable(),
itemDidClicked: rx.modelSelected(Quest.self).asObservable())
)
private func configureTableView() {
rowHeight = 75
sectionHeaderTopPadding = 0
isScrollEnabled = false

output
.data
.drive(rx.items(cellIdentifier: QuestCell.reuseIdentifier, cellType: QuestCell.self)) { row, item, cell in
cell.setup(with: item)
cell.backgroundColor = .white
}
.disposed(by: disposableBag)
register(QuestCell.self, forCellReuseIdentifier: QuestCell.reuseIdentifier)
}
}

Expand Down
22 changes: 2 additions & 20 deletions DailyQuest/DailyQuest/Presentation/Home/View/StatusView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ final class StatusView: UIView {
iconContainer.snp.makeConstraints { make in
make.height.equalToSuperview()
make.width.equalTo(iconContainer.snp.height)
make.leading.equalToSuperview()
make.top.leading.bottom.equalToSuperview()
}

addSubview(messageBubble)
Expand All @@ -87,8 +87,7 @@ final class StatusView: UIView {
addSubview(profileButton)
profileButton.snp.makeConstraints { make in
make.trailing.equalToSuperview()
make.height.equalToSuperview()
make.width.equalTo(profileButton.snp.height)
make.centerY.equalToSuperview()
}

addSubview(statusLabel)
Expand All @@ -97,21 +96,4 @@ final class StatusView: UIView {
make.bottom.equalTo(progressBar.snp.top)
}
}

// Setup method goes here.
}

#if canImport(SwiftUI) && DEBUG
import SwiftUI

struct StatusViewPreview: PreviewProvider{
static var previews: some View {
UIViewPreview {
let view = StatusView(frame: .zero)

return view
}
.previewLayout(.fixed(width: 500, height: 100))
}
}
#endif
Loading