Skip to content

Commit f564c5f

Browse files
authored
Merge pull request #266 from Runnect/#263
[Feat] #263 - 보관함 페이지 간헐적 버그 수정 및 리팩토링
2 parents 699deae + 24057be commit f564c5f

4 files changed

Lines changed: 57 additions & 82 deletions

File tree

Runnect-iOS/Runnect-iOS/Global/UIComponents/CustomBottomSheetVC.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ final class CustomBottomSheetVC: UIViewController {
2323

2424
var backgroundTapAction: (() -> Void)?
2525
var completeButtonTapAction: ((String) -> Void)?
26+
var courseName: String?
2627

2728
private let titleNameMaxLength = 20
2829
private let bottomHeight: CGFloat = 206
@@ -142,6 +143,12 @@ extension CustomBottomSheetVC {
142143
backgroundView.snp.makeConstraints {
143144
$0.edges.equalToSuperview()
144145
}
146+
147+
if let courseName = self.courseName {
148+
self.bottomSheetTextField.text = courseName
149+
self.completeButton.isEnabled = true
150+
self.changeTextFieldLayerColor(true)
151+
}
145152
}
146153

147154
private func setLayout(_ type: SheetType) {

Runnect-iOS/Runnect-iOS/Network/Service/Providers.swift

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,17 @@ struct Providers {
2020
static let stampProvider = MoyaProvider<StampRouter>(withAuth: true)
2121
}
2222

23+
struct Provider {
24+
static let departureSearchingProvider = NetworkProvider<DepartureSearchingRouter>(withAuth: false)
25+
static let authProvider = NetworkProvider<AuthRouter>(withAuth: true)
26+
static let userProvider = NetworkProvider<UserRouter>(withAuth: true)
27+
static let courseProvider = NetworkProvider<CourseRouter>(withAuth: true)
28+
static let publicCourseProvider = NetworkProvider<PublicCourseRouter>(withAuth: true)
29+
static let recordProvider = NetworkProvider<RecordRouter>(withAuth: true)
30+
static let scrapProvider = NetworkProvider<ScrapRouter>(withAuth: true)
31+
static let stampProvider = NetworkProvider<StampRouter>(withAuth: true)
32+
}
33+
2334
extension MoyaProvider {
2435
convenience init(withAuth: Bool) {
2536
if withAuth {

Runnect-iOS/Runnect-iOS/Presentation/CourseStorage/VC/CourseStorageVC.swift

Lines changed: 37 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ import Then
1515
final class CourseStorageVC: UIViewController {
1616

1717
// MARK: - Properties
18-
private let courseProvider = Providers.courseProvider
18+
private let courseProvider = Provider.courseProvider
1919

20-
private let scrapProvider = Providers.scrapProvider
20+
private let scrapProvider = Provider.scrapProvider
2121

2222
private let cancelBag = CancelBag()
2323

@@ -270,105 +270,61 @@ extension CourseStorageVC: PrivateCourseListViewDelegate {
270270
extension CourseStorageVC {
271271
private func getPrivateCourseList() {
272272
LoadingIndicator.showLoading()
273-
courseProvider.request(.getAllPrivateCourse) { [weak self] response in
274-
guard let self = self else { return }
273+
274+
courseProvider.request(
275+
target: .getAllPrivateCourse,
276+
instance: BaseResponse<PrivateCourseResponseDto>.self,
277+
vc: self
278+
) { response in
275279
LoadingIndicator.hideLoading()
276-
switch response {
277-
case .success(let result):
278-
let status = result.statusCode
279-
if 200..<300 ~= status {
280-
do {
281-
let responseDto = try result.map(BaseResponse<PrivateCourseResponseDto>.self)
282-
guard let data = responseDto.data else { return }
283-
self.setPrivateCourseData(courseList: data.courses)
284-
} catch {
285-
print(error.localizedDescription)
286-
}
287-
}
288-
if status >= 400 {
289-
print("400 error")
290-
self.showNetworkFailureToast()
291-
}
292-
case .failure(let error):
293-
print(error.localizedDescription)
294-
self.showNetworkFailureToast()
295-
}
280+
281+
guard let data = response.data else { return }
282+
self.setPrivateCourseData(courseList: data.courses)
296283
}
297284
}
298285

299286
private func getScrapCourseList() {
300287
LoadingIndicator.showLoading()
301-
scrapProvider.request(.getScrapCourse) { [weak self] response in
302-
guard let self = self else { return }
288+
289+
scrapProvider.request(
290+
target: .getScrapCourse,
291+
instance: BaseResponse<ScrapCourseResponseDto>.self,
292+
vc: self
293+
) { response in
303294
LoadingIndicator.hideLoading()
304-
switch response {
305-
case .success(let result):
306-
let status = result.statusCode
307-
if 200..<300 ~= status {
308-
do {
309-
let responseDto = try result.map(BaseResponse<ScrapCourseResponseDto>.self)
310-
guard let data = responseDto.data else { return }
311-
self.setScrapCourseData(courseList: data.scraps)
312-
} catch {
313-
print(error.localizedDescription)
314-
}
315-
}
316-
if status >= 400 {
317-
print("400 error")
318-
self.showNetworkFailureToast()
319-
}
320-
case .failure(let error):
321-
print(error.localizedDescription)
322-
self.showNetworkFailureToast()
323-
}
295+
296+
guard let data = response.data else { return }
297+
self.setScrapCourseData(courseList: data.scraps)
324298
}
325299
}
326300

327301
private func scrapCourse(publicCourseId: Int, scrapTF: Bool) {
328302
LoadingIndicator.showLoading()
329-
scrapProvider.request(.createAndDeleteScrap(publicCourseId: publicCourseId, scrapTF: scrapTF)) { [weak self] response in
303+
304+
scrapProvider.request(
305+
target: .createAndDeleteScrap(publicCourseId: publicCourseId, scrapTF: scrapTF),
306+
instance: BaseResponse<BlankData>.self,
307+
vc: self
308+
) { response in
330309
LoadingIndicator.hideLoading()
331-
guard let self = self else { return }
332-
switch response {
333-
case .success(let result):
334-
let status = result.statusCode
335-
if 200..<300 ~= status {
336-
self.getScrapCourseList()
337-
}
338-
if status >= 400 {
339-
print("400 error")
340-
self.showNetworkFailureToast()
341-
}
342-
case .failure(let error):
343-
print(error.localizedDescription)
344-
self.showNetworkFailureToast()
345-
}
310+
311+
self.getScrapCourseList()
346312
}
347313
}
348314

349315
private func deleteCourse(courseIdList: [Int]) {
350316
LoadingIndicator.showLoading()
351-
courseProvider.request(.deleteCourse(courseIdList: courseIdList)) { [weak self] response in
317+
318+
courseProvider.request(
319+
target: .deleteCourse(courseIdList: courseIdList),
320+
instance: BaseResponse<BlankData>.self,
321+
vc: self
322+
) { response in
352323
LoadingIndicator.hideLoading()
353-
guard let self = self else { return }
324+
354325
self.privateCourseListView.isEditMode = false
355-
switch response {
356-
case .success(let result):
357-
print("리절트", result)
358-
let status = result.statusCode
359-
if 200..<300 ~= status {
360-
print("삭제 성공")
361-
self.getPrivateCourseList()
362-
self.finishEditMode(withDuration: 0.7)
363-
}
364-
if status >= 400 {
365-
print("400 error")
366-
self.showNetworkFailureToast()
367-
}
368-
case .failure(let error):
369-
print(error.localizedDescription)
370-
self.showNetworkFailureToast()
371-
}
326+
self.getPrivateCourseList()
327+
self.finishEditMode(withDuration: 0.7)
372328
}
373329
}
374330
}

Runnect-iOS/Runnect-iOS/Presentation/Running/VC/RunningWaitingVC.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,7 @@ extension RunningWaitingVC {
316316
let status = result.statusCode
317317
if 200..<300 ~= status {
318318
print("삭제 성공")
319+
self.navigationController?.popViewController(animated: true)
319320
}
320321
if status >= 400 {
321322
print("400 error")
@@ -377,7 +378,6 @@ extension RunningWaitingVC {
377378
deleteAlertVC.rightButtonTapAction = {
378379
deleteAlertVC.dismiss(animated: false)
379380
self.deleteCourse()
380-
self.navigationController?.popViewController(animated: true)
381381
}
382382
self.present(deleteAlertVC, animated: false)
383383
default:
@@ -389,6 +389,7 @@ extension RunningWaitingVC {
389389
private func ModifyCourseTitle() {
390390
let bottomSheetVC = CustomBottomSheetVC(type: .textField)
391391
bottomSheetVC.modalPresentationStyle = .overFullScreen
392+
bottomSheetVC.courseName = self.courseTitle
392393
bottomSheetVC.completeButtonTapAction = { [weak self] text in
393394
guard let self = self else { return }
394395
guard handleVisitor() else { return }

0 commit comments

Comments
 (0)