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() 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) diff --git a/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift b/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift index 02950ed6..670174de 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 = 1 + 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 = 1 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 = 1 - 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") } } }