Skip to content

Commit cfce963

Browse files
authored
๐Ÿ”— :: (#178) ๋ฉด์ ‘ํ›„๊ธฐ ์ž‘์„ฑ & ์กฐํšŒ ๊ฐœ๋ฐœ
2 parents 3a19767 + f068691 commit cfce963

36 files changed

+1422
-42
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import RxFlow
2+
3+
public enum AddReviewStep: Step {
4+
case addReviewIsRequired
5+
case dismissToWritableReview
6+
}

โ€ŽProjects/Core/Sources/Steps/CompanyDetailStep.swiftโ€Ž

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,8 @@ public enum CompanyDetailStep: Step {
44
case companyDetailIsRequired
55
case popIsRequired
66
case recruitmentDetailIsRequired(id: Int)
7+
case interviewReviewDetailIsRequired(
8+
id: Int,
9+
name: String
10+
)
711
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import RxFlow
2+
3+
public enum InterviewReviewDetailStep: Step {
4+
case interviewReviewDetailIsRequired
5+
}

โ€ŽProjects/Core/Sources/Steps/MyPageStep.swiftโ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import RxFlow
33
public enum MyPageStep: Step {
44
case myPageIsRequired
55
case tabsIsRequired
6+
case writableReviewIsRequired(_ id: Int)
67
case noticeIsRequired
78
case confirmIsRequired
89
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import RxFlow
2+
3+
public enum WritableReviewStep: Step {
4+
case writableReviewIsRequired
5+
case addReviewIsRequired
6+
case popToMyPage
7+
}

โ€ŽProjects/Data/Sources/DTO/Companies/WritableReviewListResponseDTO.swiftโ€Ž

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,19 @@ struct WritableReviewListResponseDTO: Decodable {
66
}
77

88
struct WritableReviewCompanyResponseDTO: Decodable {
9-
let reviewID: Int
9+
let companyID: Int
1010
let name: String
1111

1212
enum CodingKeys: String, CodingKey {
13-
case reviewID = "id"
13+
case companyID = "id"
1414
case name
1515
}
1616
}
1717

1818
extension WritableReviewListResponseDTO {
1919
func toDomain() -> [WritableReviewCompanyEntity] {
2020
companies.map {
21-
WritableReviewCompanyEntity(reviewID: $0.reviewID, name: $0.name)
21+
WritableReviewCompanyEntity(companyID: $0.companyID, name: $0.name)
2222
}
2323
}
2424
}
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import Foundation
22

33
public struct WritableReviewCompanyEntity: Equatable, Hashable {
4-
public let reviewID: Int
4+
public let companyID: Int
55
public let name: String
66

7-
public init(reviewID: Int, name: String) {
8-
self.reviewID = reviewID
7+
public init(companyID: Int, name: String) {
8+
self.companyID = companyID
99
self.name = name
1010
}
1111
}

โ€ŽProjects/Flow/Sources/Company/CompanyDetailFlow.swiftโ€Ž

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ public final class CompanyDetailFlow: Flow {
2828

2929
case let.recruitmentDetailIsRequired(id):
3030
return navigateToRecruimtentDetail(recruitmentID: id)
31+
32+
case let .interviewReviewDetailIsRequired(id, name):
33+
return navigateToInterviewReviewDetail(id, name)
3134
}
3235
}
3336
}
@@ -62,4 +65,22 @@ private extension CompanyDetailFlow {
6265
withNextStepper: OneStepper(withSingleStep: RecruitmentDetailStep.recruitmentDetailIsRequired)
6366
))
6467
}
68+
69+
func navigateToInterviewReviewDetail(_ id: Int, _ name: String) -> FlowContributors {
70+
let interviewReviewDetailFlow = InterviewReviewDetailFlow(container: container)
71+
72+
Flows.use(interviewReviewDetailFlow, when: .created) { (root) in
73+
let view = root as? InterviewReviewDetailViewController
74+
view?.viewModel.reviewId = id
75+
view?.viewModel.writerName = name
76+
self.rootViewController.navigationController?.pushViewController(
77+
view!, animated: true
78+
)
79+
}
80+
81+
return .one(flowContributor: .contribute(
82+
withNextPresentable: interviewReviewDetailFlow,
83+
withNextStepper: OneStepper(withSingleStep: InterviewReviewDetailStep.interviewReviewDetailIsRequired)
84+
))
85+
}
6586
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import UIKit
2+
import Presentation
3+
import Swinject
4+
import RxFlow
5+
import Core
6+
7+
public final class InterviewReviewDetailFlow: Flow {
8+
public let container: Container
9+
private let rootViewController: InterviewReviewDetailViewController
10+
public var root: Presentable {
11+
return rootViewController
12+
}
13+
14+
public init(container: Container) {
15+
self.container = container
16+
self.rootViewController = container.resolve(InterviewReviewDetailViewController.self)!
17+
}
18+
19+
public func navigate(to step: Step) -> FlowContributors {
20+
guard let step = step as? InterviewReviewDetailStep else { return .none }
21+
22+
switch step {
23+
case .interviewReviewDetailIsRequired:
24+
return navigateToInterviewReviewDetail()
25+
}
26+
}
27+
}
28+
29+
private extension InterviewReviewDetailFlow {
30+
func navigateToInterviewReviewDetail() -> FlowContributors {
31+
return .one(flowContributor: .contribute(
32+
withNextPresentable: rootViewController,
33+
withNextStepper: rootViewController.viewModel
34+
))
35+
}
36+
}

โ€ŽProjects/Flow/Sources/MyPage/MyPageFlow.swiftโ€Ž

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ public final class MyPageFlow: Flow {
2525
case .tabsIsRequired:
2626
return .end(forwardToParentFlowWithStep: TabsStep.appIsRequired)
2727

28+
case let .writableReviewIsRequired(id):
29+
return navigateToWritableReview(id)
30+
2831
case .noticeIsRequired:
2932
return navigateToNotice()
3033

@@ -49,6 +52,23 @@ private extension MyPageFlow {
4952
))
5053
}
5154

55+
func navigateToWritableReview(_ id: Int) -> FlowContributors {
56+
let writableReviewFlow = WritableReviewFlow(container: container)
57+
58+
Flows.use(writableReviewFlow, when: .created) { (root) in
59+
let view = root as? WritableReviewViewController
60+
view?.viewModel.companyID = id
61+
self.rootViewController.pushViewController(
62+
view!, animated: true
63+
)
64+
}
65+
66+
return .one(flowContributor: .contribute(
67+
withNextPresentable: writableReviewFlow,
68+
withNextStepper: OneStepper(withSingleStep: WritableReviewStep.writableReviewIsRequired)
69+
))
70+
}
71+
5272
func navigateToNotice() -> FlowContributors {
5373
let noticeFlow = NoticeFlow(container: container)
5474

0 commit comments

Comments
ย (0)