From 3d79eea27bb0c17a23caf5708c72835b585cf2e6 Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Tue, 18 Jan 2022 02:52:19 +0900 Subject: [PATCH 1/8] =?UTF-8?q?[Feat]=20#93=20-=20=EC=82=AC=EC=A7=84=20?= =?UTF-8?q?=EC=9D=B8=EC=A6=9D=20=EC=84=9C=EB=B2=84=EC=97=B0=EA=B2=B0=20?= =?UTF-8?q?=EC=B4=88=EA=B8=B0=20=EC=84=B8=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 사진 인증 서버연결 초기 세팅 --- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 8 ++++ .../NetworkModels/Room/AuthUpload.swift | 37 ++++++++++++++++++ .../Room/AuthUploadRequest.swift | 21 ++++++++++ .../Source/NetworkServices/Room/RoomAPI.swift | 34 +++++++++++++++++ .../NetworkServices/Room/RoomService.swift | 17 ++++++++- .../Spark-iOS/Source/SceneDelegate.swift | 2 +- .../Auth/AuthUpload/AuthUploadVC.swift | 38 ++++++++++++++++--- 7 files changed, 148 insertions(+), 9 deletions(-) create mode 100644 Spark-iOS/Spark-iOS/Source/NetworkModels/Room/AuthUpload.swift create mode 100644 Spark-iOS/Spark-iOS/Source/NetworkModels/Room/AuthUploadRequest.swift diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index bcc96525..80b21bd4 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -66,6 +66,8 @@ EBA93A84279082B0009AE771 /* JoinCheck.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EBA93A83279082B0009AE771 /* JoinCheck.storyboard */; }; EBE90FCE2795C23A00157075 /* MyRoomCerti.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE90FCD2795C23A00157075 /* MyRoomCerti.swift */; }; EBE90FD02795C5BF00157075 /* EnterRoom.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE90FCF2795C5BE00157075 /* EnterRoom.swift */; }; + EBE90FD22795D22E00157075 /* AuthUploadRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE90FD12795D22E00157075 /* AuthUploadRequest.swift */; }; + EBE90FD42795D67500157075 /* AuthUpload.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE90FD32795D67500157075 /* AuthUpload.swift */; }; EBEA381D279441E000B5736A /* splash_iOS.json in Resources */ = {isa = PBXBuildFile; fileRef = EBEA381B279441DF00B5736A /* splash_iOS.json */; }; EBEA381F279450B900B5736A /* illust_confetti.json in Resources */ = {isa = PBXBuildFile; fileRef = EBEA381E279450B800B5736A /* illust_confetti.json */; }; EBEA382327945F5A00B5736A /* ic_heart_active.json in Resources */ = {isa = PBXBuildFile; fileRef = EBEA382127945F5A00B5736A /* ic_heart_active.json */; }; @@ -182,6 +184,8 @@ EBA93A83279082B0009AE771 /* JoinCheck.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = JoinCheck.storyboard; sourceTree = ""; }; EBE90FCD2795C23A00157075 /* MyRoomCerti.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyRoomCerti.swift; sourceTree = ""; }; EBE90FCF2795C5BE00157075 /* EnterRoom.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnterRoom.swift; sourceTree = ""; }; + EBE90FD12795D22E00157075 /* AuthUploadRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthUploadRequest.swift; sourceTree = ""; }; + EBE90FD32795D67500157075 /* AuthUpload.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthUpload.swift; sourceTree = ""; }; EBEA381B279441DF00B5736A /* splash_iOS.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = splash_iOS.json; sourceTree = ""; }; EBEA381E279450B800B5736A /* illust_confetti.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = illust_confetti.json; sourceTree = ""; }; EBEA382127945F5A00B5736A /* ic_heart_active.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = ic_heart_active.json; sourceTree = ""; }; @@ -387,6 +391,8 @@ 2BBED12C279539B90052CA5C /* WaitingMember.swift */, EBEA38362794B34300B5736A /* CodeJoinCheck.swift */, EBE90FCF2795C5BE00157075 /* EnterRoom.swift */, + EBE90FD12795D22E00157075 /* AuthUploadRequest.swift */, + EBE90FD32795D67500157075 /* AuthUpload.swift */, ); path = Room; sourceTree = ""; @@ -1007,6 +1013,7 @@ EB625E91278F8E3700C43DE9 /* StorageMoreVC.swift in Sources */, 2BF3AB49279479B8001A9042 /* RoomAPI.swift in Sources */, F8096F3227841FE100B71D38 /* ViewController.swift in Sources */, + EBE90FD22795D22E00157075 /* AuthUploadRequest.swift in Sources */, F8096F042784107D00B71D38 /* AppDelegate.swift in Sources */, 2B985205279031D000CE40A7 /* CreateRoomVC.swift in Sources */, EBEA382F27947C9E00B5736A /* MyRoomService.swift in Sources */, @@ -1048,6 +1055,7 @@ EB9C507D27922F2E00588155 /* LineAnimationView.swift in Sources */, EB625E7B278F271400C43DE9 /* DoingStorageCVC.swift in Sources */, F816F125278E1C920008ED00 /* LoginVC.swift in Sources */, + EBE90FD42795D67500157075 /* AuthUpload.swift in Sources */, F8096F3E2784213700B71D38 /* UIFont+.swift in Sources */, F82F580A279289C4003E4174 /* HomeService.swift in Sources */, EB625E95278F8E7200C43DE9 /* MoreStorageCVC.swift in Sources */, diff --git a/Spark-iOS/Spark-iOS/Source/NetworkModels/Room/AuthUpload.swift b/Spark-iOS/Spark-iOS/Source/NetworkModels/Room/AuthUpload.swift new file mode 100644 index 00000000..7bd19911 --- /dev/null +++ b/Spark-iOS/Spark-iOS/Source/NetworkModels/Room/AuthUpload.swift @@ -0,0 +1,37 @@ +// +// AuthUpload.swift +// Spark-iOS +// +// Created by Junho Lee on 2022/01/18. +// + +import Foundation + +// MARK: - AuthUpload +struct AuthUpload: Codable { + let status: Int + let success: Bool + let message: String + let data: AuthUploadData? +} + +// MARK: - DataClass +struct AuthUploadData: Codable { + let userID: Int + let nickname: String + let profileImg: String? + let roomID: Int + let roomName: String + let recordID, day: Int + let certifyingImg: String? + let timerRecord: String? + + enum CodingKeys: String, CodingKey { + case userID = "userId" + case nickname, profileImg + case roomID = "roomId" + case roomName + case recordID = "recordId" + case day, certifyingImg, timerRecord + } +} diff --git a/Spark-iOS/Spark-iOS/Source/NetworkModels/Room/AuthUploadRequest.swift b/Spark-iOS/Spark-iOS/Source/NetworkModels/Room/AuthUploadRequest.swift new file mode 100644 index 00000000..d623bd53 --- /dev/null +++ b/Spark-iOS/Spark-iOS/Source/NetworkModels/Room/AuthUploadRequest.swift @@ -0,0 +1,21 @@ +// +// AuthUpload.swift +// Spark-iOS +// +// Created by Junho Lee on 2022/01/18. +// + +import Foundation + +//// MARK: - AuthUploadRequest +//struct AuthUploadRequest: Codable { +// let status: Int +// let success: Bool +// let message: String +// let data: AuthUploadData? +//} +// +//// MARK: - DataClass +//struct AuthUploadData: Codable { +// +//} diff --git a/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomAPI.swift b/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomAPI.swift index 3413f077..09e7c8fe 100644 --- a/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomAPI.swift +++ b/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomAPI.swift @@ -8,6 +8,7 @@ import Foundation import Moya +import UIKit public class RoomAPI { @@ -152,4 +153,37 @@ public class RoomAPI { return .networkFail } } + + func authUpload(roomID: Int, timer: String, image: UIImage, completion: @escaping(NetworkResult) -> Void) { + roomProvider.request(.authUpload(roomID: roomID, timer: timer, image: image)) { result in + switch result { + case .success(let response): + let statusCode = response.statusCode + let data = response.data + let networkResult = self.judgeAuthUploadStatus(by: statusCode, data) + completion(networkResult) + + case .failure(let err): + print(err) + } + } + } + + private func judgeAuthUploadStatus(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.message) + case 500: + return .serverErr + default: + return .networkFail + } + } } diff --git a/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomService.swift b/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomService.swift index 6c37a08b..d3a57d62 100644 --- a/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomService.swift +++ b/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomService.swift @@ -14,6 +14,7 @@ enum RoomService { case waitingMemberFetch(roomID: Int) case codeJoinCheckFetch(code: String) case enterRoom(roomID: Int) + case authUpload(roomID: Int, timer: String, image: UIImage) } extension RoomService: TargetType { @@ -31,6 +32,8 @@ extension RoomService: TargetType { return "/room/code/\(code)" case .enterRoom(let roomID): return "/room/\(roomID)/enter" + case .authUpload(let roomID, _, _): + return "/room/\(roomID)/record" } } @@ -40,7 +43,7 @@ extension RoomService: TargetType { return .get case .waitingMemberFetch: return .get - case .enterRoom: + case .enterRoom, .authUpload: return .post } } @@ -53,12 +56,22 @@ extension RoomService: TargetType { return .requestPlain case .enterRoom(let roomID): return .requestParameters(parameters:["roomId": roomID], encoding: JSONEncoding.default) + case .authUpload(let roomID, let timer, let image): + var multiPartData: [Moya.MultipartFormData] = [] + + let timerData = timer.data(using: .utf8) ?? Data() + multiPartData.append(MultipartFormData(provider: .data(timerData), name: "timer")) + + let imageData = MultipartFormData(provider: .data(image.pngData() ?? Data()), name: "image", fileName: "image.jpeg", mimeType: "image/jpeg") + multiPartData.append(imageData) + + return .uploadMultipart(multiPartData) } } var headers: [String : String]? { switch self { - case .waitingFetch, .codeJoinCheckFetch, .enterRoom: + case .waitingFetch, .codeJoinCheckFetch, .enterRoom, .authUpload: return Const.Header.authrizationHeader case .waitingMemberFetch: return Const.Header.authrizationHeader diff --git a/Spark-iOS/Spark-iOS/Source/SceneDelegate.swift b/Spark-iOS/Spark-iOS/Source/SceneDelegate.swift index dffce284..6f6ceddd 100644 --- a/Spark-iOS/Spark-iOS/Source/SceneDelegate.swift +++ b/Spark-iOS/Spark-iOS/Source/SceneDelegate.swift @@ -18,7 +18,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { window = UIWindow(frame: windowScene.coordinateSpace.bounds) window?.windowScene = windowScene - let rootViewController = UIStoryboard(name: Const.Storyboard.Name.codeJoin, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.codeJoin) + let rootViewController = UIStoryboard(name: Const.Storyboard.Name.authUpload, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.authUpload) window?.rootViewController = rootViewController window?.makeKeyAndVisible() } diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Auth/AuthUpload/AuthUploadVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Auth/AuthUpload/AuthUploadVC.swift index 7abdd344..db37d881 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Auth/AuthUpload/AuthUploadVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Auth/AuthUpload/AuthUploadVC.swift @@ -217,12 +217,7 @@ extension AuthUploadVC { // 업로드 @objc func touchUploadButton() { - guard let popupVC = UIStoryboard(name: Const.Storyboard.Name.completeAuth, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.completeAuth) as? CompleteAuthVC else {return} - - popupVC.modalTransitionStyle = .crossDissolve - popupVC.modalPresentationStyle = .overFullScreen - - present(popupVC, animated: true, completion: nil) + authUploadWithAPI() } } @@ -318,3 +313,34 @@ extension AuthUploadVC { } } } + +// MARK: Network + +extension AuthUploadVC { + func authUploadWithAPI() { + RoomAPI.shared.authUpload(roomID: 27, timer: "15:20:30", image: UIImage.strokedCheckmark) { response in + switch response { + case .success(let data): + if let authUpload = data as? EnterRoom { + print(authUpload) + + guard let popupVC = UIStoryboard(name: Const.Storyboard.Name.completeAuth, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.completeAuth) as? CompleteAuthVC else {return} + + popupVC.modalTransitionStyle = .crossDissolve + popupVC.modalPresentationStyle = .overFullScreen + + self.present(popupVC, animated: true, completion: nil) + } + case .requestErr(let message): + print(message) + print("requestErr") + case .pathErr: + print("pathErr") + case .serverErr: + print("serverErr") + case .networkFail: + print("networkFail") + } + } + } +} From 7423f278cb0059dc3758b884e6250f9373eee843 Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Tue, 18 Jan 2022 05:57:22 +0900 Subject: [PATCH 2/8] =?UTF-8?q?[Feat]=20#93=20-=20=EC=9D=B8=EC=A6=9D?= =?UTF-8?q?=EC=82=AC=EC=A7=84=20=EC=84=9C=EB=B2=84=20=EC=97=B0=EA=B2=B0=20?= =?UTF-8?q?=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 인증사진 서버 연결 완료 --- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 4 ---- .../NetworkModels/Room/AuthUpload.swift | 8 ------- .../Room/AuthUploadRequest.swift | 21 ------------------- .../NetworkServices/Room/RoomService.swift | 12 ++++++----- .../Auth/AuthUpload/AuthUploadVC.swift | 4 ++-- 5 files changed, 9 insertions(+), 40 deletions(-) delete mode 100644 Spark-iOS/Spark-iOS/Source/NetworkModels/Room/AuthUploadRequest.swift diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index 3c2ef02b..c135be63 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -69,7 +69,6 @@ EBA93A82279082A5009AE771 /* CodeJoin.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EBA93A81279082A5009AE771 /* CodeJoin.storyboard */; }; EBA93A84279082B0009AE771 /* JoinCheck.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EBA93A83279082B0009AE771 /* JoinCheck.storyboard */; }; EBE90FCE2795C23A00157075 /* MyRoomCerti.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE90FCD2795C23A00157075 /* MyRoomCerti.swift */; }; - EBE90FD22795D22E00157075 /* AuthUploadRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE90FD12795D22E00157075 /* AuthUploadRequest.swift */; }; EBE90FD42795D67500157075 /* AuthUpload.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE90FD32795D67500157075 /* AuthUpload.swift */; }; EBEA381D279441E000B5736A /* splash_iOS.json in Resources */ = {isa = PBXBuildFile; fileRef = EBEA381B279441DF00B5736A /* splash_iOS.json */; }; EBEA381F279450B900B5736A /* illust_confetti.json in Resources */ = {isa = PBXBuildFile; fileRef = EBEA381E279450B800B5736A /* illust_confetti.json */; }; @@ -190,7 +189,6 @@ EBA93A81279082A5009AE771 /* CodeJoin.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = CodeJoin.storyboard; sourceTree = ""; }; EBA93A83279082B0009AE771 /* JoinCheck.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = JoinCheck.storyboard; sourceTree = ""; }; EBE90FCD2795C23A00157075 /* MyRoomCerti.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyRoomCerti.swift; sourceTree = ""; }; - EBE90FD12795D22E00157075 /* AuthUploadRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthUploadRequest.swift; sourceTree = ""; }; EBE90FD32795D67500157075 /* AuthUpload.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthUpload.swift; sourceTree = ""; }; EBEA381B279441DF00B5736A /* splash_iOS.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = splash_iOS.json; sourceTree = ""; }; EBEA381E279450B800B5736A /* illust_confetti.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = illust_confetti.json; sourceTree = ""; }; @@ -414,7 +412,6 @@ 2BF3AB4B27947C50001A9042 /* WaitingRoom.swift */, 2BBED12C279539B90052CA5C /* WaitingMember.swift */, EBEA38362794B34300B5736A /* CodeJoinCheck.swift */, - EBE90FD12795D22E00157075 /* AuthUploadRequest.swift */, EBE90FD32795D67500157075 /* AuthUpload.swift */, ); path = Room; @@ -1039,7 +1036,6 @@ EB625E91278F8E3700C43DE9 /* StorageMoreVC.swift in Sources */, 2BF3AB49279479B8001A9042 /* RoomAPI.swift in Sources */, F8096F3227841FE100B71D38 /* ViewController.swift in Sources */, - EBE90FD22795D22E00157075 /* AuthUploadRequest.swift in Sources */, F8096F042784107D00B71D38 /* AppDelegate.swift in Sources */, 2B985205279031D000CE40A7 /* CreateRoomVC.swift in Sources */, EBEA382F27947C9E00B5736A /* MyRoomService.swift in Sources */, diff --git a/Spark-iOS/Spark-iOS/Source/NetworkModels/Room/AuthUpload.swift b/Spark-iOS/Spark-iOS/Source/NetworkModels/Room/AuthUpload.swift index 7bd19911..eecb6771 100644 --- a/Spark-iOS/Spark-iOS/Source/NetworkModels/Room/AuthUpload.swift +++ b/Spark-iOS/Spark-iOS/Source/NetworkModels/Room/AuthUpload.swift @@ -9,14 +9,6 @@ import Foundation // MARK: - AuthUpload struct AuthUpload: Codable { - let status: Int - let success: Bool - let message: String - let data: AuthUploadData? -} - -// MARK: - DataClass -struct AuthUploadData: Codable { let userID: Int let nickname: String let profileImg: String? diff --git a/Spark-iOS/Spark-iOS/Source/NetworkModels/Room/AuthUploadRequest.swift b/Spark-iOS/Spark-iOS/Source/NetworkModels/Room/AuthUploadRequest.swift deleted file mode 100644 index d623bd53..00000000 --- a/Spark-iOS/Spark-iOS/Source/NetworkModels/Room/AuthUploadRequest.swift +++ /dev/null @@ -1,21 +0,0 @@ -// -// AuthUpload.swift -// Spark-iOS -// -// Created by Junho Lee on 2022/01/18. -// - -import Foundation - -//// MARK: - AuthUploadRequest -//struct AuthUploadRequest: Codable { -// let status: Int -// let success: Bool -// let message: String -// let data: AuthUploadData? -//} -// -//// MARK: - DataClass -//struct AuthUploadData: Codable { -// -//} diff --git a/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomService.swift b/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomService.swift index 5948df8c..7c98a2fd 100644 --- a/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomService.swift +++ b/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomService.swift @@ -59,21 +59,21 @@ extension RoomService: TargetType { case .waitingMemberFetch: return .requestPlain case .enterRoom(let roomID): - return .requestParameters(parameters:["roomId": roomID], encoding: JSONEncoding.default) - case .authUpload(let roomID, let timer, let image): + return .requestParameters(parameters: ["roomId": roomID], encoding: JSONEncoding.default) + case .authUpload(_, let timer, let image): var multiPartData: [Moya.MultipartFormData] = [] let timerData = timer.data(using: .utf8) ?? Data() - multiPartData.append(MultipartFormData(provider: .data(timerData), name: "timer")) + multiPartData.append(MultipartFormData(provider: .data(timerData), name: "timerRecord")) - let imageData = MultipartFormData(provider: .data(image.pngData() ?? Data()), name: "image", fileName: "image.jpeg", mimeType: "image/jpeg") + let imageData = MultipartFormData(provider: .data(image.jpegData(compressionQuality: 1) ?? Data()), name: "image", fileName: "image", mimeType: "image/jpeg") multiPartData.append(imageData) return .uploadMultipart(multiPartData) } } - var headers: [String : String]? { + var headers: [String: String]? { switch self { case .waitingFetch: return Const.Header.authrizationHeader @@ -83,6 +83,8 @@ extension RoomService: TargetType { return Const.Header.authrizationHeader case .waitingMemberFetch: return Const.Header.authrizationHeader + case .authUpload: + return Const.Header.authrizationHeader } } } diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Auth/AuthUpload/AuthUploadVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Auth/AuthUpload/AuthUploadVC.swift index db37d881..53d3ddbb 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Auth/AuthUpload/AuthUploadVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Auth/AuthUpload/AuthUploadVC.swift @@ -318,10 +318,10 @@ extension AuthUploadVC { extension AuthUploadVC { func authUploadWithAPI() { - RoomAPI.shared.authUpload(roomID: 27, timer: "15:20:30", image: UIImage.strokedCheckmark) { response in + RoomAPI.shared.authUpload(roomID: 31, timer: "15:20:30", image: uploadImageView.image ?? UIImage()) { response in switch response { case .success(let data): - if let authUpload = data as? EnterRoom { + if let authUpload = data as? AuthUpload { print(authUpload) guard let popupVC = UIStoryboard(name: Const.Storyboard.Name.completeAuth, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.completeAuth) as? CompleteAuthVC else {return} From e92beafccfad96dbe6f16268f1e60bc928722ae9 Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Tue, 18 Jan 2022 06:30:30 +0900 Subject: [PATCH 3/8] =?UTF-8?q?[Chore]=20#97=20-=20=EC=8A=A4=ED=8C=8C?= =?UTF-8?q?=ED=81=AC=20=EB=B3=B4=EB=82=B4=EA=B8=B0=20=ED=8C=9D=EC=97=85=20?= =?UTF-8?q?=EC=84=B8=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 8 +++++ .../HabitRoom/SendSpark.storyboard | 33 +++++++++++++++++++ .../HabitRoom/SendSparkVC.swift | 16 +++++++++ 3 files changed, 57 insertions(+) create mode 100644 Spark-iOS/Spark-iOS/Resource/Storyboards/HabitRoom/SendSpark.storyboard create mode 100644 Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/SendSparkVC.swift diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index c135be63..2fe359af 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -70,6 +70,8 @@ EBA93A84279082B0009AE771 /* JoinCheck.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EBA93A83279082B0009AE771 /* JoinCheck.storyboard */; }; EBE90FCE2795C23A00157075 /* MyRoomCerti.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE90FCD2795C23A00157075 /* MyRoomCerti.swift */; }; EBE90FD42795D67500157075 /* AuthUpload.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE90FD32795D67500157075 /* AuthUpload.swift */; }; + EBE90FDA2796128800157075 /* SendSparkVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE90FD92796128800157075 /* SendSparkVC.swift */; }; + EBE90FDC279612CA00157075 /* SendSpark.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EBE90FDB279612CA00157075 /* SendSpark.storyboard */; }; EBEA381D279441E000B5736A /* splash_iOS.json in Resources */ = {isa = PBXBuildFile; fileRef = EBEA381B279441DF00B5736A /* splash_iOS.json */; }; EBEA381F279450B900B5736A /* illust_confetti.json in Resources */ = {isa = PBXBuildFile; fileRef = EBEA381E279450B800B5736A /* illust_confetti.json */; }; EBEA382327945F5A00B5736A /* ic_heart_active.json in Resources */ = {isa = PBXBuildFile; fileRef = EBEA382127945F5A00B5736A /* ic_heart_active.json */; }; @@ -190,6 +192,8 @@ EBA93A83279082B0009AE771 /* JoinCheck.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = JoinCheck.storyboard; sourceTree = ""; }; EBE90FCD2795C23A00157075 /* MyRoomCerti.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyRoomCerti.swift; sourceTree = ""; }; EBE90FD32795D67500157075 /* AuthUpload.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthUpload.swift; sourceTree = ""; }; + EBE90FD92796128800157075 /* SendSparkVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendSparkVC.swift; sourceTree = ""; }; + EBE90FDB279612CA00157075 /* SendSpark.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = SendSpark.storyboard; sourceTree = ""; }; EBEA381B279441DF00B5736A /* splash_iOS.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = splash_iOS.json; sourceTree = ""; }; EBEA381E279450B800B5736A /* illust_confetti.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = illust_confetti.json; sourceTree = ""; }; EBEA382127945F5A00B5736A /* ic_heart_active.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = ic_heart_active.json; sourceTree = ""; }; @@ -505,6 +509,7 @@ children = ( EB9C50832792A61D00588155 /* HabitAuthVC.swift */, EB9C50892792A86D00588155 /* CompleteAuthVC.swift */, + EBE90FD92796128800157075 /* SendSparkVC.swift */, ); path = HabitRoom; sourceTree = ""; @@ -514,6 +519,7 @@ children = ( EB9C50872792A67B00588155 /* HabitAuth.storyboard */, EB9C508B2792A90400588155 /* CompleteAuth.storyboard */, + EBE90FDB279612CA00157075 /* SendSpark.storyboard */, ); path = HabitRoom; sourceTree = ""; @@ -943,6 +949,7 @@ 2B947204278CB00E005484C5 /* Futura Medium Italic.otf in Resources */, 2B9C6BCB279277D600CD914F /* GoalWriting.storyboard in Resources */, F82B2E0E278ED01F00219628 /* Splash.storyboard in Resources */, + EBE90FDC279612CA00157075 /* SendSpark.storyboard in Resources */, F80A3E51278C1BCE00728E07 /* Feed.storyboard in Resources */, EBEA383527948C2D00B5736A /* ticket_welcome.json in Resources */, F8FAA9772790346000C4190F /* HomeWaitingCVC.xib in Resources */, @@ -1066,6 +1073,7 @@ 2BBED1372795CDFE0052CA5C /* FeedEmptyCVC.swift in Sources */, 2B9C6BCE2792781F00CD914F /* GoalWritingVC.swift in Sources */, F80A3E4F278C18BA00728E07 /* MainTBC.swift in Sources */, + EBE90FDA2796128800157075 /* SendSparkVC.swift in Sources */, EBEA383927953BC700B5736A /* Lottie.swift in Sources */, F82F57FD2792847D003E4174 /* GenericResponse.swift in Sources */, F80A3E57278C1C2700728E07 /* FeedVC.swift in Sources */, diff --git a/Spark-iOS/Spark-iOS/Resource/Storyboards/HabitRoom/SendSpark.storyboard b/Spark-iOS/Spark-iOS/Resource/Storyboards/HabitRoom/SendSpark.storyboard new file mode 100644 index 00000000..452ed4d5 --- /dev/null +++ b/Spark-iOS/Spark-iOS/Resource/Storyboards/HabitRoom/SendSpark.storyboard @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/SendSparkVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/SendSparkVC.swift new file mode 100644 index 00000000..1abcd9b2 --- /dev/null +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/SendSparkVC.swift @@ -0,0 +1,16 @@ +// +// SendSparkVC.swift +// Spark-iOS +// +// Created by Junho Lee on 2022/01/18. +// + +import UIKit + +class SendSparkVC: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + } +} From f88553d06e52838894ed1587395039dc2a85583e Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Tue, 18 Jan 2022 07:05:18 +0900 Subject: [PATCH 4/8] =?UTF-8?q?[Design]=20#97=20-=20=EC=8A=A4=ED=8C=8C?= =?UTF-8?q?=ED=81=AC=20=EB=B3=B4=EB=82=B4=EA=B8=B0=20=EB=B7=B0=20UI?= =?UTF-8?q?=EB=B0=8F=20=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 스파크 보내기 뷰 UI및 레이아웃 --- .../Resource/Constants/Storyboard.swift | 1 + .../Resource/Constants/ViewController.swift | 1 + .../HabitRoom/SendSpark.storyboard | 202 +++++++++++++++++- .../Spark-iOS/Source/SceneDelegate.swift | 2 +- .../HabitRoom/SendSparkVC.swift | 27 +++ 5 files changed, 231 insertions(+), 2 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Resource/Constants/Storyboard.swift b/Spark-iOS/Spark-iOS/Resource/Constants/Storyboard.swift index f8ab4eb1..bb5b3b36 100644 --- a/Spark-iOS/Spark-iOS/Resource/Constants/Storyboard.swift +++ b/Spark-iOS/Spark-iOS/Resource/Constants/Storyboard.swift @@ -29,6 +29,7 @@ extension Const { static let authUpload = "AuthUpload" static let authTimer = "AuthTimer" static let resetPopup = "ResetPopup" + static let sendSpark = "SendSpark" } } } diff --git a/Spark-iOS/Spark-iOS/Resource/Constants/ViewController.swift b/Spark-iOS/Spark-iOS/Resource/Constants/ViewController.swift index 5b4f322a..915300dc 100644 --- a/Spark-iOS/Spark-iOS/Resource/Constants/ViewController.swift +++ b/Spark-iOS/Spark-iOS/Resource/Constants/ViewController.swift @@ -29,6 +29,7 @@ extension Const { static let authUpload = "AuthUploadVC" static let authTimer = "AuthTimerVC" static let resetPopup = "ResetPopupVC" + static let sendSpark = "SendSparkVC" } } } diff --git a/Spark-iOS/Spark-iOS/Resource/Storyboards/HabitRoom/SendSpark.storyboard b/Spark-iOS/Spark-iOS/Resource/Storyboards/HabitRoom/SendSpark.storyboard index 452ed4d5..4715db49 100644 --- a/Spark-iOS/Spark-iOS/Resource/Storyboards/HabitRoom/SendSpark.storyboard +++ b/Spark-iOS/Spark-iOS/Resource/Storyboards/HabitRoom/SendSpark.storyboard @@ -4,10 +4,19 @@ + + + + NotoSansKR-Medium + + + NotoSansKR-Regular + + @@ -16,16 +25,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + diff --git a/Spark-iOS/Spark-iOS/Source/SceneDelegate.swift b/Spark-iOS/Spark-iOS/Source/SceneDelegate.swift index 6f6ceddd..5d5b01eb 100644 --- a/Spark-iOS/Spark-iOS/Source/SceneDelegate.swift +++ b/Spark-iOS/Spark-iOS/Source/SceneDelegate.swift @@ -18,7 +18,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { window = UIWindow(frame: windowScene.coordinateSpace.bounds) window?.windowScene = windowScene - let rootViewController = UIStoryboard(name: Const.Storyboard.Name.authUpload, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.authUpload) + let rootViewController = UIStoryboard(name: Const.Storyboard.Name.sendSpark, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.sendSpark) window?.rootViewController = rootViewController window?.makeKeyAndVisible() } diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/SendSparkVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/SendSparkVC.swift index 1abcd9b2..e5ed3c9f 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/SendSparkVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/SendSparkVC.swift @@ -9,8 +9,35 @@ import UIKit class SendSparkVC: UIViewController { + // MARK: IBoutlet properties + + @IBOutlet weak var firstButton: UIButton! + @IBOutlet weak var secondButton: UIButton! + @IBOutlet weak var thirdButton: UIButton! + @IBOutlet weak var fourthButton: UIButton! + + // MARK: Life Cycle + override func viewDidLoad() { super.viewDidLoad() + setUI() + } +} + +// MARK: Methods + +extension SendSparkVC { + private func setUI() { + view.backgroundColor = .sparkBlack.withAlphaComponent(0.8) + tabBarController?.tabBar.isHidden = true + + [firstButton, secondButton, thirdButton, fourthButton].forEach { + $0?.tintColor = .sparkLightPinkred + $0?.layer.borderColor = UIColor.sparkLightPinkred.cgColor + $0?.layer.cornerRadius = 2 + $0?.layer.borderWidth = 1 + $0?.setTitleColor(.sparkLightPinkred, for: .normal) + } } } From f530e15008555438812eae5012f370363b01d34b Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Tue, 18 Jan 2022 17:57:57 +0900 Subject: [PATCH 5/8] =?UTF-8?q?[Feat]=20#97=20-=20=EC=8A=A4=ED=8C=8C?= =?UTF-8?q?=ED=81=AC=20=EB=B3=B4=EB=82=B4=EA=B8=B0=20=EB=B7=B0=20=EB=B2=84?= =?UTF-8?q?=ED=8A=BC=20=EC=84=A0=ED=83=9D=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 스파크 보내기 뷰 버튼 선택기능 구현 --- .../HabitRoom/SendSpark.storyboard | 156 +----------------- .../Source/Classes/CarouselLayout.swift | 2 +- .../HabitRoom/SendSparkVC.swift | 134 ++++++++++++++- .../ViewControllers/TabBar/StorageVC.swift | 2 +- 4 files changed, 129 insertions(+), 165 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Resource/Storyboards/HabitRoom/SendSpark.storyboard b/Spark-iOS/Spark-iOS/Resource/Storyboards/HabitRoom/SendSpark.storyboard index 4715db49..3d20a04a 100644 --- a/Spark-iOS/Spark-iOS/Resource/Storyboards/HabitRoom/SendSpark.storyboard +++ b/Spark-iOS/Spark-iOS/Resource/Storyboards/HabitRoom/SendSpark.storyboard @@ -41,159 +41,12 @@ - - - - - - - - - - - - @@ -208,10 +61,8 @@ - - - - + + @@ -223,9 +74,6 @@ - - - diff --git a/Spark-iOS/Spark-iOS/Source/Classes/CarouselLayout.swift b/Spark-iOS/Spark-iOS/Source/Classes/CarouselLayout.swift index 31f9c253..691ba6a9 100644 --- a/Spark-iOS/Spark-iOS/Source/Classes/CarouselLayout.swift +++ b/Spark-iOS/Spark-iOS/Source/Classes/CarouselLayout.swift @@ -117,5 +117,5 @@ class CarouselLayout: UICollectionViewFlowLayout { } class MyButton: UIButton { - public var statusCV: Int? + public var statusCV: Int = -1 } diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/SendSparkVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/SendSparkVC.swift index e5ed3c9f..2730d6fc 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/SendSparkVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/SendSparkVC.swift @@ -9,12 +9,18 @@ import UIKit class SendSparkVC: UIViewController { + // MARK: Properties + var selectedIndex: Int = -1 + var selectedMessage: String = "" + var firstButton = MyButton() + var secondButton = MyButton() + var thirdButton = MyButton() + var fourthButton = MyButton() + // MARK: IBoutlet properties - @IBOutlet weak var firstButton: UIButton! - @IBOutlet weak var secondButton: UIButton! - @IBOutlet weak var thirdButton: UIButton! - @IBOutlet weak var fourthButton: UIButton! + @IBOutlet weak var popUpView: UIView! + @IBOutlet weak var guideLabel: UILabel! // MARK: Life Cycle @@ -22,6 +28,8 @@ class SendSparkVC: UIViewController { super.viewDidLoad() setUI() + setLayout() + setAddTargets(firstButton, secondButton, thirdButton, fourthButton) } } @@ -33,11 +41,119 @@ extension SendSparkVC { tabBarController?.tabBar.isHidden = true [firstButton, secondButton, thirdButton, fourthButton].forEach { - $0?.tintColor = .sparkLightPinkred - $0?.layer.borderColor = UIColor.sparkLightPinkred.cgColor - $0?.layer.cornerRadius = 2 - $0?.layer.borderWidth = 1 - $0?.setTitleColor(.sparkLightPinkred, for: .normal) + $0.tintColor = .sparkLightPinkred + $0.layer.borderColor = UIColor.sparkLightPinkred.cgColor + $0.layer.cornerRadius = 2 + $0.layer.borderWidth = 1 + $0.setTitleColor(.sparkLightPinkred, for: .normal) + } + + firstButton.setTitle("👊 아자아자 파이팅!", for: .normal) + secondButton.setTitle("🔥오늘 안 해? 같이 해!", for: .normal) + thirdButton.setTitle("👉 너만 하면 돼!", for: .normal) + fourthButton.setTitle("👍 얼마 안 남았어, 어서 하자!", for: .normal) + + firstButton.statusCV = 1 + secondButton.statusCV = 2 + thirdButton.statusCV = 3 + fourthButton.statusCV = 4 + } + + private func setLayout() { + view.addSubviews([firstButton, secondButton, thirdButton, fourthButton]) + + firstButton.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalTo(guideLabel.snp.bottom).offset(20) + make.height.equalTo(36) + make.width.equalTo(170) + } + + secondButton.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalTo(firstButton.snp.bottom).offset(20) + make.height.equalTo(36) + make.width.equalTo(186) + } + + thirdButton.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalTo(secondButton.snp.bottom).offset(20) + make.height.equalTo(36) + make.width.equalTo(147) + } + + fourthButton.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalTo(thirdButton.snp.bottom).offset(20) + make.height.equalTo(36) + make.width.equalTo(230) + } + } + + // 버튼 타겟 설정 + private func setAddTargets(_ buttons: UIButton...) { + for button in buttons { + button.addTarget(self, action: #selector(setSelectedButton), for: .touchUpInside) + } + } + + // MARK: - @objc Function + + @objc func setSelectedButton(sender: MyButton) { + let status = sender.statusCV + selectedIndex = status + sender.setTitleColor(.sparkDarkPinkred, for: .normal) + sender.backgroundColor = .sparkMostLightPinkred + sender.titleLabel?.backgroundColor = .sparkMostLightPinkred + sender.layer.borderColor = UIColor.sparkDarkPinkred.cgColor + selectedMessage = sender.titleLabel?.text ?? "" + print(selectedMessage) + + switch status { + case 1: + [firstButton, secondButton, thirdButton, fourthButton].forEach { + if $0.statusCV != 1 { + $0.tintColor = .sparkLightPinkred + $0.layer.borderColor = UIColor.sparkLightPinkred.cgColor + $0.setTitleColor(.sparkLightPinkred, for: .normal) + $0.backgroundColor = .sparkWhite + $0.titleLabel?.backgroundColor = .sparkWhite + } + } + + case 2: + [firstButton, secondButton, thirdButton, fourthButton].forEach { + if $0.statusCV != 2 { + $0.tintColor = .sparkLightPinkred + $0.layer.borderColor = UIColor.sparkLightPinkred.cgColor + $0.setTitleColor(.sparkLightPinkred, for: .normal) + $0.backgroundColor = .sparkWhite + $0.titleLabel?.backgroundColor = .sparkWhite + } + } + + case 3: + [firstButton, secondButton, thirdButton, fourthButton].forEach { + if $0.statusCV != 3 { + $0.tintColor = .sparkLightPinkred + $0.layer.borderColor = UIColor.sparkLightPinkred.cgColor + $0.setTitleColor(.sparkLightPinkred, for: .normal) + $0.backgroundColor = .sparkWhite + $0.titleLabel?.backgroundColor = .sparkWhite + } + } + + default: + [firstButton, secondButton, thirdButton, fourthButton].forEach { + if $0.statusCV != 4 { + $0.tintColor = .sparkLightPinkred + $0.layer.borderColor = UIColor.sparkLightPinkred.cgColor + $0.setTitleColor(.sparkLightPinkred, for: .normal) + $0.backgroundColor = .sparkWhite + $0.titleLabel?.backgroundColor = .sparkWhite + } + } } } } diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/TabBar/StorageVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/TabBar/StorageVC.swift index b0940859..f25c298a 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/TabBar/StorageVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/TabBar/StorageVC.swift @@ -280,7 +280,7 @@ extension StorageVC { // MARK: - @objc Function @objc func changeCollectionView(sender: MyButton) { - let status: Int = (sender.statusCV)! + let status: Int = (sender.statusCV) switch status { case 1: DoingCV.isHidden = true From 04bdf6e11caad0b034a6186ad24e02c7f149c74f Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Tue, 18 Jan 2022 18:06:15 +0900 Subject: [PATCH 6/8] =?UTF-8?q?[Feat]=20#97=20-=20=EC=BD=94=EB=93=9C?= =?UTF-8?q?=EB=A1=9C=20=EB=8C=80=EA=B8=B0=EB=B0=A9=20=ED=99=95=EC=9D=B8=20?= =?UTF-8?q?=ED=99=94=EB=A9=B4=EC=A0=84=ED=99=98=20=EB=B0=A9=EC=8B=9D=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20=EB=B0=8F=20=EC=82=AC=EC=A7=84=EC=9D=B8?= =?UTF-8?q?=EC=A6=9D=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 코드로 대기방 확인 화면전환 방식 변경 및 사진인증 코드 수정 --- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 2 +- .../ViewControllers/Auth/AuthUpload/AuthUploadVC.swift | 6 +++++- .../Source/ViewControllers/CodeJoin/CodeJoinVC.swift | 5 +++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index 2fe359af..9f495c83 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -378,8 +378,8 @@ 2BE5D80927930A0F007A544D /* AuthTimer */ = { isa = PBXGroup; children = ( - 2BE5D80727930A06007A544D /* AuthTimerVC.swift */, 2BE5D81527932F31007A544D /* ResetPopupVC.swift */, + 2BE5D80727930A06007A544D /* AuthTimerVC.swift */, ); path = AuthTimer; sourceTree = ""; diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Auth/AuthUpload/AuthUploadVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Auth/AuthUpload/AuthUploadVC.swift index 53d3ddbb..0458097b 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Auth/AuthUpload/AuthUploadVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Auth/AuthUpload/AuthUploadVC.swift @@ -21,6 +21,7 @@ class AuthUploadVC: UIViewController { // MARK: - Properties var vcType: VCCase = .albumTimer + var roomID: Int = -1 var uploadImageView = UIImageView() let fadeImageView = UIImageView() var uploadImage = UIImage() @@ -217,6 +218,7 @@ extension AuthUploadVC { // 업로드 @objc func touchUploadButton() { + uploadButton.isEnabled = false authUploadWithAPI() } } @@ -318,7 +320,7 @@ extension AuthUploadVC { extension AuthUploadVC { func authUploadWithAPI() { - RoomAPI.shared.authUpload(roomID: 31, timer: "15:20:30", image: uploadImageView.image ?? UIImage()) { response in + RoomAPI.shared.authUpload(roomID: roomID, timer: timerLabel.text ?? "", image: uploadImageView.image ?? UIImage()) { response in switch response { case .success(let data): if let authUpload = data as? AuthUpload { @@ -330,6 +332,8 @@ extension AuthUploadVC { popupVC.modalPresentationStyle = .overFullScreen self.present(popupVC, animated: true, completion: nil) + + self.uploadButton.isEnabled = true } case .requestErr(let message): print(message) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/CodeJoin/CodeJoinVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/CodeJoin/CodeJoinVC.swift index c62526b1..5efe96fe 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/CodeJoin/CodeJoinVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/CodeJoin/CodeJoinVC.swift @@ -185,11 +185,12 @@ extension CodeJoinVC { let nextSB = UIStoryboard.init(name: Const.Storyboard.Name.joinCheck, bundle: nil) guard let nextVC = nextSB.instantiateViewController(identifier: Const.ViewController.Identifier.joinCheck) as? JoinCheckVC else {return} - nextVC.creatorName = codeWaiting.creatorName - nextVC.roomName = "\(codeWaiting.roomName)님이 초대한 방" + nextVC.creatorName = "\(codeWaiting.creatorName)님이 초대한 방" + nextVC.roomName = codeWaiting.roomName nextVC.roomID = codeWaiting.roomID nextVC.modalPresentationStyle = .fullScreen + nextVC.modalTransitionStyle = .crossDissolve self.present(nextVC, animated: false, completion: nil) } case .requestErr(let message): From 3e2c27e852c1b34f3f41133b885f99e488a3823f Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Tue, 18 Jan 2022 20:53:51 +0900 Subject: [PATCH 7/8] =?UTF-8?q?[Fix]=20#97=20-=20=EC=BD=94=EB=93=9C?= =?UTF-8?q?=EB=A6=AC=EB=B7=B0=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 코드리뷰 반영 --- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 4 +++ .../Source/Classes/CarouselLayout.swift | 4 --- .../Source/Classes/StatusButton.swift | 12 +++++++ .../NetworkServices/Room/RoomService.swift | 4 ++- .../Auth/AuthUpload/AuthUploadVC.swift | 12 +++---- .../HabitRoom/SendSparkVC.swift | 34 +++++++++---------- .../ViewControllers/TabBar/StorageVC.swift | 18 +++++----- 7 files changed, 51 insertions(+), 37 deletions(-) create mode 100644 Spark-iOS/Spark-iOS/Source/Classes/StatusButton.swift diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index 9f495c83..43ff9740 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -72,6 +72,7 @@ EBE90FD42795D67500157075 /* AuthUpload.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE90FD32795D67500157075 /* AuthUpload.swift */; }; EBE90FDA2796128800157075 /* SendSparkVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE90FD92796128800157075 /* SendSparkVC.swift */; }; EBE90FDC279612CA00157075 /* SendSpark.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EBE90FDB279612CA00157075 /* SendSpark.storyboard */; }; + EBE90FDE2796C45900157075 /* StatusButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE90FDD2796C45900157075 /* StatusButton.swift */; }; EBEA381D279441E000B5736A /* splash_iOS.json in Resources */ = {isa = PBXBuildFile; fileRef = EBEA381B279441DF00B5736A /* splash_iOS.json */; }; EBEA381F279450B900B5736A /* illust_confetti.json in Resources */ = {isa = PBXBuildFile; fileRef = EBEA381E279450B800B5736A /* illust_confetti.json */; }; EBEA382327945F5A00B5736A /* ic_heart_active.json in Resources */ = {isa = PBXBuildFile; fileRef = EBEA382127945F5A00B5736A /* ic_heart_active.json */; }; @@ -194,6 +195,7 @@ EBE90FD32795D67500157075 /* AuthUpload.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthUpload.swift; sourceTree = ""; }; EBE90FD92796128800157075 /* SendSparkVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendSparkVC.swift; sourceTree = ""; }; EBE90FDB279612CA00157075 /* SendSpark.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = SendSpark.storyboard; sourceTree = ""; }; + EBE90FDD2796C45900157075 /* StatusButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusButton.swift; sourceTree = ""; }; EBEA381B279441DF00B5736A /* splash_iOS.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = splash_iOS.json; sourceTree = ""; }; EBEA381E279450B800B5736A /* illust_confetti.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = illust_confetti.json; sourceTree = ""; }; EBEA382127945F5A00B5736A /* ic_heart_active.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = ic_heart_active.json; sourceTree = ""; }; @@ -466,6 +468,7 @@ EB625E89278F29D300C43DE9 /* CarouselLayout.swift */, EB9C507C27922F2E00588155 /* LineAnimationView.swift */, 2BE5D80D2793203C007A544D /* Stopwatch.swift */, + EBE90FDD2796C45900157075 /* StatusButton.swift */, ); path = Classes; sourceTree = ""; @@ -1087,6 +1090,7 @@ EB9C507D27922F2E00588155 /* LineAnimationView.swift in Sources */, EB625E7B278F271400C43DE9 /* DoingStorageCVC.swift in Sources */, F816F125278E1C920008ED00 /* LoginVC.swift in Sources */, + EBE90FDE2796C45900157075 /* StatusButton.swift in Sources */, EBE90FD42795D67500157075 /* AuthUpload.swift in Sources */, F8096F3E2784213700B71D38 /* UIFont+.swift in Sources */, F82F580A279289C4003E4174 /* HomeService.swift in Sources */, diff --git a/Spark-iOS/Spark-iOS/Source/Classes/CarouselLayout.swift b/Spark-iOS/Spark-iOS/Source/Classes/CarouselLayout.swift index 691ba6a9..5be41794 100644 --- a/Spark-iOS/Spark-iOS/Source/Classes/CarouselLayout.swift +++ b/Spark-iOS/Spark-iOS/Source/Classes/CarouselLayout.swift @@ -115,7 +115,3 @@ class CarouselLayout: UICollectionViewFlowLayout { return CGPoint(x: proposedContentOffset.x + offsetAdjustment, y: proposedContentOffset.y) } } - -class MyButton: UIButton { - public var statusCV: Int = -1 -} diff --git a/Spark-iOS/Spark-iOS/Source/Classes/StatusButton.swift b/Spark-iOS/Spark-iOS/Source/Classes/StatusButton.swift new file mode 100644 index 00000000..833c83fa --- /dev/null +++ b/Spark-iOS/Spark-iOS/Source/Classes/StatusButton.swift @@ -0,0 +1,12 @@ +// +// StatusButton.swift +// Spark-iOS +// +// Created by Junho Lee on 2022/01/18. +// + +import UIKit + +class StatusButton: UIButton { + public var status: Int = -1 +} diff --git a/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomService.swift b/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomService.swift index 7c98a2fd..b1a00f5c 100644 --- a/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomService.swift +++ b/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomService.swift @@ -45,7 +45,9 @@ extension RoomService: TargetType { return .get case .waitingMemberFetch: return .get - case .enterRoom, .authUpload: + case .enterRoom: + return .post + case .authUpload: return .post } } diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Auth/AuthUpload/AuthUploadVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Auth/AuthUpload/AuthUploadVC.swift index 0458097b..7e552fd1 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Auth/AuthUpload/AuthUploadVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Auth/AuthUpload/AuthUploadVC.swift @@ -21,7 +21,7 @@ class AuthUploadVC: UIViewController { // MARK: - Properties var vcType: VCCase = .albumTimer - var roomID: Int = -1 + var roomID: Int? var uploadImageView = UIImageView() let fadeImageView = UIImageView() var uploadImage = UIImage() @@ -320,7 +320,7 @@ extension AuthUploadVC { extension AuthUploadVC { func authUploadWithAPI() { - RoomAPI.shared.authUpload(roomID: roomID, timer: timerLabel.text ?? "", image: uploadImageView.image ?? UIImage()) { response in + RoomAPI.shared.authUpload(roomID: roomID ?? 0, timer: timerLabel.text ?? "", image: uploadImageView.image ?? UIImage()) { response in switch response { case .success(let data): if let authUpload = data as? AuthUpload { @@ -337,13 +337,13 @@ extension AuthUploadVC { } case .requestErr(let message): print(message) - print("requestErr") + print("authUploadWithAPI - requestErr") case .pathErr: - print("pathErr") + print("authUploadWithAPI - pathErr") case .serverErr: - print("serverErr") + print("authUploadWithAPI - serverErr") case .networkFail: - print("networkFail") + print("authUploadWithAPI - networkFail") } } } diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/SendSparkVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/SendSparkVC.swift index 2730d6fc..b1945019 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/SendSparkVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/SendSparkVC.swift @@ -10,12 +10,11 @@ import UIKit class SendSparkVC: UIViewController { // MARK: Properties - var selectedIndex: Int = -1 var selectedMessage: String = "" - var firstButton = MyButton() - var secondButton = MyButton() - var thirdButton = MyButton() - var fourthButton = MyButton() + var firstButton = StatusButton() + var secondButton = StatusButton() + var thirdButton = StatusButton() + var fourthButton = StatusButton() // MARK: IBoutlet properties @@ -53,10 +52,10 @@ extension SendSparkVC { thirdButton.setTitle("👉 너만 하면 돼!", for: .normal) fourthButton.setTitle("👍 얼마 안 남았어, 어서 하자!", for: .normal) - firstButton.statusCV = 1 - secondButton.statusCV = 2 - thirdButton.statusCV = 3 - fourthButton.statusCV = 4 + firstButton.status = 1 + secondButton.status = 2 + thirdButton.status = 3 + fourthButton.status = 4 } private func setLayout() { @@ -100,20 +99,21 @@ extension SendSparkVC { // MARK: - @objc Function - @objc func setSelectedButton(sender: MyButton) { - let status = sender.statusCV - selectedIndex = status + @objc func setSelectedButton(sender: StatusButton) { + + let status = sender.status + sender.setTitleColor(.sparkDarkPinkred, for: .normal) sender.backgroundColor = .sparkMostLightPinkred sender.titleLabel?.backgroundColor = .sparkMostLightPinkred sender.layer.borderColor = UIColor.sparkDarkPinkred.cgColor + selectedMessage = sender.titleLabel?.text ?? "" - print(selectedMessage) switch status { case 1: [firstButton, secondButton, thirdButton, fourthButton].forEach { - if $0.statusCV != 1 { + if $0.status != 1 { $0.tintColor = .sparkLightPinkred $0.layer.borderColor = UIColor.sparkLightPinkred.cgColor $0.setTitleColor(.sparkLightPinkred, for: .normal) @@ -124,7 +124,7 @@ extension SendSparkVC { case 2: [firstButton, secondButton, thirdButton, fourthButton].forEach { - if $0.statusCV != 2 { + if $0.status != 2 { $0.tintColor = .sparkLightPinkred $0.layer.borderColor = UIColor.sparkLightPinkred.cgColor $0.setTitleColor(.sparkLightPinkred, for: .normal) @@ -135,7 +135,7 @@ extension SendSparkVC { case 3: [firstButton, secondButton, thirdButton, fourthButton].forEach { - if $0.statusCV != 3 { + if $0.status != 3 { $0.tintColor = .sparkLightPinkred $0.layer.borderColor = UIColor.sparkLightPinkred.cgColor $0.setTitleColor(.sparkLightPinkred, for: .normal) @@ -146,7 +146,7 @@ extension SendSparkVC { default: [firstButton, secondButton, thirdButton, fourthButton].forEach { - if $0.statusCV != 4 { + if $0.status != 4 { $0.tintColor = .sparkLightPinkred $0.layer.borderColor = UIColor.sparkLightPinkred.cgColor $0.setTitleColor(.sparkLightPinkred, for: .normal) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/TabBar/StorageVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/TabBar/StorageVC.swift index f25c298a..ca1ee817 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/TabBar/StorageVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/TabBar/StorageVC.swift @@ -11,9 +11,9 @@ import SnapKit class StorageVC: UIViewController { // MARK: - Properties - let doingButton = MyButton() - let doneButton = MyButton() - let failButton = MyButton() + let doingButton = StatusButton() + let doneButton = StatusButton() + let failButton = StatusButton() let doingLabel = UILabel() let doneLabel = UILabel() @@ -127,7 +127,7 @@ extension StorageVC { doneBlockingView.backgroundColor = .sparkWhite failBlockingView.backgroundColor = .sparkWhite - doingButton.statusCV = 0 + doingButton.status = 0 doingButton.backgroundColor = .clear doingButton.setTitle("진행중", for: .normal) doingButton.titleLabel?.font = .h3Subtitle @@ -142,7 +142,7 @@ extension StorageVC { doingLabel.textColor = .sparkDarkPinkred doingLabel.font = .enMediumFont(ofSize: 14) - doneButton.statusCV = 1 + doneButton.status = 1 doneButton.backgroundColor = .clear doneButton.setTitle("완료", for: .normal) doneButton.titleLabel?.font = .h3Subtitle @@ -155,7 +155,7 @@ extension StorageVC { doneLabel.textColor = .sparkDarkGray doneLabel.font = .enMediumFont(ofSize: 14) - failButton.statusCV = 2 + failButton.status = 2 failButton.backgroundColor = .clear failButton.setTitle("미완료", for: .normal) failButton.titleLabel?.font = .h3Subtitle @@ -271,7 +271,7 @@ extension StorageVC { } // 버튼 타겟 설정 - private func setAddTargets(_ buttons: MyButton...) { + private func setAddTargets(_ buttons: StatusButton...) { for button in buttons { button.addTarget(self, action: #selector(changeCollectionView), for: .touchUpInside) } @@ -279,8 +279,8 @@ extension StorageVC { // MARK: - @objc Function - @objc func changeCollectionView(sender: MyButton) { - let status: Int = (sender.statusCV) + @objc func changeCollectionView(sender: StatusButton) { + let status: Int = (sender.status) switch status { case 1: DoingCV.isHidden = true From 1d8e66302675322a435851026d1446480f6c4b66 Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Tue, 18 Jan 2022 21:40:22 +0900 Subject: [PATCH 8/8] =?UTF-8?q?[Feat]=20#97=20-=20=EC=82=AC=EC=A7=84=20?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=84=B0=20png=ED=98=95=EC=8B=9D=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 사진 데이터 png형식으로 변경 --- .../Source/NetworkServices/Room/RoomService.swift | 2 +- Spark-iOS/Spark-iOS/Source/SceneDelegate.swift | 2 +- .../ViewControllers/Auth/AuthUpload/AuthUploadVC.swift | 7 ++----- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomService.swift b/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomService.swift index b1a00f5c..96e3eb7b 100644 --- a/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomService.swift +++ b/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomService.swift @@ -68,7 +68,7 @@ extension RoomService: TargetType { let timerData = timer.data(using: .utf8) ?? Data() multiPartData.append(MultipartFormData(provider: .data(timerData), name: "timerRecord")) - let imageData = MultipartFormData(provider: .data(image.jpegData(compressionQuality: 1) ?? Data()), name: "image", fileName: "image", mimeType: "image/jpeg") + let imageData = MultipartFormData(provider: .data(image.pngData() ?? Data()), name: "image", fileName: "image", mimeType: "image/png") multiPartData.append(imageData) return .uploadMultipart(multiPartData) diff --git a/Spark-iOS/Spark-iOS/Source/SceneDelegate.swift b/Spark-iOS/Spark-iOS/Source/SceneDelegate.swift index 5d5b01eb..d80a08d8 100644 --- a/Spark-iOS/Spark-iOS/Source/SceneDelegate.swift +++ b/Spark-iOS/Spark-iOS/Source/SceneDelegate.swift @@ -18,7 +18,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { window = UIWindow(frame: windowScene.coordinateSpace.bounds) window?.windowScene = windowScene - let rootViewController = UIStoryboard(name: Const.Storyboard.Name.sendSpark, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.sendSpark) + let rootViewController = UIStoryboard(name: Const.Storyboard.Name.mainTabBar, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.mainTabBar) window?.rootViewController = rootViewController window?.makeKeyAndVisible() } diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Auth/AuthUpload/AuthUploadVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Auth/AuthUpload/AuthUploadVC.swift index 7e552fd1..8f3c5950 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Auth/AuthUpload/AuthUploadVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Auth/AuthUpload/AuthUploadVC.swift @@ -215,10 +215,10 @@ extension AuthUploadVC { } } + // TODO: 업로드 시간이 길다. 로딩 넣기. // 업로드 @objc func touchUploadButton() { - uploadButton.isEnabled = false authUploadWithAPI() } } @@ -332,12 +332,9 @@ extension AuthUploadVC { popupVC.modalPresentationStyle = .overFullScreen self.present(popupVC, animated: true, completion: nil) - - self.uploadButton.isEnabled = true } case .requestErr(let message): - print(message) - print("authUploadWithAPI - requestErr") + print("authUploadWithAPI - requestErr \(message)") case .pathErr: print("authUploadWithAPI - pathErr") case .serverErr: