Skip to content

Commit 23e76af

Browse files
committed
✨ [feat] 게시글에 계정 차단하기 추가
- 가리기 -> 차단하기로 문구 수정
1 parent 6d26a07 commit 23e76af

File tree

5 files changed

+48
-32
lines changed

5 files changed

+48
-32
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ private extension PostCoordinator {
103103
coordinator.finishDelegate = self
104104
coordinator.parentCoordinator = self
105105
let bottomSheetViewController = BottomSheetViewController(
106-
style: .custom(290),
106+
style: .custom(383),
107107
contentViewController: coordinator.navigationController
108108
)
109109
coordinator.bottomSheetDelegate = bottomSheetViewController

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ private extension ReportCoordinator {
5858
userManager: DefaultUserManager.shared,
5959
userToken: userToken,
6060
boardToken: boardToken,
61-
reportType: reportPresentType == .userReport ? .userReport : .postReport,
6261
fitftyRepository: DefaultFitftyRepository()
6362
),
6463
reportPresentType: reportPresentType,

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

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,14 @@ final class MyPostBottomSheetView: UIStackView {
3535
return button
3636
}()
3737

38+
private lazy var fourthButton: UIButton = {
39+
let button = UIButton()
40+
button.setTitleColor(CommonAsset.Colors.gray07.color, for: .normal)
41+
button.titleLabel?.font = FitftyFont.appleSDSemiBold(size: 18).font
42+
button.contentHorizontalAlignment = .left
43+
return button
44+
}()
45+
3846
private lazy var seperatorView1: UIView = {
3947
let view = UIView()
4048
view.backgroundColor = CommonAsset.Colors.gray01.color
@@ -47,6 +55,12 @@ final class MyPostBottomSheetView: UIStackView {
4755
return view
4856
}()
4957

58+
private lazy var seperatorView3: UIView = {
59+
let view = UIView()
60+
view.backgroundColor = CommonAsset.Colors.gray01.color
61+
return view
62+
}()
63+
5064
override init(frame: CGRect) {
5165
super.init(frame: frame)
5266
setStackView()
@@ -83,19 +97,22 @@ extension MyPostBottomSheetView {
8397
firstButton.setTitleColor(CommonAsset.Colors.error.color, for: .normal)
8498
firstButton.setTitle("계정 신고", for: .normal)
8599
secondButton.setTitle("게시글 신고", for: .normal)
86-
thirdButton.setTitle("이 게시글 가리기", for: .normal)
87-
addArrangedSubviews(firstButton, seperatorView1, secondButton, seperatorView2, thirdButton)
100+
thirdButton.setTitle("이 게시글 차단하기", for: .normal)
101+
fourthButton.setTitle("이 계정 차단하기", for: .normal)
102+
addArrangedSubviews(firstButton, seperatorView1, secondButton, seperatorView2,
103+
thirdButton, seperatorView3, fourthButton)
88104
NSLayoutConstraint.activate([
89105
seperatorView1.heightAnchor.constraint(equalToConstant: 1),
90-
seperatorView2.heightAnchor.constraint(equalToConstant: 1)
106+
seperatorView2.heightAnchor.constraint(equalToConstant: 1),
107+
seperatorView3.heightAnchor.constraint(equalToConstant: 1)
91108
])
92109
}
93110

94111
func setUpUserProfile() {
95112
firstButton.setTitleColor(CommonAsset.Colors.error.color, for: .normal)
96113
secondButton.setTitleColor(CommonAsset.Colors.gray07.color, for: .normal)
97114
firstButton.setTitle("계정 신고", for: .normal)
98-
secondButton.setTitle("이 계정 가리기", for: .normal)
115+
secondButton.setTitle("이 계정 차단하기", for: .normal)
99116
setConstraintsLayout()
100117
}
101118

@@ -111,4 +128,8 @@ extension MyPostBottomSheetView {
111128
thirdButton.addTarget(target, action: action, for: .touchUpInside)
112129
}
113130

131+
func setActionFourthButton( _ target: Any?, action: Selector) {
132+
fourthButton.addTarget(target, action: action, for: .touchUpInside)
133+
}
134+
114135
}

Fitfty/Projects/Profile/Sources/Report/ViewControllers/ReportViewController.swift

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,8 @@ final public class ReportViewController: UIViewController {
7474
case .errorMessage(let message):
7575
self?.showAlert(message: message)
7676

77-
case .completed(let isCompleted):
78-
guard isCompleted else {
79-
return
80-
}
81-
let message = self?.reportPresentType == .userReport ? "계정" : "게시글"
77+
case .completed(let reportType):
78+
let message = reportType == .userReport ? "계정" : "게시글"
8279
let alert = UIAlertController(title: "", message: "\(message) 가리기를 완료했어요.", preferredStyle: .alert)
8380
alert.addAction(UIAlertAction(title: "메인 화면으로 돌아가기", style: .default, handler: { _ in
8481
self?.coordinator.popToRoot()
@@ -100,13 +97,14 @@ final public class ReportViewController: UIViewController {
10097
case .userReport:
10198
myPostBottomSheetView.setUpUserProfile()
10299
myPostBottomSheetView.setActionFirstButton(self, action: #selector(didTapUserReportButton))
103-
myPostBottomSheetView.setActionSecondButton(self, action: #selector(didTapBlockButton))
100+
myPostBottomSheetView.setActionSecondButton(self, action: #selector(didTapUserBlockButton))
104101

105102
case .postUserReport:
106103
myPostBottomSheetView.setUpUserPost()
107104
myPostBottomSheetView.setActionFirstButton(self, action: #selector(didTapUserReportButton))
108105
myPostBottomSheetView.setActionSecondButton(self, action: #selector(didTapPostReportButton))
109-
myPostBottomSheetView.setActionThirdButton(self, action: #selector(didTapBlockButton))
106+
myPostBottomSheetView.setActionThirdButton(self, action: #selector(didTapPostBlockButton))
107+
myPostBottomSheetView.setActionFourthButton(self, action: #selector(didTapUserBlockButton))
110108
}
111109

112110
}
@@ -119,8 +117,12 @@ final public class ReportViewController: UIViewController {
119117
coordinator.showDetailReport(.postReport, userToken: userToken, boardToken: boardToken)
120118
}
121119

122-
@objc func didTapBlockButton(_ sender: Any?) {
123-
viewModel.input.didTapBlockButton()
120+
@objc func didTapUserBlockButton(_ sender: Any?) {
121+
viewModel.input.didTapBlockButton(.userReport)
122+
}
123+
124+
@objc func didTapPostBlockButton(_ sender: Any?) {
125+
viewModel.input.didTapBlockButton(.postReport)
124126
}
125127

126128
}

Fitfty/Projects/Profile/Sources/Report/ViewModel/ReportViewModel.swift

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import Core
1414
protocol ReportViewModelInput {
1515

1616
var input: ReportViewModelInput { get }
17-
func didTapBlockButton()
17+
func didTapBlockButton(_ reportType: ReportType)
1818
}
1919

2020
public final class ReportViewModel {
@@ -24,20 +24,17 @@ public final class ReportViewModel {
2424
private var userManager: UserManager
2525
private var userToken: String?
2626
private var boardToken: String?
27-
private var reportType: ReportType
2827
private var fitftyRepository: FitftyRepository
2928

3029
public init(
3130
userManager: UserManager,
3231
userToken: String?,
3332
boardToken: String?,
34-
reportType: ReportType,
3533
fitftyRepository: FitftyRepository
3634
) {
3735
self.userManager = userManager
3836
self.userToken = userToken
3937
self.boardToken = boardToken
40-
self.reportType = reportType
4138
self.fitftyRepository = fitftyRepository
4239
}
4340

@@ -47,11 +44,11 @@ extension ReportViewModel: ReportViewModelInput {
4744

4845
var input: ReportViewModelInput { self }
4946

50-
func didTapBlockButton() {
47+
func didTapBlockButton(_ reportType: ReportType) {
5148
if userManager.getCurrentGuestState() {
5249
currentState.send(.errorMessage("로그인이 필요합니다."))
5350
} else {
54-
report()
51+
report(reportType)
5552
}
5653
}
5754

@@ -61,7 +58,7 @@ extension ReportViewModel: ViewModelType {
6158

6259
public enum ViewModelState {
6360
case errorMessage(String)
64-
case completed(Bool)
61+
case completed(ReportType)
6562
}
6663

6764
public var state: AnyPublisher<ViewModelState, Never> { currentState.compactMap { $0 }.eraseToAnyPublisher() }
@@ -70,11 +67,8 @@ extension ReportViewModel: ViewModelType {
7067

7168
private extension ReportViewModel {
7269

73-
func report() {
74-
Task { [weak self] in
75-
guard let self = self else {
76-
return
77-
}
70+
func report(_ reportType: ReportType) {
71+
Task {
7872
do {
7973
switch reportType {
8074
case .postReport:
@@ -85,11 +79,11 @@ private extension ReportViewModel {
8579
reportedBoardToken: boardToken,
8680
type: ["INSULT"]
8781
)
88-
let response = try await self.fitftyRepository.report(request)
82+
let response = try await fitftyRepository.report(request)
8983
guard response.result == "SUCCESS" else {
9084
return
9185
}
92-
self.currentState.send(.completed(true))
86+
currentState.send(.completed(.postReport))
9387

9488
case .userReport:
9589
guard let userToken = userToken else {
@@ -99,16 +93,16 @@ private extension ReportViewModel {
9993
reportedUserToken: userToken,
10094
type: ["INSULT"]
10195
)
102-
let response = try await self.fitftyRepository.report(request)
96+
let response = try await fitftyRepository.report(request)
10397
guard response.result == "SUCCESS" else {
10498
return
10599
}
106-
self.currentState.send(.completed(true))
100+
currentState.send(.completed(.userReport))
107101
}
108102

109103
} catch {
110104
Logger.debug(error: error, message: "신고하기 실패")
111-
self.currentState.send(.errorMessage("신고에 알 수 없는 에러가 발생했습니다."))
105+
currentState.send(.errorMessage("신고에 알 수 없는 에러가 발생했습니다."))
112106
}
113107
}
114108
}

0 commit comments

Comments
 (0)