Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: 명함 조회 API 수정 (#384) #398

Merged
merged 5 commits into from
Apr 11, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 27 additions & 27 deletions NADA-iOS-forRelease/Sources/NetworkService/Card/CardAPI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -47,29 +47,29 @@ public class CardAPI {
}
}

func cardListFetch(userID: String, isList: Bool, offset: Int?, completion: @escaping (NetworkResult<Any>) -> 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<Any>) -> 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
let data = response.data

let networkResult = self.judgeMainListFetchStatus(by: statusCode, data)
completion(networkResult)

case .failure(let err):
print(err)
}
Expand Down Expand Up @@ -183,7 +183,7 @@ public class CardAPI {
private func judgeMainListFetchStatus(by statusCode: Int, _ data: Data) -> NetworkResult<Any> {

let decoder = JSONDecoder()
guard let decodedData = try? decoder.decode(GenericResponse<CardListLookUp>.self, from: data)
guard let decodedData = try? decoder.decode(GenericResponse<[Card]>.self, from: data)
else {
return .pathErr
}
Expand All @@ -200,25 +200,25 @@ public class CardAPI {
}
}

private func judgeCardListFetchStatus(by statusCode: Int, _ data: Data) -> NetworkResult<Any> {
let decoder = JSONDecoder()
guard let decodedData = try? decoder.decode(GenericResponse<CardListRequest>.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<Any> {
//
// let decoder = JSONDecoder()
// guard let decodedData = try? decoder.decode(GenericResponse<CardListRequest>.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<Any> {

Expand Down
20 changes: 11 additions & 9 deletions NADA-iOS-forRelease/Sources/NetworkService/Card/CardService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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):
Expand All @@ -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
Expand All @@ -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,
Expand Down Expand Up @@ -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)
Expand All @@ -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()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -48,7 +48,6 @@ class FrontViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()

setUserID()
setDelegate()
setNotification()
}
Expand All @@ -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()
}
}
}
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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
}
Expand All @@ -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
}
}
Expand Down Expand Up @@ -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")
}
}
}
Expand Down