@@ -2,7 +2,7 @@ import Foundation
22import LineSDK
33
44@objc ( LineLogin) public class LineLogin : NSObject {
5-
5+
66 @objc public static func application(
77 _ application: UIApplication ,
88 open url: URL ,
@@ -21,27 +21,27 @@ import LineSDK
2121
2222 @objc func setup( _ arguments: NSDictionary , resolver resolve: @escaping RCTPromiseResolveBlock ,
2323 rejecter reject: @escaping RCTPromiseRejectBlock ) {
24-
25- if LoginManager . shared. isSetupFinished {
26- reject ( " SETUP_ALREADY_COMPLETED " , " Setup has already been completed " , nil )
27- return
24+
25+ guard ! LoginManager. shared. isSetupFinished else {
26+ reject ( " SETUP_ALREADY_COMPLETED " , " Setup is already completed " , nil )
27+ return
2828 }
29-
29+
3030 guard let channelID = arguments [ " channelId " ] as? String else {
3131 reject ( " INVALID_ARGUMENTS " , " Missing required argument: channelId " , nil )
3232 return
3333 }
3434
3535 let universalLinkURL : URL ? = ( arguments [ " universalLinkUrl " ] as? String ) . flatMap { URL ( string: $0) }
36-
37- return LoginManager . shared . setup ( channelID : channelID , universalLinkURL : universalLinkURL )
36+ LoginManager . shared . setup ( channelID : channelID , universalLinkURL : universalLinkURL )
37+ resolve ( nil )
3838 }
3939
4040 @objc func login( _ arguments: NSDictionary ? , resolver resolve: @escaping RCTPromiseResolveBlock ,
4141 rejecter reject: @escaping RCTPromiseRejectBlock ) {
4242
4343 guard let args = arguments else {
44- LineLogin . nilArgument ( reject)
44+ reject ( " INVALID_ARGUMENTS " , " Expected argument is nil " , NSError ( domain : " " , code : 200 , userInfo : nil ) )
4545 return
4646 }
4747
@@ -84,12 +84,20 @@ import LineSDK
8484
8585 @objc func getCurrentAccessToken( _ resolve: @escaping RCTPromiseResolveBlock ,
8686 rejecter reject: @escaping RCTPromiseRejectBlock ) {
87- if let token = AccessTokenStore . shared. current {
88- resolve ( self . parseAccessToken ( token) )
89- } else {
90- reject ( " Error getting access token " ,
91- " There isn't an access token available " ,
92- 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+ }
93101 }
94102 }
95103
@@ -123,43 +131,26 @@ import LineSDK
123131 }
124132 }
125133
126- @objc func getFriendshipStatus( _ resolve: @escaping RCTPromiseResolveBlock ,
127- rejecter reject: @escaping RCTPromiseRejectBlock ) {
128- API . getBotFriendshipStatus { result in
129- switch result {
130- case . success( let status) : resolve ( self . parseFriendshipStatus ( status) )
131- case . failure( let error) : error. rejecter ( reject)
132- }
133- }
134- }
135-
136- static func nilArgument( _ reject: @escaping RCTPromiseRejectBlock ) {
137- return reject (
138- " argument.nil " ,
139- " Expect an argument when invoking method, but it is nil. " ,
140- NSError ( domain: " " , code: 200 , userInfo: nil ) )
134+ private func parseFriendshipStatus( _ status: GetBotFriendshipStatusRequest . Response ) -> NSDictionary {
135+ return [
136+ " friendFlag " : status. friendFlag
137+ ]
141138 }
142139
143- private func parseAccessToken( _ token : AccessToken ) -> NSDictionary {
144- var result = [
145- " accessToken " : token . value,
146- " createdAt " : token . createdAt,
147- " expiresIn " : token . expiresAt,
148- ] as [ String : Any ]
149-
150- if let idToken = token . IDTokenRaw {
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+ ]
146+
147+ if let idToken = accessToken . IDTokenRaw {
151148 result [ " idToken " ] = idToken
152149 }
153-
150+
154151 return NSDictionary ( dictionary: result)
155152 }
156153
157- private func parseFriendshipStatus( _ status: GetBotFriendshipStatusRequest . Response ) -> NSDictionary {
158- return [
159- " friendFlag " : status. friendFlag
160- ]
161- }
162-
163154 private func parseProfile( _ profile: UserProfile ) -> NSDictionary {
164155 return [
165156 " displayName " : profile. displayName,
@@ -179,43 +170,19 @@ import LineSDK
179170 ]
180171 }
181172
182- private func parseVerifyAccessToken( _ verification : AccessTokenVerifyResult ) -> NSDictionary {
173+ private func parseVerifyAccessToken( _ accessToken : AccessTokenVerifyResult ) -> NSDictionary {
183174 return [
184- " channelId " : verification . channelID,
185- " expiresIn " : verification . expiresIn,
186- " 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: " " )
187178 ]
188179 }
189180}
190181
191-
192- extension Encodable {
193- func toJSON( ) throws -> Any {
194- let data = try JSONEncoder ( ) . encode ( self )
195- return try JSONSerialization . jsonObject ( with: data, options: [ ] )
196- }
197- func errorParsing( _ reject: @escaping RCTPromiseRejectBlock , _ name: String ) {
198- return reject (
199- " error parsing " ,
200- " There was an error when parsing ` \( name) ` " ,
201- NSError ( domain: " " , code: 200 , userInfo: nil ) )
202- }
203-
204- func resolver( _ resolve: @escaping RCTPromiseResolveBlock , _ reject: @escaping RCTPromiseRejectBlock , name: String ) {
205- do {
206- let jsonValue = try self . toJSON ( )
207- resolve ( jsonValue)
208- } catch {
209- self . errorParsing ( reject, name)
210- }
211- }
212- }
213-
214182extension LineSDKError {
215183 func rejecter( _ reject: @escaping RCTPromiseRejectBlock ) {
216- reject (
217- " \( errorCode) " ,
218- errorDescription,
219- self )
184+ let code = String ( errorCode)
185+ let message = errorDescription ?? " Unknown error "
186+ reject ( code, message, self )
220187 }
221188}
0 commit comments