forked from AcaMate/AcaMate_iOS
[♻️] API 받아오는 로직 수정
This commit is contained in:
parent
f4233f4562
commit
05f11df5e8
Binary file not shown.
|
@ -111,9 +111,9 @@ struct IntroView: View {
|
|||
case .finished: break
|
||||
}
|
||||
} receiveValue: { data in
|
||||
guard let apiData = data as? APIResponse<VersionData> else {return}
|
||||
printLog("\(apiData.data.toStringDict())")
|
||||
promise(.success(apiData.data))
|
||||
guard let apiData = data as? APIResponse<VersionData>, let version = apiData.data else {return}
|
||||
printLog("\(version.toStringDict())")
|
||||
promise(.success(version))
|
||||
}
|
||||
.store(in: &cancellables)
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ struct LoginView: View {
|
|||
// MARK: - TODO, 애플 계정 로그인 구현
|
||||
// appVM.naviState.set(act: .ADD, path: .SelectAcademy(bids: ["AA0000", "AA0001"]))
|
||||
loginVM.toggleLoading = true
|
||||
loginVM.loginTest(type: .Kakao, id: "TestSNSID1")
|
||||
loginVM.loginTest(type: .Kakao, id: "TestSNSID1@#")
|
||||
|
||||
} label: {
|
||||
makeButton(image: Image(.Logo.appleIcon), color: Color(.Text.black), "애플 계정으로 시작하기")
|
||||
|
|
|
@ -9,7 +9,7 @@ import Foundation
|
|||
|
||||
class APIResponse<T: Codable>: Codable {
|
||||
let status: Status
|
||||
let data: T
|
||||
let data: T?
|
||||
}
|
||||
|
||||
class Status: Codable {
|
||||
|
@ -17,49 +17,44 @@ class Status: Codable {
|
|||
let message: String
|
||||
}
|
||||
|
||||
enum APICode: Codable {
|
||||
case success
|
||||
case inputErr
|
||||
case outputErr
|
||||
case networkErr
|
||||
case unknownErr
|
||||
enum APICode: Codable, RawRepresentable {
|
||||
case success(String)
|
||||
case inputErr(String)
|
||||
case outputErr(String)
|
||||
case networkErr(String)
|
||||
case unknownErr(String)
|
||||
case anything(String)
|
||||
|
||||
var rawValue: String {
|
||||
switch self {
|
||||
case .success(let value),
|
||||
.inputErr(let value),
|
||||
.outputErr(let value),
|
||||
.networkErr(let value),
|
||||
.unknownErr(let value),
|
||||
.anything(let value):
|
||||
return value
|
||||
}
|
||||
}
|
||||
|
||||
init?(rawValue: String){
|
||||
if rawValue.hasPrefix("0") {self = .success(rawValue)}
|
||||
else if rawValue.hasPrefix("1") {self = .inputErr(rawValue)}
|
||||
else if rawValue.hasPrefix("2") {self = .outputErr(rawValue)}
|
||||
else if rawValue.hasPrefix("3") {self = .networkErr(rawValue)}
|
||||
else if rawValue == "999" {self = .unknownErr(rawValue)}
|
||||
else { self = .anything(rawValue)}
|
||||
}
|
||||
|
||||
init(from decoder: Decoder) throws {
|
||||
let container = try decoder.singleValueContainer()
|
||||
let rawValue = try container.decode(String.self)
|
||||
switch rawValue {
|
||||
case "000":
|
||||
self = .success
|
||||
case "001":
|
||||
self = .inputErr
|
||||
case "002":
|
||||
self = .outputErr
|
||||
case "003":
|
||||
self = .networkErr
|
||||
case "999":
|
||||
self = .unknownErr
|
||||
default:
|
||||
self = .anything(rawValue)
|
||||
}
|
||||
self = APICode(rawValue: rawValue) ?? .anything(rawValue)
|
||||
}
|
||||
|
||||
func encode(to encoder: Encoder) throws {
|
||||
var container = encoder.singleValueContainer()
|
||||
switch self {
|
||||
case .success:
|
||||
try container.encode("000")
|
||||
case .inputErr:
|
||||
try container.encode("001")
|
||||
case .outputErr:
|
||||
try container.encode("002")
|
||||
case .networkErr:
|
||||
try container.encode("003")
|
||||
case .unknownErr:
|
||||
try container.encode("999")
|
||||
case .anything(let value):
|
||||
try container.encode(value)
|
||||
}
|
||||
try container.encode(self.rawValue)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -74,14 +69,14 @@ class VersionData: Codable {
|
|||
// /api/v1/in/user/login ----------------
|
||||
|
||||
class User_Token: Codable {
|
||||
let token: String
|
||||
let refresh: String
|
||||
// let bids: [String]
|
||||
let token: String?
|
||||
let refresh: String?
|
||||
// let bids: [String]
|
||||
}
|
||||
|
||||
// /api/v1/in/member/academy ----------------
|
||||
class AcademyName: Codable {
|
||||
let bid: String
|
||||
let name: String
|
||||
let bid: String?
|
||||
let name: String?
|
||||
}
|
||||
|
||||
|
|
|
@ -37,24 +37,31 @@ class LoginViewModel: ObservableObject {
|
|||
} receiveValue: { [weak self] response in
|
||||
guard let self = self else { return }
|
||||
guard let userToken = response as? APIResponse<User_Token> else {return}
|
||||
switch userToken.status.code {
|
||||
case .success:
|
||||
@UserDefault(key: "token", defaultValue: "accToken") var accToken
|
||||
@UserDefault(key: "refresh", defaultValue: "arefreshToken") var refreshToken
|
||||
|
||||
if let token = userToken.data.toStringDict()["token"],
|
||||
let refresh = userToken.data.toStringDict()["refresh"] {
|
||||
printLog(token)
|
||||
printLog(refresh)
|
||||
accToken = token
|
||||
refreshToken = refresh
|
||||
self.pathName = .SelectAcademy
|
||||
switch userToken.status.code {
|
||||
case .success(let code):
|
||||
if code == "000" {
|
||||
@UserDefault(key: "token", defaultValue: "accToken") var accToken
|
||||
@UserDefault(key: "refresh", defaultValue: "arefreshToken") var refreshToken
|
||||
|
||||
if let token = userToken.data.toStringDict()["token"],
|
||||
let refresh = userToken.data.toStringDict()["refresh"] {
|
||||
printLog(token)
|
||||
printLog(refresh)
|
||||
accToken = token
|
||||
refreshToken = refresh
|
||||
self.pathName = .SelectAcademy
|
||||
|
||||
}
|
||||
} else {
|
||||
self.pathName = .Register(type, id: "\(id)")
|
||||
|
||||
}
|
||||
case .anything(let apiCode):
|
||||
// MARK: TO-DO
|
||||
// 회원가입 로직
|
||||
printLog("\(apiCode) : 로그인 정보 없음")
|
||||
self.pathName = .Register(type, id: "\(id)")
|
||||
// self.pathName = .Register(type, id: "\(id)")
|
||||
default:
|
||||
// 그외에 서버에서 처리를 하다가 문제가 생겨서 발생하는 에러는 여기로 보낼거임
|
||||
printLog("ERROR")
|
||||
|
|
|
@ -33,7 +33,8 @@ class SelectAcademyViewModel: ObservableObject {
|
|||
} receiveValue: { [weak self] response in
|
||||
guard let self = self else {return}
|
||||
guard let academyNames = response as? APIResponse<[AcademyName]> else {return}
|
||||
self.academyList = academyNames.data
|
||||
guard let academyList = academyNames.data else { return }
|
||||
self.academyList = academyList
|
||||
}
|
||||
.store(in: &cancellables)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user