From fae44325687d91822423b877a63ea3ed66f4480d Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Mon, 3 Apr 2023 15:46:54 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=ED=8E=98=EC=9D=B4=EC=A7=95=20?= =?UTF-8?q?=EB=AA=85=ED=95=A8=20=EC=A1=B0=ED=9A=8C=EC=99=80=20=EC=A0=84?= =?UTF-8?q?=EC=B2=B4=20=EB=AA=85=ED=95=A8=20=EC=A1=B0=ED=9A=8C=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20(#384)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/NetworkService/Card/CardAPI.swift | 54 +++++++++---------- .../NetworkService/Card/CardService.swift | 20 +++---- 2 files changed, 38 insertions(+), 36 deletions(-) diff --git a/NADA-iOS-forRelease/Sources/NetworkService/Card/CardAPI.swift b/NADA-iOS-forRelease/Sources/NetworkService/Card/CardAPI.swift index 1a32b2d3..a2eee4aa 100644 --- a/NADA-iOS-forRelease/Sources/NetworkService/Card/CardAPI.swift +++ b/NADA-iOS-forRelease/Sources/NetworkService/Card/CardAPI.swift @@ -47,21 +47,22 @@ public class CardAPI { } } - func cardListFetch(userID: String, isList: Bool, offset: Int?, completion: @escaping (NetworkResult) -> Void) { - cardProvider.request(.cardListFetch(userID: userID, isList: isList, offset: offset)) { (result) in - if isList == true { + func cardListFetch(pageNumber: Int? = nil, pageSize: Int? = nil, completion: @escaping (NetworkResult) -> Void) { + if let pageNumber, let pageSize { + cardProvider.request(.cardListPageFetch(pageNumber: pageNumber, pageSize: pageSize)) { result in switch result { case .success(let response): let statusCode = response.statusCode let data = response.data - let networkResult = self.judgeCardListFetchStatus(by: statusCode, data) + let networkResult = self.judgeMainListFetchStatus(by: statusCode, data) completion(networkResult) - case .failure(let err): print(err) } - } else { + } + } else { + cardProvider.request(.cardListFetch) { result in switch result { case .success(let response): let statusCode = response.statusCode @@ -69,7 +70,6 @@ public class CardAPI { let networkResult = self.judgeMainListFetchStatus(by: statusCode, data) completion(networkResult) - case .failure(let err): print(err) } @@ -183,7 +183,7 @@ public class CardAPI { private func judgeMainListFetchStatus(by statusCode: Int, _ data: Data) -> NetworkResult { let decoder = JSONDecoder() - guard let decodedData = try? decoder.decode(GenericResponse.self, from: data) + guard let decodedData = try? decoder.decode(GenericResponse<[Card]>.self, from: data) else { return .pathErr } @@ -200,25 +200,25 @@ public class CardAPI { } } - private func judgeCardListFetchStatus(by statusCode: Int, _ data: Data) -> NetworkResult { - - let decoder = JSONDecoder() - guard let decodedData = try? decoder.decode(GenericResponse.self, from: data) - else { - return .pathErr - } - - switch statusCode { - case 200: - return .success(decodedData.data ?? "None-Data") - case 400..<500: - return .requestErr(decodedData.error?.message ?? "error message") - case 500: - return .serverErr - default: - return .networkFail - } - } +// private func judgeCardListFetchStatus(by statusCode: Int, _ data: Data) -> NetworkResult { +// +// let decoder = JSONDecoder() +// guard let decodedData = try? decoder.decode(GenericResponse.self, from: data) +// else { +// return .pathErr +// } +// +// switch statusCode { +// case 200: +// return .success(decodedData.data ?? "None-Data") +// case 400..<500: +// return .requestErr(decodedData.error?.message ?? "error message") +// case 500: +// return .serverErr +// default: +// return .networkFail +// } +// } private func judgeCardCreationStatus(by statusCode: Int, _ data: Data) -> NetworkResult { diff --git a/NADA-iOS-forRelease/Sources/NetworkService/Card/CardService.swift b/NADA-iOS-forRelease/Sources/NetworkService/Card/CardService.swift index bdcb7d47..e660840c 100644 --- a/NADA-iOS-forRelease/Sources/NetworkService/Card/CardService.swift +++ b/NADA-iOS-forRelease/Sources/NetworkService/Card/CardService.swift @@ -11,7 +11,8 @@ import Moya enum CardService { case cardDetailFetch(cardID: String) case cardCreation(request: CardCreationRequest) - case cardListFetch(userID: String, isList: Bool, offset: Int?) + case cardListPageFetch(pageNumber: Int, pageSize: Int) + case cardListFetch case cardListEdit(request: CardListEditRequest) case cardDelete(cardID: String) case imageUpload(image: UIImage) @@ -30,8 +31,10 @@ extension CardService: TargetType { return "/card/\(cardID)" case .cardCreation: return "/card" + case .cardListPageFetch: + return "/card/page" case .cardListFetch: - return "/cards" + return "/card" case .cardListEdit: return "/cards" case .cardDelete(let cardID): @@ -45,7 +48,7 @@ extension CardService: TargetType { var method: Moya.Method { switch self { - case .cardDetailFetch, .cardListFetch, .tasteFetch: + case .cardDetailFetch, .cardListPageFetch, .cardListFetch, .tasteFetch: return .get case .cardCreation, .imageUpload: return .post @@ -62,7 +65,7 @@ extension CardService: TargetType { var task: Task { switch self { - case .cardDetailFetch, .cardDelete, .tasteFetch: + case .cardDetailFetch, .cardDelete, .tasteFetch, .cardListFetch: return .requestPlain case .cardCreation(let request): var parameters: [String: Any] = ["brith": request.frontCard.birth, @@ -101,10 +104,9 @@ extension CardService: TargetType { } return .requestParameters(parameters: parameters, encoding: JSONEncoding.default) - case .cardListFetch(let userID, let isList, let offset): - return .requestParameters(parameters: ["userId": userID, - "list": isList, - "offset": offset ?? ""], + case .cardListPageFetch(let pageNumber, let pageSize): + return .requestParameters(parameters: ["pageNo": pageNumber, + "pageSize": pageSize], encoding: URLEncoding.queryString) case .cardListEdit(let requestModel): return .requestJSONEncodable(requestModel) @@ -119,7 +121,7 @@ extension CardService: TargetType { var headers: [String: String]? { switch self { - case .cardDetailFetch, .cardListFetch, .cardDelete, .tasteFetch: + case .cardDetailFetch, .cardListPageFetch, .cardListFetch, .cardDelete, .tasteFetch: return Const.Header.bearerHeader() case .cardListEdit, .cardCreation: return Const.Header.basicHeader() From 384a93df66683a3f98920f835aed37748cfd4ab6 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Mon, 3 Apr 2023 15:48:10 +0900 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20=EB=AA=85=ED=95=A8=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20API=20=EC=88=98=EC=A0=95=20=EB=B0=8F=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=EB=84=A4=EC=9D=B4=EC=85=98=EC=9C=BC=EB=A1=9C?= =?UTF-8?q?=20=EC=88=98=EC=A0=95=20(#384)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Main/FrontViewController.swift | 48 ++++++++----------- 1 file changed, 21 insertions(+), 27 deletions(-) diff --git a/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift b/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift index 02950ed6..63715f6e 100644 --- a/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift +++ b/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift @@ -15,10 +15,10 @@ class FrontViewController: UIViewController { // MARK: - Properteis - private var offset = 0 private var isInfiniteScroll = true private var cardDataList: [Card]? = [] - private var userID: String? + private var pageNumber: Int = 0 + private let pageSize: Int = 8 var isAfterCreation = false @@ -48,7 +48,6 @@ class FrontViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() - setUserID() setDelegate() setNotification() } @@ -61,15 +60,15 @@ class FrontViewController: UIViewController { self.setActivityIndicator() - self.offset = 0 + self.pageNumber = 0 self.cardDataList?.removeAll() } - DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { - self.cardListFetchWithAPI(userID: self.userID, isList: false, offset: self.offset) { - _ = self.cardSwiper.scrollToCard(at: 0, animated: false) - self.activityIndicator.stopAnimating() - self.loadingBgView.removeFromSuperview() + DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { [weak self] in + self?.cardListPageFetchWithAPI(pageNumber: self?.pageNumber ?? -1, pageSize: self?.pageSize ?? -1) { + _ = self?.cardSwiper.scrollToCard(at: 0, animated: false) + self?.activityIndicator.stopAnimating() + self?.loadingBgView.removeFromSuperview() } } } @@ -107,10 +106,6 @@ extension FrontViewController { NotificationCenter.default.addObserver(self, selector: #selector(setCreationReloadMainCardSwiper), name: .creationReloadMainCardSwiper, object: nil) } - private func setUserID() { - userID = UserDefaults.standard.string(forKey: Const.UserDefaultsKey.userID) - } - private func setActivityIndicator() { view.addSubview(loadingBgView) loadingBgView.addSubview(activityIndicator) @@ -147,9 +142,9 @@ extension FrontViewController { isAfterCreation = true cardDataList?.removeAll() - offset = 0 + pageNumber = 0 - cardListFetchWithAPI(userID: userID, isList: false, offset: offset) { + cardListPageFetchWithAPI(pageNumber: pageNumber, pageSize: pageSize) { _ = self.cardSwiper.scrollToCard(at: 1, animated: false) self.isAfterCreation = false } @@ -166,9 +161,9 @@ extension FrontViewController: VerticalCardSwiperDelegate { if verticalCardSwiperView.contentOffset.y > verticalCardSwiperView.contentSize.height - verticalCardSwiperView.bounds.height { if isInfiniteScroll { isInfiniteScroll = false - offset += 1 - guard let userID = userID else { return } - cardListFetchWithAPI(userID: userID, isList: false, offset: offset) { + pageNumber += 1 + + cardListPageFetchWithAPI(pageNumber: pageNumber, pageSize: pageSize) { self.isInfiniteScroll = true } } @@ -204,24 +199,23 @@ extension FrontViewController: VerticalCardSwiperDatasource { // MARK: - Network extension FrontViewController { - func cardListFetchWithAPI(userID: String?, isList: Bool, offset: Int, completion: @escaping () -> Void = { }) { - guard let userID = userID else { return } - CardAPI.shared.cardListFetch(userID: userID, isList: isList, offset: offset) { response in + func cardListPageFetchWithAPI(pageNumber: Int, pageSize: Int, completion: @escaping () -> Void = { }) { + CardAPI.shared.cardListFetch(pageNumber: pageNumber, pageSize: pageSize) { response in switch response { case .success(let data): - if let cardListLookUp = data as? CardListLookUp { - self.cardDataList?.append(contentsOf: cardListLookUp.cards) + if let cardData = data as? [Card] { + self.cardDataList?.append(contentsOf: cardData) self.cardSwiper.reloadData() } completion() case .requestErr(let message): - print("cardListFetchWithAPI - requestErr: \(message)") + print("cardListPageFetchWithAPI - requestErr: \(message)") case .pathErr: - print("cardListFetchWithAPI - pathErr") + print("cardListPageFetchWithAPI - pathErr") case .serverErr: - print("cardListFetchWithAPI - serverErr") + print("cardListPageFetchWithAPI - serverErr") case .networkFail: - print("cardListFetchWithAPI - networkFail") + print("cardListPageFetchWithAPI - networkFail") } } } From ed96cd7dca0611356f0732cfa8153cc6dacaf80d Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Mon, 3 Apr 2023 15:48:58 +0900 Subject: [PATCH 3/4] =?UTF-8?q?fix:=20=EB=AA=85=ED=95=A8=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20=EC=A1=B0=ED=9A=8C=20=EC=8B=9C=EC=97=90=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=EB=84=A4=EC=9D=B4=EC=85=98=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=ED=95=98=EC=A7=80=20=EC=95=8A=EA=B3=A0=20=EC=A0=84?= =?UTF-8?q?=EC=B2=B4=20=EC=A1=B0=ED=9A=8C=20=EA=B5=AC=ED=98=84=20(#384)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 기본 파라미터를 사용해서 옵셔널 바인딩 로직을 활용하여 Service 파일에서 로직 구현. --- .../ViewControllers/CardList/CardListViewController.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/NADA-iOS-forRelease/Sources/ViewControllers/CardList/CardListViewController.swift b/NADA-iOS-forRelease/Sources/ViewControllers/CardList/CardListViewController.swift index 697528df..cd7cd2de 100644 --- a/NADA-iOS-forRelease/Sources/ViewControllers/CardList/CardListViewController.swift +++ b/NADA-iOS-forRelease/Sources/ViewControllers/CardList/CardListViewController.swift @@ -31,7 +31,7 @@ class CardListViewController: UIViewController { cardListTableView.delegate = self cardListTableView.dataSource = self - cardListFetchWithAPI(userID: UserDefaults.standard.string(forKey: Const.UserDefaultsKey.userID) ?? "", isList: true) + cardListFetchWithAPI() } override func viewWillAppear(_ animated: Bool) { @@ -165,8 +165,8 @@ extension CardListViewController: UITableViewDataSource { // MARK: - Network extension CardListViewController { - func cardListFetchWithAPI(userID: String, isList: Bool) { - CardAPI.shared.cardListFetch(userID: userID, isList: isList, offset: nil) { response in + func cardListFetchWithAPI() { + CardAPI.shared.cardListFetch() { response in switch response { case .success(let data): if let card = data as? CardListRequest { @@ -207,7 +207,7 @@ extension CardListViewController { switch response { case .success(let data): print(data) - self.cardListFetchWithAPI(userID: UserDefaults.standard.string(forKey: Const.UserDefaultsKey.userID) ?? "", isList: true) + self.cardListFetchWithAPI() self.cardListTableView.reloadData() case .requestErr(let message): print("deleteGroupWithAPI - requestErr", message) From 64c969ace2d56dbe06f632394ab7e1cc03e83b34 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Tue, 4 Apr 2023 11:14:22 +0900 Subject: [PATCH 4/4] =?UTF-8?q?fix:=20pageNumber=20=EB=8A=94=201=EB=B6=80?= =?UTF-8?q?=ED=84=B0=20=EC=8B=9C=EC=9E=91=EC=9C=BC=EB=A1=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20(#384)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/ViewControllers/Main/FrontViewController.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift b/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift index 63715f6e..670174de 100644 --- a/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift +++ b/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift @@ -17,7 +17,7 @@ class FrontViewController: UIViewController { private var isInfiniteScroll = true private var cardDataList: [Card]? = [] - private var pageNumber: Int = 0 + private var pageNumber: Int = 1 private let pageSize: Int = 8 var isAfterCreation = false @@ -60,7 +60,7 @@ class FrontViewController: UIViewController { self.setActivityIndicator() - self.pageNumber = 0 + self.pageNumber = 1 self.cardDataList?.removeAll() } @@ -142,7 +142,7 @@ extension FrontViewController { isAfterCreation = true cardDataList?.removeAll() - pageNumber = 0 + pageNumber = 1 cardListPageFetchWithAPI(pageNumber: pageNumber, pageSize: pageSize) { _ = self.cardSwiper.scrollToCard(at: 1, animated: false)