diff --git a/Runnect-iOS/Runnect-iOS/Global/UIComponents/CustomBottomSheetVC.swift b/Runnect-iOS/Runnect-iOS/Global/UIComponents/CustomBottomSheetVC.swift index 413ab729..fa03c8fa 100644 --- a/Runnect-iOS/Runnect-iOS/Global/UIComponents/CustomBottomSheetVC.swift +++ b/Runnect-iOS/Runnect-iOS/Global/UIComponents/CustomBottomSheetVC.swift @@ -23,6 +23,7 @@ final class CustomBottomSheetVC: UIViewController { var backgroundTapAction: (() -> Void)? var completeButtonTapAction: ((String) -> Void)? + var courseName: String? private let titleNameMaxLength = 20 private let bottomHeight: CGFloat = 206 @@ -142,6 +143,12 @@ extension CustomBottomSheetVC { backgroundView.snp.makeConstraints { $0.edges.equalToSuperview() } + + if let courseName = self.courseName { + self.bottomSheetTextField.text = courseName + self.completeButton.isEnabled = true + self.changeTextFieldLayerColor(true) + } } private func setLayout(_ type: SheetType) { diff --git a/Runnect-iOS/Runnect-iOS/Network/Service/Providers.swift b/Runnect-iOS/Runnect-iOS/Network/Service/Providers.swift index c8ca9884..bf6a3aea 100644 --- a/Runnect-iOS/Runnect-iOS/Network/Service/Providers.swift +++ b/Runnect-iOS/Runnect-iOS/Network/Service/Providers.swift @@ -20,6 +20,17 @@ struct Providers { static let stampProvider = MoyaProvider(withAuth: true) } +struct Provider { + static let departureSearchingProvider = NetworkProvider(withAuth: false) + static let authProvider = NetworkProvider(withAuth: true) + static let userProvider = NetworkProvider(withAuth: true) + static let courseProvider = NetworkProvider(withAuth: true) + static let publicCourseProvider = NetworkProvider(withAuth: true) + static let recordProvider = NetworkProvider(withAuth: true) + static let scrapProvider = NetworkProvider(withAuth: true) + static let stampProvider = NetworkProvider(withAuth: true) +} + extension MoyaProvider { convenience init(withAuth: Bool) { if withAuth { diff --git a/Runnect-iOS/Runnect-iOS/Presentation/CourseStorage/VC/CourseStorageVC.swift b/Runnect-iOS/Runnect-iOS/Presentation/CourseStorage/VC/CourseStorageVC.swift index 48daf273..240ccfe7 100644 --- a/Runnect-iOS/Runnect-iOS/Presentation/CourseStorage/VC/CourseStorageVC.swift +++ b/Runnect-iOS/Runnect-iOS/Presentation/CourseStorage/VC/CourseStorageVC.swift @@ -15,9 +15,9 @@ import Then final class CourseStorageVC: UIViewController { // MARK: - Properties - private let courseProvider = Providers.courseProvider + private let courseProvider = Provider.courseProvider - private let scrapProvider = Providers.scrapProvider + private let scrapProvider = Provider.scrapProvider private let cancelBag = CancelBag() @@ -270,105 +270,61 @@ extension CourseStorageVC: PrivateCourseListViewDelegate { extension CourseStorageVC { private func getPrivateCourseList() { LoadingIndicator.showLoading() - courseProvider.request(.getAllPrivateCourse) { [weak self] response in - guard let self = self else { return } + + courseProvider.request( + target: .getAllPrivateCourse, + instance: BaseResponse.self, + vc: self + ) { response in LoadingIndicator.hideLoading() - switch response { - case .success(let result): - let status = result.statusCode - if 200..<300 ~= status { - do { - let responseDto = try result.map(BaseResponse.self) - guard let data = responseDto.data else { return } - self.setPrivateCourseData(courseList: data.courses) - } catch { - print(error.localizedDescription) - } - } - if status >= 400 { - print("400 error") - self.showNetworkFailureToast() - } - case .failure(let error): - print(error.localizedDescription) - self.showNetworkFailureToast() - } + + guard let data = response.data else { return } + self.setPrivateCourseData(courseList: data.courses) } } private func getScrapCourseList() { LoadingIndicator.showLoading() - scrapProvider.request(.getScrapCourse) { [weak self] response in - guard let self = self else { return } + + scrapProvider.request( + target: .getScrapCourse, + instance: BaseResponse.self, + vc: self + ) { response in LoadingIndicator.hideLoading() - switch response { - case .success(let result): - let status = result.statusCode - if 200..<300 ~= status { - do { - let responseDto = try result.map(BaseResponse.self) - guard let data = responseDto.data else { return } - self.setScrapCourseData(courseList: data.scraps) - } catch { - print(error.localizedDescription) - } - } - if status >= 400 { - print("400 error") - self.showNetworkFailureToast() - } - case .failure(let error): - print(error.localizedDescription) - self.showNetworkFailureToast() - } + + guard let data = response.data else { return } + self.setScrapCourseData(courseList: data.scraps) } } private func scrapCourse(publicCourseId: Int, scrapTF: Bool) { LoadingIndicator.showLoading() - scrapProvider.request(.createAndDeleteScrap(publicCourseId: publicCourseId, scrapTF: scrapTF)) { [weak self] response in + + scrapProvider.request( + target: .createAndDeleteScrap(publicCourseId: publicCourseId, scrapTF: scrapTF), + instance: BaseResponse.self, + vc: self + ) { response in LoadingIndicator.hideLoading() - guard let self = self else { return } - switch response { - case .success(let result): - let status = result.statusCode - if 200..<300 ~= status { - self.getScrapCourseList() - } - if status >= 400 { - print("400 error") - self.showNetworkFailureToast() - } - case .failure(let error): - print(error.localizedDescription) - self.showNetworkFailureToast() - } + + self.getScrapCourseList() } } private func deleteCourse(courseIdList: [Int]) { LoadingIndicator.showLoading() - courseProvider.request(.deleteCourse(courseIdList: courseIdList)) { [weak self] response in + + courseProvider.request( + target: .deleteCourse(courseIdList: courseIdList), + instance: BaseResponse.self, + vc: self + ) { response in LoadingIndicator.hideLoading() - guard let self = self else { return } + self.privateCourseListView.isEditMode = false - switch response { - case .success(let result): - print("리절트", result) - let status = result.statusCode - if 200..<300 ~= status { - print("삭제 성공") - self.getPrivateCourseList() - self.finishEditMode(withDuration: 0.7) - } - if status >= 400 { - print("400 error") - self.showNetworkFailureToast() - } - case .failure(let error): - print(error.localizedDescription) - self.showNetworkFailureToast() - } + self.getPrivateCourseList() + self.finishEditMode(withDuration: 0.7) } } } diff --git a/Runnect-iOS/Runnect-iOS/Presentation/Running/VC/RunningWaitingVC.swift b/Runnect-iOS/Runnect-iOS/Presentation/Running/VC/RunningWaitingVC.swift index 5e63c1e4..0a07f6d8 100644 --- a/Runnect-iOS/Runnect-iOS/Presentation/Running/VC/RunningWaitingVC.swift +++ b/Runnect-iOS/Runnect-iOS/Presentation/Running/VC/RunningWaitingVC.swift @@ -316,6 +316,7 @@ extension RunningWaitingVC { let status = result.statusCode if 200..<300 ~= status { print("삭제 성공") + self.navigationController?.popViewController(animated: true) } if status >= 400 { print("400 error") @@ -377,7 +378,6 @@ extension RunningWaitingVC { deleteAlertVC.rightButtonTapAction = { deleteAlertVC.dismiss(animated: false) self.deleteCourse() - self.navigationController?.popViewController(animated: true) } self.present(deleteAlertVC, animated: false) default: @@ -389,6 +389,7 @@ extension RunningWaitingVC { private func ModifyCourseTitle() { let bottomSheetVC = CustomBottomSheetVC(type: .textField) bottomSheetVC.modalPresentationStyle = .overFullScreen + bottomSheetVC.courseName = self.courseTitle bottomSheetVC.completeButtonTapAction = { [weak self] text in guard let self = self else { return } guard handleVisitor() else { return }