Skip to content

Commit fba1394

Browse files
committed
chore: improve error rejection
1 parent 72d2e1b commit fba1394

File tree

1 file changed

+34
-68
lines changed

1 file changed

+34
-68
lines changed

ios/LineLoginModule.swift

Lines changed: 34 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ import LineSDK
3333
}
3434

3535
let universalLinkURL: URL? = (arguments["universalLinkUrl"] as? String).flatMap { URL(string: $0) }
36-
3736
LoginManager.shared.setup(channelID: channelID, universalLinkURL: universalLinkURL)
3837
resolve(nil)
3938
}
@@ -42,7 +41,7 @@ import LineSDK
4241
rejecter reject: @escaping RCTPromiseRejectBlock) {
4342

4443
guard let args = arguments else {
45-
LineLogin.nilArgument(reject)
44+
reject("INVALID_ARGUMENTS", "Expected argument is nil", NSError(domain: "", code: 200, userInfo: nil))
4645
return
4746
}
4847

@@ -85,12 +84,20 @@ import LineSDK
8584

8685
@objc func getCurrentAccessToken(_ resolve: @escaping RCTPromiseResolveBlock,
8786
rejecter reject: @escaping RCTPromiseRejectBlock) {
88-
if let token = AccessTokenStore.shared.current {
89-
resolve(self.parseAccessToken(token))
90-
}else{
91-
reject("ACCESS_TOKEN_NOT_AVAILABLE",
92-
"No access token is available",
93-
NSError(domain: "", code: 200, userInfo: nil))
87+
guard let token = AccessTokenStore.shared.current else {
88+
reject("ACCESS_TOKEN_NOT_AVAILABLE", "No access token is available", nil)
89+
return
90+
}
91+
resolve(self.parseAccessToken(token))
92+
}
93+
94+
@objc func getFriendshipStatus(_ resolve: @escaping RCTPromiseResolveBlock,
95+
rejecter reject: @escaping RCTPromiseRejectBlock) {
96+
API.getBotFriendshipStatus { result in
97+
switch result {
98+
case .success(let status): resolve(self.parseFriendshipStatus(status))
99+
case .failure(let error): error.rejecter(reject)
100+
}
94101
}
95102
}
96103

@@ -124,43 +131,26 @@ import LineSDK
124131
}
125132
}
126133

127-
@objc func getFriendshipStatus(_ resolve: @escaping RCTPromiseResolveBlock,
128-
rejecter reject: @escaping RCTPromiseRejectBlock) {
129-
API.getBotFriendshipStatus { result in
130-
switch result {
131-
case .success(let status): resolve(self.parseFriendshipStatus(status))
132-
case .failure(let error): error.rejecter(reject)
133-
}
134-
}
135-
}
136-
137-
static func nilArgument(_ reject: @escaping RCTPromiseRejectBlock) {
138-
return reject(
139-
"ARGUMENT_NIL",
140-
"Expected argument is nil",
141-
NSError(domain: "", code: 200, userInfo: nil))
134+
private func parseFriendshipStatus(_ status: GetBotFriendshipStatusRequest.Response) -> NSDictionary {
135+
return [
136+
"friendFlag": status.friendFlag
137+
]
142138
}
143139

144-
private func parseAccessToken(_ token: AccessToken) -> NSDictionary {
145-
var result = [
146-
"accessToken": token.value,
147-
"createdAt": token.createdAt,
148-
"expiresIn": token.expiresAt,
149-
] as [String : Any]
140+
private func parseAccessToken(_ accessToken: AccessToken) -> NSDictionary {
141+
var result: [String: Any] = [
142+
"accessToken": accessToken.value,
143+
"createdAt": accessToken.createdAt,
144+
"expiresIn": accessToken.expiresAt,
145+
]
150146

151-
if let idToken = token.IDTokenRaw {
147+
if let idToken = accessToken.IDTokenRaw {
152148
result["idToken"] = idToken
153149
}
154150

155151
return NSDictionary(dictionary: result)
156152
}
157153

158-
private func parseFriendshipStatus(_ status: GetBotFriendshipStatusRequest.Response) -> NSDictionary {
159-
return [
160-
"friendFlag": status.friendFlag
161-
]
162-
}
163-
164154
private func parseProfile(_ profile: UserProfile) -> NSDictionary {
165155
return [
166156
"displayName": profile.displayName,
@@ -180,43 +170,19 @@ import LineSDK
180170
]
181171
}
182172

183-
private func parseVerifyAccessToken(_ verification: AccessTokenVerifyResult) -> NSDictionary {
173+
private func parseVerifyAccessToken(_ accessToken: AccessTokenVerifyResult) -> NSDictionary {
184174
return [
185-
"channelId": verification.channelID,
186-
"expiresIn": verification.expiresIn,
187-
"scope": verification.permissions.map { $0.rawValue }.joined(separator: " ")
175+
"channelId": accessToken.channelID,
176+
"expiresIn": accessToken.expiresIn,
177+
"scope": accessToken.permissions.map { $0.rawValue }.joined(separator: " ")
188178
]
189179
}
190180
}
191181

192-
193-
extension Encodable {
194-
func toJSON() throws -> Any {
195-
let data = try JSONEncoder().encode(self)
196-
return try JSONSerialization.jsonObject(with: data, options: [])
197-
}
198-
func errorParsing(_ reject: @escaping RCTPromiseRejectBlock, _ name: String) {
199-
return reject(
200-
"ERROR_PARSING",
201-
"Error parsing \(name)",
202-
NSError(domain: "", code: 200, userInfo: nil))
203-
}
204-
205-
func resolver(_ resolve: @escaping RCTPromiseResolveBlock, _ reject: @escaping RCTPromiseRejectBlock, name: String) {
206-
do {
207-
let jsonValue = try self.toJSON()
208-
resolve(jsonValue)
209-
} catch {
210-
self.errorParsing(reject, name)
211-
}
212-
}
213-
}
214-
215182
extension LineSDKError {
216183
func rejecter(_ reject: @escaping RCTPromiseRejectBlock) {
217-
reject(
218-
"\(errorCode)",
219-
errorDescription,
220-
self)
184+
let code = String(errorCode)
185+
let message = errorDescription ?? "Unknown error"
186+
reject(code, message, self)
221187
}
222-
}
188+
}

0 commit comments

Comments
 (0)