Skip to content

Commit 9cf4d15

Browse files
authored
[Feature] 게시글에서 계정 신고 추가 (#45)
2 parents aa54abe + f142133 commit 9cf4d15

17 files changed

+185
-118
lines changed

Fitfty/Projects/Common/Sources/ReportType.swift renamed to Fitfty/Projects/Common/Sources/ReportPresentType.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@
88

99
import Foundation
1010

11+
public enum ReportPresentType {
12+
case userReport
13+
case postUserReport
14+
}
15+
1116
public enum ReportType {
1217
case userReport
1318
case postReport

Fitfty/Projects/Coordinator/Sources/Profile/DetailReportCoordinator.swift

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ import Core
1515
final class DetailReportCoordinator: Coordinator {
1616

1717
var type: CoordinatorType { .detailReport }
18-
var reportedToken: String
18+
var userToken: String?
19+
var boardToken: String?
1920
var reportType: ReportType
2021

2122
weak var finishDelegate: CoordinatorFinishDelegate?
@@ -27,11 +28,13 @@ final class DetailReportCoordinator: Coordinator {
2728

2829
init(
2930
navigationController: BaseNavigationController = BaseNavigationController(),
30-
reportedToken: String,
31-
reportType: ReportType
31+
reportType: ReportType,
32+
boardToken: String?,
33+
userToken: String?
3234
) {
3335
self.navigationController = navigationController
34-
self.reportedToken = reportedToken
36+
self.userToken = userToken
37+
self.boardToken = boardToken
3538
self.reportType = reportType
3639
}
3740

@@ -49,7 +52,8 @@ private extension DetailReportCoordinator {
4952
coordinator: self,
5053
viewModel: DetailReportViewModel(
5154
userManager: DefaultUserManager.shared,
52-
reportedToken: reportedToken,
55+
userToken: userToken,
56+
boardToken: boardToken,
5357
reportType: reportType,
5458
fitftyRepository: DefaultFitftyRepository()
5559
)

Fitfty/Projects/Coordinator/Sources/Profile/PostCoordinator.swift

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,18 +91,19 @@ private extension PostCoordinator {
9191
return coordinator
9292
}
9393

94-
func makeReportViewController(reportedToken: String) -> UIViewController {
94+
func makeReportViewController(userToken: String, boardToken: String) -> UIViewController {
9595
let coordinator = ReportCoordinator(
96-
reportType: .postReport,
97-
reportedToken: reportedToken
96+
reportPresentType: .postUserReport,
97+
boardToken: boardToken,
98+
userToken: userToken
9899
)
99100
coordinator.parentCoordinator = self
100101
childCoordinators.append(coordinator)
101102
coordinator.start()
102103
coordinator.finishDelegate = self
103104
coordinator.parentCoordinator = self
104105
let bottomSheetViewController = BottomSheetViewController(
105-
style: .small,
106+
style: .custom(196),
106107
contentViewController: coordinator.navigationController
107108
)
108109
coordinator.bottomSheetDelegate = bottomSheetViewController
@@ -132,8 +133,8 @@ extension PostCoordinator: PostCoordinatorInterface {
132133
navigationController.present(coordinator.navigationController, animated: true)
133134
}
134135

135-
func showReport(reportedToken: String) {
136-
let viewController = makeReportViewController(reportedToken: reportedToken)
136+
func showReport(userToken: String, boardToken: String) {
137+
let viewController = makeReportViewController(userToken: userToken, boardToken: boardToken)
137138
viewController.modalPresentationStyle = .overFullScreen
138139
navigationController.present(viewController, animated: false)
139140
}

Fitfty/Projects/Coordinator/Sources/Profile/ProfileCoordinator.swift

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,7 @@ private extension ProfileCoordinator {
8989
}
9090

9191
func makeReportViewController(reportedToken: String) -> UIViewController {
92-
let coordinator = ReportCoordinator(
93-
reportType: .userReport,
94-
reportedToken: reportedToken
95-
)
92+
let coordinator = ReportCoordinator(reportPresentType: .userReport, boardToken: nil, userToken: reportedToken)
9693
coordinator.parentCoordinator = self
9794
childCoordinators.append(coordinator)
9895
coordinator.start()

Fitfty/Projects/Coordinator/Sources/Profile/ReportCoordinator.swift

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@ import Common
1414
final class ReportCoordinator: Coordinator {
1515

1616
var type: CoordinatorType { .report }
17-
var reportType: ReportType
18-
var reportedToken: String
17+
var reportPresentType: ReportPresentType
18+
var userToken: String?
19+
var boardToken: String?
1920

2021
weak var finishDelegate: CoordinatorFinishDelegate?
2122
weak var bottomSheetDelegate: BottomSheetViewControllerDelegate?
@@ -26,33 +27,41 @@ final class ReportCoordinator: Coordinator {
2627

2728
init(
2829
navigationController: BaseNavigationController = BaseNavigationController(),
29-
reportType: ReportType,
30-
reportedToken: String
30+
reportPresentType: ReportPresentType,
31+
boardToken: String?,
32+
userToken: String?
3133
) {
3234
self.navigationController = navigationController
33-
self.reportType = reportType
34-
self.reportedToken = reportedToken
35+
self.reportPresentType = reportPresentType
36+
self.userToken = userToken
37+
self.boardToken = boardToken
3538
}
3639

3740
func start() {
38-
let viewController = makeReportViewController(reportType: reportType)
41+
let viewController = makeReportViewController(
42+
reportPresentType: reportPresentType,
43+
userToken: userToken,
44+
boardToken: boardToken
45+
)
3946
navigationController.pushViewController(viewController, animated: true)
4047
navigationController.setNavigationBarHidden(true, animated: false)
4148
}
4249
}
4350

4451
private extension ReportCoordinator {
4552

46-
func makeReportViewController(reportType: ReportType) -> UIViewController {
53+
func makeReportViewController(reportPresentType: ReportPresentType, userToken: String?, boardToken: String?) -> UIViewController {
4754
let viewController = ReportViewController(
4855
coordinator: self,
49-
reportType: reportType
56+
reportPresentType: reportPresentType,
57+
userToken: userToken,
58+
boardToken: boardToken
5059
)
5160
return viewController
5261
}
5362

54-
func makeDetailReportViewController() -> UIViewController {
55-
let coordinator = DetailReportCoordinator(reportedToken: reportedToken, reportType: reportType)
63+
func makeDetailReportViewController(reportType: ReportType, userToken: String?, boardToken: String?) -> UIViewController {
64+
let coordinator = DetailReportCoordinator(reportType: reportType, boardToken: boardToken, userToken: userToken)
5665
coordinator.parentCoordinator = self
5766
childCoordinators.append(coordinator)
5867
coordinator.start()
@@ -70,8 +79,8 @@ private extension ReportCoordinator {
7079

7180
extension ReportCoordinator: ReportCoordinatorInterface {
7281

73-
func showDetailReport() {
74-
let viewController = makeDetailReportViewController()
82+
func showDetailReport(_ reportType: ReportType, userToken: String?, boardToken: String?) {
83+
let viewController = makeDetailReportViewController(reportType: reportType, userToken: userToken, boardToken: boardToken)
7584
viewController.modalPresentationStyle = .overFullScreen
7685
navigationController.present(viewController, animated: false)
7786
}

Fitfty/Projects/Profile/Sources/CoordinatorInterfaces/PostCoordinatorInterface.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public protocol PostCoordinatorInterface: AnyObject {
1414
func showProfile(profileType: ProfileType, nickname: String)
1515
func showBottomSheet(boardToken: String, filepath: String)
1616
func showModifyMyFitfty(boardToken: String)
17-
func showReport(reportedToken: String)
17+
func showReport(userToken: String, boardToken: String)
1818
func dismiss()
1919
func popToRoot()
2020
func finished()

Fitfty/Projects/Profile/Sources/CoordinatorInterfaces/ReportCoordinatorInterface.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@
77
//
88

99
import Foundation
10+
import Common
1011

1112
public protocol ReportCoordinatorInterface: AnyObject {
1213

13-
func showDetailReport()
14+
func showDetailReport(_ reportType: ReportType, userToken: String?, boardToken: String?)
1415
func dismiss()
1516

1617
}

Fitfty/Projects/Profile/Sources/Post/ViewControllers/MyPostBottomSheetViewController.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ final public class MyPostBottomSheetViewController: UIViewController {
5656

5757
private func setUp() {
5858
bind()
59+
myPostBottomSheetView.setUpMyPost()
5960
setConstratintsLayout()
6061
setButtonAction()
6162
}
@@ -107,8 +108,8 @@ private extension MyPostBottomSheetViewController {
107108
}
108109

109110
func setButtonAction() {
110-
myPostBottomSheetView.setActionDeleteButton(self, action: #selector(didTapDeleteButton))
111-
myPostBottomSheetView.setActionModifyButton(self, action: #selector(didTapModifyButton))
111+
myPostBottomSheetView.setActionSecondButton(self, action: #selector(didTapDeleteButton))
112+
myPostBottomSheetView.setActionFirstButton(self, action: #selector(didTapModifyButton))
112113
}
113114

114115
}

Fitfty/Projects/Profile/Sources/Post/ViewControllers/PostViewController.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ final public class PostViewController: UIViewController {
1818
private var cancellables: Set<AnyCancellable> = .init()
1919
private var viewModel: PostViewModel
2020
private var boardToken: String
21+
private var userToken: String?
2122
private var filepath: String?
2223

2324
private let postView = PostView()
@@ -137,6 +138,7 @@ final public class PostViewController: UIViewController {
137138
)
138139
self.nickname = data.nickname
139140
self.filepath = data.filePath
141+
self.userToken = data.userToken
140142
}
141143

142144
private func setNavigationBar() {
@@ -205,7 +207,10 @@ final public class PostViewController: UIViewController {
205207
case .myProfile:
206208
coordinator.showBottomSheet(boardToken: boardToken, filepath: filepath)
207209
case .userProfile:
208-
coordinator.showReport(reportedToken: boardToken)
210+
guard let userToken = userToken else {
211+
return
212+
}
213+
coordinator.showReport(userToken: userToken, boardToken: boardToken)
209214
}
210215

211216
}

Fitfty/Projects/Profile/Sources/Post/Views/MyPostBottomSheetView.swift

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,16 @@ import Common
1111

1212
final class MyPostBottomSheetView: UIStackView {
1313

14-
private lazy var modifyButton: UIButton = {
14+
private lazy var firstButton: UIButton = {
1515
let button = UIButton()
16-
button.setTitle("게시물 수정", for: .normal)
1716
button.setTitleColor(CommonAsset.Colors.gray07.color, for: .normal)
1817
button.titleLabel?.font = FitftyFont.appleSDSemiBold(size: 18).font
1918
button.contentHorizontalAlignment = .left
2019
return button
2120
}()
2221

23-
private lazy var deleteButton: UIButton = {
22+
private lazy var secondButton: UIButton = {
2423
let button = UIButton()
25-
button.setTitle("게시물 삭제", for: .normal)
2624
button.setTitleColor(CommonAsset.Colors.error.color, for: .normal)
2725
button.titleLabel?.font = FitftyFont.appleSDSemiBold(size: 18).font
2826
button.contentHorizontalAlignment = .left
@@ -48,7 +46,7 @@ final class MyPostBottomSheetView: UIStackView {
4846
self.axis = .vertical
4947
self.distribution = .fill
5048
self.spacing = 24
51-
addArrangedSubviews(modifyButton, seperatorView, deleteButton)
49+
addArrangedSubviews(firstButton, seperatorView, secondButton)
5250
NSLayoutConstraint.activate([
5351
seperatorView.heightAnchor.constraint(equalToConstant: 1)
5452
])
@@ -57,12 +55,24 @@ final class MyPostBottomSheetView: UIStackView {
5755

5856
extension MyPostBottomSheetView {
5957

60-
func setActionModifyButton(_ target: Any?, action: Selector) {
61-
modifyButton.addTarget(target, action: action, for: .touchUpInside)
58+
func setUpMyPost() {
59+
firstButton.setTitle("게시글 수정", for: .normal)
60+
secondButton.setTitle("게시글 삭제", for: .normal)
6261
}
6362

64-
func setActionDeleteButton( _ target: Any?, action: Selector) {
65-
deleteButton.addTarget(target, action: action, for: .touchUpInside)
63+
func setUpUserPost() {
64+
firstButton.setTitleColor(CommonAsset.Colors.error.color, for: .normal)
65+
firstButton.setTitle("계정 신고", for: .normal)
66+
secondButton.setTitle("게시글 신고", for: .normal)
67+
}
68+
69+
func setActionFirstButton(_ target: Any?, action: Selector) {
70+
firstButton.addTarget(target, action: action, for: .touchUpInside)
71+
}
72+
73+
func setActionSecondButton( _ target: Any?, action: Selector) {
74+
secondButton.addTarget(target, action: action, for: .touchUpInside)
6675
}
6776

6877
}
78+

0 commit comments

Comments
 (0)