Skip to content

Commit 57456f8

Browse files
committed
refactor: Date -> String으로 반환해주는 로직 변경
1 parent 4ee2ac6 commit 57456f8

File tree

4 files changed

+26
-52
lines changed

4 files changed

+26
-52
lines changed

Trinap/Sources/Domain/UseCases/Photographer/DefaultConvertDateToStringUseCase.swift

+4-33
Original file line numberDiff line numberDiff line change
@@ -9,42 +9,13 @@
99
import Foundation
1010

1111
final class DefaultConvertDateToStringUseCase: ConvertDateToStringUseCase {
12-
13-
// MARK: UI
14-
15-
// MARK: Properties
16-
17-
// MARK: Initializers
1812

1913
// MARK: Methods
2014
func convert(startDate: Date, endDate: Date) -> String? {
21-
let startSeperated = startDate.toString(type: .yearToSecond).components(separatedBy: " ")
22-
let endSeperated = endDate.toString(type: .yearToSecond).components(separatedBy: " ")
23-
24-
guard let date = startSeperated[safe: 0] else { return nil }
25-
let dateSeperated = date.components(separatedBy: "-")
26-
guard
27-
let month = dateSeperated[safe: 1],
28-
let day = dateSeperated[safe: 2]
29-
else { return nil }
30-
31-
guard
32-
let startTime = startSeperated.last,
33-
let endTime = endSeperated.last
34-
else { return nil }
35-
let startHourToSec = startTime.components(separatedBy: ":")
36-
let endHourToSec = endTime.components(separatedBy: ":")
37-
guard
38-
let startHour = startHourToSec[safe: 0],
39-
let startMin = startHourToSec[safe: 1],
40-
let endHour = endHourToSec[safe: 0],
41-
let endMin = endHourToSec[safe: 1]
42-
else { return nil }
43-
44-
let reservationDate = "\(month)/\(day)"
45-
let reservationStart = "\(startHour):\(startMin)"
46-
let reservationEnd = "\(endHour):\(endMin)"
47-
let dateInfo = "\(reservationDate) \(reservationStart)-\(reservationEnd)\n"
15+
let daate = startDate.toString(type: .monthAndDate2)
16+
let startTime = startDate.toString(type: .hourAndMinute)
17+
let endTime = endDate.toString(type: .hourAndMinute)
18+
let dateInfo = "\(daate) \(startTime)-\(endTime)\n"
4819
return dateInfo
4920
}
5021
}

Trinap/Sources/Presenter/TabBar/Main/PhotographerDetail/PhotographerDetailViewController.swift

+5-14
Original file line numberDiff line numberDiff line change
@@ -148,13 +148,8 @@ class PhotographerDetailViewController: BaseViewController {
148148
.disposed(by: disposeBag)
149149

150150
output.resevationDates
151-
.drive { [weak self] dates in
152-
guard
153-
let start = dates[safe: 0],
154-
let end = dates[safe: 1]
155-
else { return }
156-
157-
self?.configureCalendarButton(startDate: start, endDate: end)
151+
.drive { [weak self] dateString in
152+
self?.configureCalendarButton(dateString: dateString)
158153
}
159154
.disposed(by: disposeBag)
160155
}
@@ -274,18 +269,14 @@ extension PhotographerDetailViewController {
274269

275270
extension PhotographerDetailViewController {
276271

277-
private func configureCalendarButton(startDate: Date, endDate: Date) {
278-
guard let dateInfo = formattingCalendarButtonText(
279-
startDate: startDate,
280-
endDate: endDate
281-
)
282-
else { return }
272+
private func configureCalendarButton(dateString: String) {
273+
if dateString.isEmpty { return }
283274

284275
calendarButton.titleLabel?.numberOfLines = 0
285276
calendarButton.titleLabel?.textAlignment = .left
286277
calendarButton.setTitle(nil, for: .normal)
287278
let buttonText = NSMutableAttributedString()
288-
.bold(string: dateInfo)
279+
.bold(string: dateString)
289280
.regular(string: "날짜 변경하기")
290281
calendarButton.setAttributedTitle(buttonText, for: .normal)
291282
}

Trinap/Sources/Presenter/TabBar/Main/PhotographerDetail/PhotographerDetailViewModel.swift

+16-5
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ final class PhotographerDetailViewModel: ViewModelType {
2121

2222
struct Output {
2323
let confirmButtonEnabled: Driver<Bool>
24-
let resevationDates: Driver<[Date]>
24+
let resevationDates: Driver<String>
2525
let dataSource: Driver<[PhotographerDataSource]>
2626
}
2727

@@ -77,7 +77,6 @@ final class PhotographerDetailViewModel: ViewModelType {
7777

7878
// MARK: - Methods
7979
func transform(input: Input) -> Output {
80-
coordinator?.calendarViewModel.rx.selectedDates
8180

8281
input.viewWillAppear
8382
.map { _ in }
@@ -163,7 +162,15 @@ final class PhotographerDetailViewModel: ViewModelType {
163162
return self.mappingDataSource(isEditable: false, state: section, photographer: photographer, review: review)
164163
}
165164

166-
let reservationDates = self.reservationDate.asDriver(onErrorJustReturn: [])
165+
let reservationDates = self.reservationDate
166+
.asDriver(onErrorJustReturn: [])
167+
.map { [weak self] dates -> String in
168+
guard
169+
let start = dates[safe: 0],
170+
let end = dates[safe: 1]
171+
else { return "" }
172+
return self?.convertDateToStringUseCase.convert(startDate: start, endDate: end) ?? ""
173+
}
167174

168175

169176
return Output(
@@ -294,8 +301,12 @@ extension PhotographerDetailViewModel {
294301
}
295302
}
296303

297-
//TODO: 프록시로 바꿔보기
298-
// 2. 이 이벤트 발생했을 때 캘린더 버튼 string도 같이 전달해주기
304+
extension PhotographerDetailViewModel {
305+
func blockPhotographer() -> Single<Void> {
306+
self.createBlockUseCase.create(blockedUserId: self.userId)
307+
}
308+
}
309+
299310
extension PhotographerDetailViewModel: SelectReservationDateViewModelDelegate {
300311

301312
func selectedReservationDate(startDate: Date, endDate: Date) {

Trinap/Sources/Utils/Date+.swift

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ extension Date {
1616
case timeStamp = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
1717
case hourAndMinute = "HH:mm"
1818
case monthAndDate = "M월 d일"
19+
case monthAndDate2 = "MM/dd"
1920
case yearAndMonthAndDate = "YYYY년 M월 d일"
2021
case yearAndMonth = "YYYY년 M월"
2122
}

0 commit comments

Comments
 (0)