Skip to content

Commit 0e0b3aa

Browse files
authored
Merge pull request #87 from DDD-Community/qa/bugFix
qa: 오류사항 대응
2 parents 18dadc1 + c1f0612 commit 0e0b3aa

File tree

6 files changed

+56
-16
lines changed

6 files changed

+56
-16
lines changed

Targets/DomainLayer/Sources/Entities/Post.swift

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,22 @@ public struct Post: Equatable {
5050
activityEndDate = translateToRequestFormat(for: activityEndDate)
5151
}
5252

53-
public static func == (lhs: Post, rhs: Post) -> Bool {
54-
lhs.title == rhs.title &&
55-
lhs.organization == rhs.organization &&
56-
lhs.postUrlString == rhs.postUrlString
53+
public mutating func mapDateValuesToResponseFormat() {
54+
recruitStartDate = translateToResponseFormat(for: recruitStartDate)
55+
recruitEndDate = translateToResponseFormat(for: recruitEndDate)
56+
activityStartDate = translateToResponseFormat(for: activityStartDate)
57+
activityEndDate = translateToResponseFormat(for: activityEndDate)
5758
}
5859

5960
private func translateToRequestFormat(for dateValue: String) -> String {
6061
guard !dateValue.isEmpty else { return "" }
6162
let date = DateFormatter.yyyyMMddResponseFormat.date(from: dateValue) ?? .init()
6263
return DateFormatter.yyyyMMddRequestFormat.string(from: date)
6364
}
65+
66+
private func translateToResponseFormat(for dateValue: String) -> String {
67+
guard !dateValue.isEmpty else { return "" }
68+
let date = DateFormatter.yyyyMMddRequestFormat.date(from: dateValue) ?? .init()
69+
return DateFormatter.yyyyMMddResponseFormat.string(from: date)
70+
}
6471
}

Targets/PresentationLayer/Sources/PostDetail/Coordinator/PostDetailCoordinator.swift

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import DIContainer
1010
import DomainLayer
1111
import UIKit
1212

