From 647049365585db181f98672f7a6c01706d818b06 Mon Sep 17 00:00:00 2001 From: SojinLee <513sojin@naver.com> Date: Thu, 21 Mar 2024 20:58:33 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[Fix]=20#263=20-=20popVC=20=EC=88=9C?= =?UTF-8?q?=EC=84=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Runnect-iOS/Presentation/Running/VC/RunningWaitingVC.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Runnect-iOS/Runnect-iOS/Presentation/Running/VC/RunningWaitingVC.swift b/Runnect-iOS/Runnect-iOS/Presentation/Running/VC/RunningWaitingVC.swift index 5e63c1e..1c9160c 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: From 8cf1af46cf78841e5781ce12b23c521272c3efb5 Mon Sep 17 00:00:00 2001 From: SojinLee <513sojin@naver.com> Date: Thu, 21 Mar 2024 21:18:26 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[Feat]=20#263=20-=20=EC=BD=94=EC=8A=A4=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EC=88=98=EC=A0=95=20=EC=8B=9C=20=EC=9D=B4?= =?UTF-8?q?=EB=A6=84=20=EB=9C=A8=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Global/UIComponents/CustomBottomSheetVC.swift | 7 +++++++ .../Presentation/Running/VC/RunningWaitingVC.swift | 1 + 2 files changed, 8 insertions(+) diff --git a/Runnect-iOS/Runnect-iOS/Global/UIComponents/CustomBottomSheetVC.swift b/Runnect-iOS/Runnect-iOS/Global/UIComponents/CustomBottomSheetVC.swift index 413ab72..fa03c8f 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/Presentation/Running/VC/RunningWaitingVC.swift b/Runnect-iOS/Runnect-iOS/Presentation/Running/VC/RunningWaitingVC.swift index 1c9160c..0a07f6d 100644 --- a/Runnect-iOS/Runnect-iOS/Presentation/Running/VC/RunningWaitingVC.swift +++ b/Runnect-iOS/Runnect-iOS/Presentation/Running/VC/RunningWaitingVC.swift @@ -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 } From 11a6c4da04a55afc9e3086588da6ad55f83d6a1e Mon Sep 17 00:00:00 2001 From: SojinLee <513sojin@naver.com> Date: Thu, 21 Mar 2024 21:47:22 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[Refactor]=20#263=20-=20=EB=B3=B4=EA=B4=80?= =?UTF-8?q?=ED=95=A8=20=EC=84=9C=EB=B2=84=20=ED=86=B5=EC=8B=A0=20=ED=95=A8?= =?UTF-8?q?=EC=88=98=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Network/Service/Providers.swift | 11 ++ .../CourseStorage/VC/CourseStorageVC.swift | 102 ++++-------------- 2 files changed, 32 insertions(+), 81 deletions(-) diff --git a/Runnect-iOS/Runnect-iOS/Network/Service/Providers.swift b/Runnect-iOS/Runnect-iOS/Network/Service/Providers.swift index c8ca988..bf6a3ae 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 48daf27..31aebb7 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,45 @@ 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) } } } From 24057be04e2796559b3545af2587ae8c0dcda1b6 Mon Sep 17 00:00:00 2001 From: SojinLee <513sojin@naver.com> Date: Sun, 24 Mar 2024 23:58:49 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[Refactor]=20#263=20-=20=EC=84=9C=EB=B2=84?= =?UTF-8?q?=20=ED=86=B5=EC=8B=A0=20=ED=95=A8=EC=88=98=20=EC=A4=84=EB=82=98?= =?UTF-8?q?=EB=88=94=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CourseStorage/VC/CourseStorageVC.swift | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/Runnect-iOS/Runnect-iOS/Presentation/CourseStorage/VC/CourseStorageVC.swift b/Runnect-iOS/Runnect-iOS/Presentation/CourseStorage/VC/CourseStorageVC.swift index 31aebb7..240ccfe 100644 --- a/Runnect-iOS/Runnect-iOS/Presentation/CourseStorage/VC/CourseStorageVC.swift +++ b/Runnect-iOS/Runnect-iOS/Presentation/CourseStorage/VC/CourseStorageVC.swift @@ -271,7 +271,11 @@ extension CourseStorageVC { private func getPrivateCourseList() { LoadingIndicator.showLoading() - courseProvider.request(target: .getAllPrivateCourse, instance: BaseResponse.self, vc: self) { response in + courseProvider.request( + target: .getAllPrivateCourse, + instance: BaseResponse.self, + vc: self + ) { response in LoadingIndicator.hideLoading() guard let data = response.data else { return } @@ -282,7 +286,11 @@ extension CourseStorageVC { private func getScrapCourseList() { LoadingIndicator.showLoading() - scrapProvider.request(target: .getScrapCourse, instance: BaseResponse.self, vc: self) { response in + scrapProvider.request( + target: .getScrapCourse, + instance: BaseResponse.self, + vc: self + ) { response in LoadingIndicator.hideLoading() guard let data = response.data else { return } @@ -293,7 +301,11 @@ extension CourseStorageVC { private func scrapCourse(publicCourseId: Int, scrapTF: Bool) { LoadingIndicator.showLoading() - scrapProvider.request(target: .createAndDeleteScrap(publicCourseId: publicCourseId, scrapTF: scrapTF), instance: BaseResponse.self, vc: self) { response in + scrapProvider.request( + target: .createAndDeleteScrap(publicCourseId: publicCourseId, scrapTF: scrapTF), + instance: BaseResponse.self, + vc: self + ) { response in LoadingIndicator.hideLoading() self.getScrapCourseList() @@ -303,7 +315,11 @@ extension CourseStorageVC { private func deleteCourse(courseIdList: [Int]) { LoadingIndicator.showLoading() - courseProvider.request(target: .deleteCourse(courseIdList: courseIdList), instance: BaseResponse.self, vc: self) { response in + courseProvider.request( + target: .deleteCourse(courseIdList: courseIdList), + instance: BaseResponse.self, + vc: self + ) { response in LoadingIndicator.hideLoading() self.privateCourseListView.isEditMode = false