From a6a944164b07de02b328c4134e249d6ca5b7fc5e Mon Sep 17 00:00:00 2001 From: hyungyu Kim Date: Sun, 26 Dec 2021 19:03:06 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[FEAT]=20#226=20-=20=EB=A9=94=EC=9D=B8=20?= =?UTF-8?q?=EB=AC=B4=ED=95=9C=EC=8A=A4=ED=81=AC=EB=A1=A4=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EB=B0=8F=20data=20=EB=AA=A8=EB=8D=B8=20=EC=A0=95?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 메인스크롤 구현 - data 모델 정리 - CardClass 삭제 - MainListRequest 삭제(사용하지 않음) --- NADA-iOS-forRelease.xcodeproj/project.pbxproj | 4 - .../Sources/Cells/CardCell/BackCardCell.swift | 12 +- .../Cells/CardCell/FrontCardCell.swift | 4 +- .../Sources/NetworkModel/Card/Card.swift | 23 ++-- .../NetworkModel/Card/MainListRequest.swift | 15 --- .../Group/CardsInGroupResponse.swift | 44 +++---- .../Sources/NetworkModel/Group/Groups.swift | 22 ++-- .../Sources/NetworkModel/User/User.swift | 10 +- .../Sources/NetworkService/Card/CardAPI.swift | 2 +- .../NetworkService/Card/CardService.swift | 6 +- .../AddWithIdBottomSheetViewController.swift | 21 +--- .../CardShareBottomSheetViewController.swift | 12 +- .../CardCreationViewController.swift | 42 ------- .../Group/GroupViewController.swift | 19 +-- .../Main/FrontViewController.swift | 110 ++++++------------ .../TeamNADA/TeamNADAViewController.swift | 8 -- 16 files changed, 104 insertions(+), 250 deletions(-) delete mode 100644 NADA-iOS-forRelease/Sources/NetworkModel/Card/MainListRequest.swift diff --git a/NADA-iOS-forRelease.xcodeproj/project.pbxproj b/NADA-iOS-forRelease.xcodeproj/project.pbxproj index ad6eb082..87d72b73 100644 --- a/NADA-iOS-forRelease.xcodeproj/project.pbxproj +++ b/NADA-iOS-forRelease.xcodeproj/project.pbxproj @@ -37,7 +37,6 @@ 39523E5B2701A48900536900 /* CardListTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39523E592701A48900536900 /* CardListTableViewCell.swift */; }; 39523E5C2701A48900536900 /* CardListTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 39523E5A2701A48900536900 /* CardListTableViewCell.xib */; }; 39523E5F2701AA9000536900 /* CardListDataModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39523E5E2701AA9000536900 /* CardListDataModel.swift */; }; - 39584581273E951C009CC6B9 /* MainListRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39584580273E951C009CC6B9 /* MainListRequest.swift */; }; 3958F239270FFBBF00B100B2 /* GroupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3958F238270FFBBF00B100B2 /* GroupViewController.swift */; }; 3958F23C270FFBD500B100B2 /* Group.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3958F23B270FFBD500B100B2 /* Group.storyboard */; }; 3979709626FA0BE5003FB4F5 /* LoginViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3979709526FA0BE5003FB4F5 /* LoginViewController.swift */; }; @@ -175,7 +174,6 @@ 39523E592701A48900536900 /* CardListTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardListTableViewCell.swift; sourceTree = ""; }; 39523E5A2701A48900536900 /* CardListTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CardListTableViewCell.xib; sourceTree = ""; }; 39523E5E2701AA9000536900 /* CardListDataModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardListDataModel.swift; sourceTree = ""; }; - 39584580273E951C009CC6B9 /* MainListRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainListRequest.swift; sourceTree = ""; }; 3958F238270FFBBF00B100B2 /* GroupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupViewController.swift; sourceTree = ""; }; 3958F23B270FFBD500B100B2 /* Group.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Group.storyboard; sourceTree = ""; }; 3979709526FA0BE5003FB4F5 /* LoginViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewController.swift; sourceTree = ""; }; @@ -677,7 +675,6 @@ F871227727330A3800A24E74 /* CardCreationRequest.swift */, 3981148D273BEBB300E28630 /* CardListEditRequest.swift */, 3981148F273BEBCE00E28630 /* CardListRequest.swift */, - 39584580273E951C009CC6B9 /* MainListRequest.swift */, 39288E11273F52B20072F403 /* CardListLookUpRequest.swift */, ); path = Card; @@ -1149,7 +1146,6 @@ F871227827330A3800A24E74 /* CardCreationRequest.swift in Sources */, 39D88B5F2745FB7E00A72164 /* MoreViewController.swift in Sources */, F8FC43B326C020B90033E151 /* BackCardCreationDelegate.swift in Sources */, - 39584581273E951C009CC6B9 /* MainListRequest.swift in Sources */, 39369944274A568900684420 /* GroupEditTableViewCell.swift in Sources */, F8C83FBB272F9F370009DF0D /* NetworkResult.swift in Sources */, 39D2E130270B43DA00AD0889 /* UIFont+Extension.swift in Sources */, diff --git a/NADA-iOS-forRelease/Sources/Cells/CardCell/BackCardCell.swift b/NADA-iOS-forRelease/Sources/Cells/CardCell/BackCardCell.swift index b39ee908..3f750f37 100644 --- a/NADA-iOS-forRelease/Sources/Cells/CardCell/BackCardCell.swift +++ b/NADA-iOS-forRelease/Sources/Cells/CardCell/BackCardCell.swift @@ -95,20 +95,20 @@ extension BackCardCell { friedChickenImageView.image = cardData.isSauced == false ? UIImage(named: "iconTasteOnFried") : UIImage(named: "iconTasteOffFried") - if !cardData.oneTmi.isEmpty { - firstTmiLabel.text = "• " + cardData.oneTmi + if let oneTmi = cardData.oneTmi, !oneTmi.isEmpty { + firstTmiLabel.text = "• " + oneTmi } else { firstTmiLabel.text = cardData.oneTmi } - if !cardData.twoTmi.isEmpty { - secondTmiLabel.text = "• " + cardData.twoTmi + if let twoTmi = cardData.twoTmi, !twoTmi.isEmpty { + secondTmiLabel.text = "• " + twoTmi } else { secondTmiLabel.text = cardData.twoTmi } - if !cardData.threeTmi.isEmpty { - thirdTmiLabel.text = "• " + cardData.threeTmi + if let threeTmi = cardData.threeTmi, !threeTmi.isEmpty { + thirdTmiLabel.text = "• " + threeTmi } else { thirdTmiLabel.text = cardData.threeTmi } diff --git a/NADA-iOS-forRelease/Sources/Cells/CardCell/FrontCardCell.swift b/NADA-iOS-forRelease/Sources/Cells/CardCell/FrontCardCell.swift index 38d364f7..ca2d0768 100644 --- a/NADA-iOS-forRelease/Sources/Cells/CardCell/FrontCardCell.swift +++ b/NADA-iOS-forRelease/Sources/Cells/CardCell/FrontCardCell.swift @@ -129,10 +129,10 @@ extension FrontCardCell { instagramIDLabel.text = cardData.instagram linkURLLabel.text = cardData.link - if cardData.instagram.isEmpty { + if let instagram = cardData.instagram, instagram.isEmpty { instagramImageView.isHidden = true } - if cardData.link.isEmpty { + if let link = cardData.link, link.isEmpty { linkURLImageView.isHidden = true } diff --git a/NADA-iOS-forRelease/Sources/NetworkModel/Card/Card.swift b/NADA-iOS-forRelease/Sources/NetworkModel/Card/Card.swift index 65ef1c70..091acc05 100644 --- a/NADA-iOS-forRelease/Sources/NetworkModel/Card/Card.swift +++ b/NADA-iOS-forRelease/Sources/NetworkModel/Card/Card.swift @@ -7,18 +7,12 @@ import Foundation -// MARK: - DataClass -struct CardClass: Codable { - let card: Card -} - // MARK: - Card struct Card: Codable { - let cardID, background, title, name: String - let birthDate, mbti, instagram, link: String - let cardDescription: String + let cardID, background, title, name, birthDate, mbti: String + let instagram, link, cardDescription: String? let isMincho, isSoju, isBoomuk, isSauced: Bool - let oneTmi, twoTmi, threeTmi: String + let oneTmi, twoTmi, threeTmi: String? enum CodingKeys: String, CodingKey { case cardID = "cardId" @@ -26,8 +20,7 @@ struct Card: Codable { case cardDescription = "description" case isMincho, isSoju, isBoomuk, isSauced, oneTmi, twoTmi, threeTmi } -} - // FIXME: - 메인에서 카드 정보 정적으로 생성하기 위한 주석 + // TODO: - 쓰게 될줄 알았는데 안써서 일단 보류 // init(from decoder: Decoder) throws { // let values = try decoder.container(keyedBy: CodingKeys.self) // cardID = (try? values.decode(String.self, forKey: .cardID)) ?? "" @@ -43,8 +36,8 @@ struct Card: Codable { // isSoju = (try? values.decode(Bool.self, forKey: .isSoju)) ?? false // isBoomuk = (try? values.decode(Bool.self, forKey: .isBoomuk)) ?? false // isSauced = (try? values.decode(Bool.self, forKey: .isSauced)) ?? false -// oneTMI = (try? values.decode(String.self, forKey: .oneTMI)) -// twoTMI = (try? values.decode(String.self, forKey: .twoTMI)) -// thirdTMI = (try? values.decode(String.self, forKey: .thirdTMI)) +// oneTmi = (try? values.decode(String.self, forKey: .oneTmi)) +// twoTmi = (try? values.decode(String.self, forKey: .twoTmi)) +// threeTmi = (try? values.decode(String.self, forKey: .threeTmi)) // } -//} +} diff --git a/NADA-iOS-forRelease/Sources/NetworkModel/Card/MainListRequest.swift b/NADA-iOS-forRelease/Sources/NetworkModel/Card/MainListRequest.swift deleted file mode 100644 index e2f726ea..00000000 --- a/NADA-iOS-forRelease/Sources/NetworkModel/Card/MainListRequest.swift +++ /dev/null @@ -1,15 +0,0 @@ -// -// MainListRequest.swift -// NADA-iOS-forRelease -// -// Created by 민 on 2021/11/12. -// - -import Foundation - -// MARK: - MainList -struct MainListRequest: Codable { - var userId: String - var list: Bool - var offset: Int -} diff --git a/NADA-iOS-forRelease/Sources/NetworkModel/Group/CardsInGroupResponse.swift b/NADA-iOS-forRelease/Sources/NetworkModel/Group/CardsInGroupResponse.swift index 29c783b3..ceb1b4a4 100644 --- a/NADA-iOS-forRelease/Sources/NetworkModel/Group/CardsInGroupResponse.swift +++ b/NADA-iOS-forRelease/Sources/NetworkModel/Group/CardsInGroupResponse.swift @@ -9,22 +9,23 @@ import Foundation struct CardsInGroupResponse: Codable { let offset: Int - let cards: [Cards] + let cards: [FrontCard] enum CodingKeys: String, CodingKey { case offset case cards } - init(from decoder: Decoder) throws { - let values = try decoder.container(keyedBy: CodingKeys.self) - offset = (try? values.decode(Int.self, forKey: .offset)) ?? -1 - cards = (try? values.decode([Cards].self, forKey: .cards)) ?? [Cards]() - } + // TODO: - 쓰게 될줄 알았는데 안써서 일단 보류 +// init(from decoder: Decoder) throws { +// let values = try decoder.container(keyedBy: CodingKeys.self) +// offset = (try? values.decode(Int.self, forKey: .offset)) ?? -1 +// cards = (try? values.decode([FrontCard].self, forKey: .cards)) ?? [FrontCard]() +// } } // MARK: - Cards -struct Cards: Codable { +struct FrontCard: Codable { let cardID, background, title, name, birthDate, age, mbti: String let instagram, linkName, link, cardDescription: String? @@ -34,18 +35,19 @@ struct Cards: Codable { case cardDescription = "description" } - init(from decoder: Decoder) throws { - let values = try decoder.container(keyedBy: CodingKeys.self) - cardID = (try? values.decode(String.self, forKey: .cardID)) ?? "" - background = (try? values.decode(String.self, forKey: .background)) ?? "" - title = (try? values.decode(String.self, forKey: .title)) ?? "" - name = (try? values.decode(String.self, forKey: .name)) ?? "" - birthDate = (try? values.decode(String.self, forKey: .birthDate)) ?? "" - age = (try? values.decode(String.self, forKey: .age)) ?? "" - mbti = (try? values.decode(String.self, forKey: .mbti)) ?? "" - instagram = (try? values.decode(String.self, forKey: .instagram)) - linkName = (try? values.decode(String.self, forKey: .linkName)) - link = (try? values.decode(String.self, forKey: .link)) - cardDescription = (try? values.decode(String.self, forKey: .cardDescription)) - } + // TODO: - 쓰게 될줄 알았는데 안써서 일단 보류 +// init(from decoder: Decoder) throws { +// let values = try decoder.container(keyedBy: CodingKeys.self) +// cardID = (try? values.decode(String.self, forKey: .cardID)) ?? "" +// background = (try? values.decode(String.self, forKey: .background)) ?? "" +// title = (try? values.decode(String.self, forKey: .title)) ?? "" +// name = (try? values.decode(String.self, forKey: .name)) ?? "" +// birthDate = (try? values.decode(String.self, forKey: .birthDate)) ?? "" +// age = (try? values.decode(String.self, forKey: .age)) ?? "" +// mbti = (try? values.decode(String.self, forKey: .mbti)) ?? "" +// instagram = (try? values.decode(String.self, forKey: .instagram)) +// linkName = (try? values.decode(String.self, forKey: .linkName)) +// link = (try? values.decode(String.self, forKey: .link)) +// cardDescription = (try? values.decode(String.self, forKey: .cardDescription)) +// } } diff --git a/NADA-iOS-forRelease/Sources/NetworkModel/Group/Groups.swift b/NADA-iOS-forRelease/Sources/NetworkModel/Group/Groups.swift index 6ab0b35c..f71483ac 100644 --- a/NADA-iOS-forRelease/Sources/NetworkModel/Group/Groups.swift +++ b/NADA-iOS-forRelease/Sources/NetworkModel/Group/Groups.swift @@ -15,10 +15,12 @@ struct Groups: Codable { enum CondingKeys: String, CodingKey { case groups } - init(from decoder: Decoder) throws { - let values = try decoder.container(keyedBy: CodingKeys.self) - groups = (try? values.decode([Group].self, forKey: .groups)) ?? [Group]() - } + + // TODO: - 쓰게 될줄 알았는데 안써서 일단 보류 +// init(from decoder: Decoder) throws { +// let values = try decoder.container(keyedBy: CodingKeys.self) +// groups = (try? values.decode([Group].self, forKey: .groups)) ?? [Group]() +// } } // MARK: - Group @@ -31,10 +33,10 @@ struct Group: Codable { case groupID = "groupId" case groupName } - - init(from decoder: Decoder) throws { - let values = try decoder.container(keyedBy: CodingKeys.self) - groupID = (try? values.decode(Int.self, forKey: .groupID)) ?? -1 - groupName = (try? values.decode(String.self, forKey: .groupName)) ?? "" - } + // TODO: - 쓰게 될줄 알았는데 안써서 일단 보류 +// init(from decoder: Decoder) throws { +// let values = try decoder.container(keyedBy: CodingKeys.self) +// groupID = (try? values.decode(Int.self, forKey: .groupID)) ?? -1 +// groupName = (try? values.decode(String.self, forKey: .groupName)) ?? "" +// } } diff --git a/NADA-iOS-forRelease/Sources/NetworkModel/User/User.swift b/NADA-iOS-forRelease/Sources/NetworkModel/User/User.swift index 3d1213f6..b2840abe 100644 --- a/NADA-iOS-forRelease/Sources/NetworkModel/User/User.swift +++ b/NADA-iOS-forRelease/Sources/NetworkModel/User/User.swift @@ -15,9 +15,9 @@ struct User: Codable { enum CodingKeys: String, CodingKey { case userID = "userId" } - - init(from decoder: Decoder) throws { - let values = try decoder.container(keyedBy: CodingKeys.self) - userID = (try? values.decode(String.self, forKey: .userID)) ?? "" - } + // TODO: - 쓰게 될줄 알았는데 안써서 일단 보류 +// init(from decoder: Decoder) throws { +// let values = try decoder.container(keyedBy: CodingKeys.self) +// userID = (try? values.decode(String.self, forKey: .userID)) ?? "" +// } } diff --git a/NADA-iOS-forRelease/Sources/NetworkService/Card/CardAPI.swift b/NADA-iOS-forRelease/Sources/NetworkService/Card/CardAPI.swift index b0af41a1..0f3c75bf 100644 --- a/NADA-iOS-forRelease/Sources/NetworkService/Card/CardAPI.swift +++ b/NADA-iOS-forRelease/Sources/NetworkService/Card/CardAPI.swift @@ -98,7 +98,7 @@ public class CardAPI { private func judgeCardDetailFetchStatus(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.self, from: data) else { return .pathErr } diff --git a/NADA-iOS-forRelease/Sources/NetworkService/Card/CardService.swift b/NADA-iOS-forRelease/Sources/NetworkService/Card/CardService.swift index 8968a0cb..d0cebd5e 100644 --- a/NADA-iOS-forRelease/Sources/NetworkService/Card/CardService.swift +++ b/NADA-iOS-forRelease/Sources/NetworkService/Card/CardService.swift @@ -11,7 +11,7 @@ import Moya enum CardService { case cardDetailFetch(cardID: String) case cardCreation(request: CardCreationRequest, image: UIImage) - case cardListFetch(userID: String, isList: Bool?, offset: Int?) + case cardListFetch(userID: String, isList: Bool, offset: Int) case cardListEdit(request: CardListEditRequest) case cardDelete(cardID: String) } @@ -101,8 +101,8 @@ extension CardService: TargetType { return .uploadMultipart(multiPartData) case .cardListFetch(let userID, let isList, let offset): return .requestParameters(parameters: ["userId": userID, - "list": isList ?? false, - "offset": offset ?? "" + "list": isList, + "offset": offset ], encoding: URLEncoding.queryString) case .cardListEdit(let requestModel): return .requestJSONEncodable(requestModel) diff --git a/NADA-iOS-forRelease/Sources/ViewControllers/BottomSheet/AddWithIdBottomSheetViewController.swift b/NADA-iOS-forRelease/Sources/ViewControllers/BottomSheet/AddWithIdBottomSheetViewController.swift index 6a3a976a..53424618 100644 --- a/NADA-iOS-forRelease/Sources/ViewControllers/BottomSheet/AddWithIdBottomSheetViewController.swift +++ b/NADA-iOS-forRelease/Sources/ViewControllers/BottomSheet/AddWithIdBottomSheetViewController.swift @@ -107,26 +107,11 @@ extension AddWithIdBottomSheetViewController { CardAPI.shared.cardDetailFetch(cardID: cardID) { response in switch response { case .success(let data): - if let card = data as? CardClass { + if let card = data as? Card { //TODO: 내가 쓴거 내가 추가 하면 예외처리 필요 let nextVC = CardResultBottomSheetViewController() - nextVC.cardDataModel = Card(cardID: card.card.cardID, - background: card.card.background, - title: card.card.title, - name: card.card.name, - birthDate: card.card.birthDate, - mbti: card.card.mbti, - instagram: card.card.instagram, - link: card.card.link, - cardDescription: card.card.cardDescription, - isMincho: card.card.isMincho, - isSoju: card.card.isSoju, - isBoomuk: card.card.isBoomuk, - isSauced: card.card.isSauced, - oneTmi: card.card.oneTmi, - twoTmi: card.card.twoTmi, - threeTmi: card.card.threeTmi) - self.hideBottomSheetAndPresent(nextBottomSheet: nextVC, title: card.card.name, height: 574) + nextVC.cardDataModel = card + self.hideBottomSheetAndPresent(nextBottomSheet: nextVC, title: card.name, height: 574) } case .requestErr(let message): print("cardDetailFetchWithAPI - requestErr: \(message)") diff --git a/NADA-iOS-forRelease/Sources/ViewControllers/BottomSheet/CardShareBottomSheetViewController.swift b/NADA-iOS-forRelease/Sources/ViewControllers/BottomSheet/CardShareBottomSheetViewController.swift index df53bec1..af593a70 100644 --- a/NADA-iOS-forRelease/Sources/ViewControllers/BottomSheet/CardShareBottomSheetViewController.swift +++ b/NADA-iOS-forRelease/Sources/ViewControllers/BottomSheet/CardShareBottomSheetViewController.swift @@ -126,12 +126,12 @@ class CardShareBottomSheetViewController: CommonBottomSheetViewController { guard let cardDataModel = cardDataModel else { return UIImage() } frontCard.initCell(UIImage(named: cardDataModel.background), cardDataModel.title, - cardDataModel.cardDescription, + cardDataModel.cardDescription ?? "", cardDataModel.name, cardDataModel.birthDate, cardDataModel.mbti, - cardDataModel.instagram , - cardDataModel.link, + cardDataModel.instagram ?? "", + cardDataModel.link ?? "", isShareable: isShareable) let frontCardView = UIView(frame: CGRect(x: 0, y: 0, width: 327, height: 540)) @@ -153,9 +153,9 @@ class CardShareBottomSheetViewController: CommonBottomSheetViewController { cardDataModel.isSoju, cardDataModel.isBoomuk, cardDataModel.isSauced, - cardDataModel.oneTmi, - cardDataModel.twoTmi, - cardDataModel.threeTmi, + cardDataModel.oneTmi ?? "", + cardDataModel.twoTmi ?? "", + cardDataModel.threeTmi ?? "", isShareable: isShareable) let backCardView = UIView(frame: CGRect(x: 0, y: 0, width: 327, height: 540)) diff --git a/NADA-iOS-forRelease/Sources/ViewControllers/CardCreation/CardCreationViewController.swift b/NADA-iOS-forRelease/Sources/ViewControllers/CardCreation/CardCreationViewController.swift index 6f08d2e6..840c6e9a 100644 --- a/NADA-iOS-forRelease/Sources/ViewControllers/CardCreation/CardCreationViewController.swift +++ b/NADA-iOS-forRelease/Sources/ViewControllers/CardCreation/CardCreationViewController.swift @@ -222,48 +222,6 @@ extension CardCreationViewController { } } -// MARK: - Network -extension CardCreationViewController { - // TODO: - card 서버통신. 위치변경. -// func cardDetailFetchWithAPI(cardID: String) { -// CardAPI.shared.cardDetailFetch(cardID: cardID) { response in -// switch response { -// case .success(let data): -// if let card = data as? Card { -// self.cardData = card -// } -// case .requestErr(let message): -// print("cardDetailFetchWithAPI - requestErr: \(message)") -// case .pathErr: -// print("cardDetailFetchWithAPI - pathErr") -// case .serverErr: -// print("cardDetailFetchWithAPI - serverErr") -// case .networkFail: -// print("cardDetailFetchWithAPI - networkFail") -// } -// } -// } - - // TODO: - group 서버통신. 위치변경. -// func cardDeleteInGroupWithAPI(groupID: Int, cardID: String) { -// GroupAPI.shared.cardDeleteInGroup(groupID: groupID, cardID: cardID) { response in -// switch response { -// case .success: -// print("cardDeleteInGroupWithAPI - success") -// case .requestErr(let message): -// print("cardDeleteInGroupWithAPI - requestErr: \(message)") -// case .pathErr: -// print("cardDeleteInGroupWithAPI - pathErr") -// case .serverErr: -// print("cardDeleteInGroupWithAPI - serverErr") -// case .networkFail: -// print("cardDeleteInGroupWithAPI - networkFail") -// } -// -// } -// } -} - // MARK: - UICollectionViewDelegate extension CardCreationViewController: UICollectionViewDelegate { func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer) { diff --git a/NADA-iOS-forRelease/Sources/ViewControllers/Group/GroupViewController.swift b/NADA-iOS-forRelease/Sources/ViewControllers/Group/GroupViewController.swift index 648ad438..5354afea 100644 --- a/NADA-iOS-forRelease/Sources/ViewControllers/Group/GroupViewController.swift +++ b/NADA-iOS-forRelease/Sources/ViewControllers/Group/GroupViewController.swift @@ -224,25 +224,10 @@ extension GroupViewController { CardAPI.shared.cardDetailFetch(cardID: cardID) { response in switch response { case .success(let data): - if let card = data as? CardClass { + if let card = data as? Card { guard let nextVC = UIStoryboard.init(name: Const.Storyboard.Name.cardDetail, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.cardDetailViewController) as? CardDetailViewController else { return } - nextVC.cardDataModel = Card(cardID: card.card.cardID, - background: card.card.background, - title: card.card.title, - name: card.card.name, - birthDate: card.card.birthDate, - mbti: card.card.mbti, - instagram: card.card.instagram, - link: card.card.link, - cardDescription: card.card.cardDescription, - isMincho: card.card.isMincho, - isSoju: card.card.isSoju, - isBoomuk: card.card.isBoomuk, - isSauced: card.card.isSauced, - oneTmi: card.card.oneTmi, - twoTmi: card.card.twoTmi, - threeTmi: card.card.threeTmi) + nextVC.cardDataModel = card nextVC.groupId = self.groupId nextVC.serverGroups = self.serverGroups self.navigationController?.pushViewController(nextVC, animated: true) diff --git a/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift b/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift index 7171ad91..1c99a5b0 100644 --- a/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift +++ b/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift @@ -12,41 +12,11 @@ import KakaoSDKCommon class FrontViewController: UIViewController { // MARK: - Properteis - - var cardDataList: [Card]? = [Card(cardID: "card", - background: "card", - title: "SOPT 명함", - name: "이채연", - birthDate: "1998.01.09 (24)", - mbti: "ENFP", - instagram: "chaens_", - link: "https://github.com/TeamNADAgithub.com/TeamNADAgithub.com/TeamNADAgithub.com/TeamNADAgithub.com/TeamNADA", - cardDescription: "29기 디자인파트", - isMincho: true, - isSoju: true, - isBoomuk: true, - isSauced: true, - oneTmi: "첫번째", - twoTmi: "두번째", - threeTmi: "세번째세번째세번째"), - Card(cardID: "card", - background: "card", - title: "SOPT 명함", - name: "이채연", - birthDate: "1998.01.09 (24)", - mbti: "ENFP", - instagram: "minimin.0_0", - link: "https://www.naver.com", - cardDescription: "29기 디자인파트", - isMincho: true, - isSoju: true, - isBoomuk: true, - isSauced: true, - oneTmi: "첫번째", - twoTmi: "두번째", - threeTmi: "세번째세번째세번째")] - // var cardDataList: [Card]? = [] + private var offset = 0 + private var isInfiniteScroll = true + private var cardDataList: [Card]? = [] + private var userID: String? // MARK: - @IBOutlet Properties @IBOutlet weak var cardSwiper: VerticalCardSwiper! @@ -55,12 +25,10 @@ class FrontViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() -// setCardDataModelList() + setUserID() + setCardDataModelList() setDelegate() setNotification() - // TODO: - 서버 테스트 - -// cardListFetchWithAPI(userID: "nada", isList: false, offset: 0) } // MARK: - @IBAction Properties @@ -112,42 +80,15 @@ extension FrontViewController { self.present(nextVC, animated: false, completion: nil) } -// private func setCardDataModelList() { -// cardDataList?.append(contentsOf: [ -// Card(cardID: "card", -// background: "card", -// title: "SOPT 명함", -// name: "이채연", -// birthDate: "1998.01.09 (24)", -// mbti: "ENFP", -// instagram: "chaens_", -// link: "https://github.com/TeamNADAgithub.com/TeamNADAgithub.com/TeamNADAgithub.com/TeamNADAgithub.com/TeamNADA", -// cardDescription: "29기 디자인파트", -// isMincho: true, -// isSoju: true, -// isBoomuk: true, -// isSauced: true, -// oneTMI: "첫번째", -// twoTMI: "두번째", -// thirdTMI: "세번째세번째세번째"), -// Card(cardID: "card", -// background: "card", -// title: "SOPT 명함", -// name: "이채연", -// birthDate: "1998.01.09 (24)", -// mbti: "ENFP", -// instagram: "minimin.0_0", -// link: "https://www.naver.com", -// cardDescription: "29기 디자인파트", -// isMincho: true, -// isSoju: true, -// isBoomuk: true, -// isSauced: true, -// oneTMI: "첫번째", -// twoTMI: "두번째", -// thirdTMI: "세번째세번째세번째") -// ]) -// } + private func setUserID() { + userID = UserDefaults.standard.string(forKey: Const.UserDefaults.userID) + } + + private func setCardDataModelList() { +// guard let userID = userID else { return } +// cardListFetchWithAPI(userID: userID, isList: false, offset: offset) + cardListFetchWithAPI(userID: "NADA2", isList: false, offset: offset) + } } // MARK: - VerticalCardSwiperDelegate @@ -155,6 +96,17 @@ extension FrontViewController: VerticalCardSwiperDelegate { func sizeForItem(verticalCardSwiperView: VerticalCardSwiperView, index: Int) -> CGSize { return CGSize(width: 375, height: 630) } + + func didScroll(verticalCardSwiperView: VerticalCardSwiperView) { + 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) + } + } + } } // MARK: - VerticalCardSwiperDatasource @@ -183,11 +135,15 @@ extension FrontViewController: VerticalCardSwiperDatasource { // MARK: - Network extension FrontViewController { func cardListFetchWithAPI(userID: String, isList: Bool, offset: Int) { - CardAPI.shared.cardListFetch(userID: userID, isList: isList, offset: offset) { response in + CardAPI.shared.cardListFetch(userID: "NADA2", isList: isList, offset: offset) { response in switch response { case .success(let data): - if let card = data as? CardListRequest { - print(card) + if let cardListLookUpRequest = data as? CardListLookUpRequest { + print("✅cardListLookUpRequest", cardListLookUpRequest) + self.cardDataList?.append(contentsOf: cardListLookUpRequest.cards) + + self.cardSwiper.reloadData() + self.isInfiniteScroll = true } case .requestErr(let message): print("cardListFetchWithAPI - requestErr: \(message)") diff --git a/NADA-iOS-forRelease/Sources/ViewControllers/TeamNADA/TeamNADAViewController.swift b/NADA-iOS-forRelease/Sources/ViewControllers/TeamNADA/TeamNADAViewController.swift index 79bc6fa2..bc32a33a 100644 --- a/NADA-iOS-forRelease/Sources/ViewControllers/TeamNADA/TeamNADAViewController.swift +++ b/NADA-iOS-forRelease/Sources/ViewControllers/TeamNADA/TeamNADAViewController.swift @@ -11,7 +11,6 @@ import VerticalCardSwiper class TeamNADAViewController: UIViewController { // MARK: - Properteis - var cardDataList: [Card]? = [Card(cardID: "card", background: "imgYun", title: "NADA", @@ -117,9 +116,7 @@ class TeamNADAViewController: UIViewController { super.viewDidLoad() navigationBackSwipeMotion() - setUI() setDelegate() - } // MARK: - @IBAction Properties @@ -131,11 +128,6 @@ class TeamNADAViewController: UIViewController { // MARK: - Extensions extension TeamNADAViewController { - - private func setUI() { - - } - func navigationBackSwipeMotion() { self.navigationController?.interactivePopGestureRecognizer?.delegate = nil } From 5c93cdac438a151629550d1d6e7fb7d910f89cd1 Mon Sep 17 00:00:00 2001 From: hyungyu Kim Date: Sun, 26 Dec 2021 19:06:20 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[FEAT]=20#226=20-=20=EB=A9=94=EC=9D=B8=20?= =?UTF-8?q?=EB=AC=B4=ED=95=9C=EC=8A=A4=ED=81=AC=EB=A1=A4=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EB=B0=8F=20data=20=EB=AA=A8=EB=8D=B8=20=EC=A0=95?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - viewWillAppear 일때 메인 카드 리스트 서버통신 --- .../Sources/ViewControllers/Main/FrontViewController.swift | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift b/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift index 1c99a5b0..d6975e8b 100644 --- a/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift +++ b/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift @@ -26,11 +26,16 @@ class FrontViewController: UIViewController { super.viewDidLoad() setUserID() - setCardDataModelList() setDelegate() setNotification() } + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + + setCardDataModelList() + } + // MARK: - @IBAction Properties // 명함 생성 뷰로 화면 전환 @IBAction func presentToCardCreationView(_ sender: Any) { From 7be89ebc86ccf0aba3d7434ad6e0086d8f3d6dec Mon Sep 17 00:00:00 2001 From: hyungyu Kim Date: Sun, 26 Dec 2021 20:29:10 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[FEAT]=20#226=20-=20=EB=A9=94=EC=9D=B8=20?= =?UTF-8?q?=EB=AC=B4=ED=95=9C=EC=8A=A4=ED=81=AC=EB=A1=A4=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EB=B0=8F=20data=20=EB=AA=A8=EB=8D=B8=20=EC=A0=95?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/ViewControllers/Main/FrontViewController.swift | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift b/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift index d6975e8b..99b3dd22 100644 --- a/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift +++ b/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift @@ -92,7 +92,7 @@ extension FrontViewController { private func setCardDataModelList() { // guard let userID = userID else { return } // cardListFetchWithAPI(userID: userID, isList: false, offset: offset) - cardListFetchWithAPI(userID: "NADA2", isList: false, offset: offset) + cardListFetchWithAPI(userID: "nada2", isList: false, offset: offset) } } @@ -140,15 +140,16 @@ extension FrontViewController: VerticalCardSwiperDatasource { // MARK: - Network extension FrontViewController { func cardListFetchWithAPI(userID: String, isList: Bool, offset: Int) { - CardAPI.shared.cardListFetch(userID: "NADA2", isList: isList, offset: offset) { response in + CardAPI.shared.cardListFetch(userID: "nada2", isList: isList, offset: offset) { response in switch response { case .success(let data): + self.isInfiniteScroll = true + if let cardListLookUpRequest = data as? CardListLookUpRequest { print("✅cardListLookUpRequest", cardListLookUpRequest) self.cardDataList?.append(contentsOf: cardListLookUpRequest.cards) self.cardSwiper.reloadData() - self.isInfiniteScroll = true } case .requestErr(let message): print("cardListFetchWithAPI - requestErr: \(message)") From da921694eda01132f41899438d9f34a6f1c791c0 Mon Sep 17 00:00:00 2001 From: hyungyu Kim Date: Sun, 26 Dec 2021 21:01:32 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[FEAT]=20#226=20-=20=EB=A9=94=EC=9D=B8=20?= =?UTF-8?q?=EB=AC=B4=ED=95=9C=EC=8A=A4=ED=81=AC=EB=A1=A4=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EB=B0=8F=20data=20=EB=AA=A8=EB=8D=B8=20=EC=A0=95?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - offset nil 일 경우 처리 --- .../Sources/NetworkService/Card/CardService.swift | 6 +++--- .../Sources/ViewControllers/Main/FrontViewController.swift | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/NADA-iOS-forRelease/Sources/NetworkService/Card/CardService.swift b/NADA-iOS-forRelease/Sources/NetworkService/Card/CardService.swift index c549c124..b988af10 100644 --- a/NADA-iOS-forRelease/Sources/NetworkService/Card/CardService.swift +++ b/NADA-iOS-forRelease/Sources/NetworkService/Card/CardService.swift @@ -11,7 +11,7 @@ import Moya enum CardService { case cardDetailFetch(cardID: String) case cardCreation(request: CardCreationRequest, image: UIImage) - case cardListFetch(userID: String, isList: Bool, offset: Int) + case cardListFetch(userID: String, isList: Bool, offset: Int?) case cardListEdit(request: CardListEditRequest) case cardDelete(cardID: String) } @@ -102,8 +102,8 @@ extension CardService: TargetType { case .cardListFetch(let userID, let isList, let offset): return .requestParameters(parameters: ["userId": userID, "list": isList, - "offset": offset - ], encoding: URLEncoding.queryString) + "offset": offset ?? ""], + encoding: URLEncoding.queryString) case .cardListEdit(let requestModel): return .requestJSONEncodable(requestModel) } diff --git a/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift b/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift index 5b217e48..908f3515 100644 --- a/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift +++ b/NADA-iOS-forRelease/Sources/ViewControllers/Main/FrontViewController.swift @@ -117,14 +117,15 @@ extension FrontViewController: VerticalCardSwiperDelegate { // MARK: - VerticalCardSwiperDatasource extension FrontViewController: VerticalCardSwiperDatasource { func numberOfCards(verticalCardSwiperView: VerticalCardSwiperView) -> Int { + guard let cardDataList = cardDataList else { return 0 } let count = cardDataList.count return count == 0 ? 1 : count } func cardForItemAt(verticalCardSwiperView: VerticalCardSwiperView, cardForItemAt index: Int) -> CardCell { - if cardDataList.count != 0 { + if cardDataList?.count != 0 { guard let cell = verticalCardSwiperView.dequeueReusableCell(withReuseIdentifier: Const.Xib.mainCardCell, for: index) as? MainCardCell else { return CardCell() } - let cardDataList = cardDataList + guard let cardDataList = cardDataList else { return CardCell() } cell.initCell(cardDataModel: cardDataList[index]) cell.isShareable = true cell.setFrontCard()