13+
import RxSwift
14+
1315
protocol PostDetailCoordinatorType: CoordinatorType {
1416
func start(postID: Int)
1517
func pushWebView(urlString: String)
@@ -23,6 +25,12 @@ final class PostDetailCoordinator: PostDetailCoordinatorType {
2325
weak var parentCoordinator: CoordinatorType?
2426
var childCoordinators: [CoordinatorType] = []
2527
var navigationController: UINavigationController
28+
29+
private let disposeBag = DisposeBag()
30+
private let childCompletedSubject = PublishSubject<Post>()
31+
var childCompletedObservable: Observable<Post> {
32+
childCompletedSubject.asObservable()
33+
}
2634

2735
// MARK: - Initialize
2836
init(navigationController: UINavigationController) {
@@ -46,6 +54,9 @@ final class PostDetailCoordinator: PostDetailCoordinatorType {
4654
postUploadCoordinator.parentCoordinator = self
4755
addChild(postUploadCoordinator)
4856
postUploadCoordinator.startEdit(originID: id, originPost: post)
57+
postUploadCoordinator.postEditObservable
58+
.bind(to: childCompletedSubject)
59+
.disposed(by: disposeBag)
4960
}
5061

5162
func pushWebView(urlString: String) {

Targets/PresentationLayer/Sources/PostDetail/Reactor/PostDetailReactor.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ final class PostDetailReactor: Reactor {
2525
case didTapImageView
2626
case dismissImageViewController
2727
case didTapBookmarkButton
28+
case updatePost(Post)
2829
}
2930

3031
enum Mutation {
@@ -66,6 +67,7 @@ final class PostDetailReactor: Reactor {
6667
case .didTapImageView: return .just(.setIsPresentFullImage(true))
6768
case .dismissImageViewController: return .just(.setIsPresentFullImage(false))
6869
case .didTapBookmarkButton: return toggleBookmark()
70+
case .updatePost(let post): return .just(.setPost(post))
6971
}
7072
}
7173

Targets/PresentationLayer/Sources/PostDetail/View/PostDetailViewController.swift

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,6 @@ final class PostDetailViewController: BaseViewController<PostDetailReactor>, Coo
115115
super.init()
116116

117117
self.reactor = reactor
118-
bind()
119118
}
120119

121120
required init?(coder: NSCoder) {
@@ -127,6 +126,12 @@ final class PostDetailViewController: BaseViewController<PostDetailReactor>, Coo
127126
}
128127

129128
// MARK: - LifeCycle
129+
override func viewDidLoad() {
130+
super.viewDidLoad()
131+
132+
bind()
133+
}
134+
130135
override func viewDidLayoutSubviews() {
131136
navigationBar.pin.top().left().right()
132137
bottomShadowView.pin.bottom().left().right().height(Metric.bottomShadowViewHeightPercent)
@@ -345,16 +350,6 @@ private extension PostDetailViewController {
345350
})
346351
.disposed(by: disposeBag)
347352

348-
reactor.state
349-
.map { $0.isLoading }
350-
.distinctUntilChanged()
351-
.filter { $0 }
352-
.asSignal(onErrorSignalWith: .empty())
353-
.emit(with: self, onNext: { owner, _ in
354-
// TODO: 스켈레톤 적용
355-
})
356-
.disposed(by: disposeBag)
357-
358353
reactor.state
359354
.map(\.isPresentFullImage)
360355
.distinctUntilChanged()
@@ -380,6 +375,14 @@ private extension PostDetailViewController {
380375
}
381376

382377
func bind() {
378+
coordinator?.childCompletedObservable
379+
.filter { [weak self] in self?.reactor?.currentState.post != $0 }
380+
.bind(with: self, onNext: { owner, post in
381+
owner.reactor?.action.onNext(.updatePost(post))
382+
owner.postBinder.onNext(post)
383+
})
384+
.disposed(by: disposeBag)
385+
383386
navigationBar.backButtonTapObservable
384387
.asSignal(onErrorSignalWith: .empty())
385388
.emit(with: self, onNext: { owner, _ in
@@ -413,6 +416,8 @@ private extension PostDetailViewController {
413416
}
414417

415418
func addTagLabel(_ jobGroups: [String]) {
419+
tagLabelAreaView.subviews.forEach { $0.removeFromSuperview() }
420+
416421
for jobGroup in jobGroups {
417422
let tagLabel: TagLabel = .init()
418423
tagLabel.text = "\(jobGroup)"

Targets/PresentationLayer/Sources/PostUpload/Coordinator/PostUploadCoordinator.swift

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,11 @@ import DIContainer
1010
import DomainLayer
1111
import UIKit
1212

13+
import RxSwift
14+
1315
protocol PostUploadCoordinatorType: CoordinatorType {
1416
func startEdit(originID: Int, originPost: Post)
17+
func completedEdit(post: Post)
1518
}
1619

1720
final class PostUploadCoordinator: PostUploadCoordinatorType {
@@ -20,6 +23,11 @@ final class PostUploadCoordinator: PostUploadCoordinatorType {
2023
weak var parentCoordinator: CoordinatorType?
2124
var childCoordinators: [CoordinatorType] = []
2225
var navigationController: UINavigationController
26+
27+
private let postEditSubject = PublishSubject<Post>()
28+
var postEditObservable: Observable<Post> {
29+
postEditSubject.asObservable()
30+
}
2331

2432
// MARK: - Initialize
2533
init(navigationController: UINavigationController) {
@@ -38,6 +46,12 @@ final class PostUploadCoordinator: PostUploadCoordinatorType {
3846
let postUploadViewController = postUploadViewController(originID: originID, originPost: mappedOriginPost)
3947
navigationController.pushViewController(postUploadViewController, animated: true)
4048
}
49+
50+
func completedEdit(post: Post) {
51+
var mappedPost = post
52+
mappedPost.mapDateValuesToResponseFormat()
53+
postEditSubject.onNext(mappedPost)
54+
}
4155
}
4256

4357
// MARK: - Private

Targets/PresentationLayer/Sources/PostUpload/View/PostUploadViewController.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ private extension PostUploadViewController {
172172
return .init(self) { owner, uploadResult in
173173
switch uploadResult {
174174
case .success:
175+
owner.coordinator?.completedEdit(post: owner.reactor?.post ?? .init())
175176
owner.coordinator?.didFinish()
176177

177178
if owner.reactor?.originID != nil {
@@ -323,7 +324,7 @@ private extension PostUploadViewController {
323324
.map { $0.isLoading }
324325
.distinctUntilChanged()
325326
.bind(with: self, onNext: { owner, isLoading in
326-
// TODO: 서버 통신 시간 동안의 액션 추가 예정
327+
isLoading ? LoadingIndicator.start(withDimming: true) : LoadingIndicator.stop()
327328
})
328329
.disposed(by: disposeBag)
329330

0 commit comments

Comments
 (0)