react-native-klarna-inapp-sdk 2.3.14 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/KlarnaMobileSDKPackage.java +2 -4
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/event/KlarnaEventHandlerEventsUtil.java +62 -3
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/util/ArgumentsUtil.java +40 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/signin/KlarnaSignInData.java +15 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/signin/KlarnaSignInEventsMapper.java +40 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/signin/KlarnaSignInModuleImpl.java +124 -0
- package/android/src/newarch/java/com/klarna/mobile/sdk/reactnative/spec/RNKlarnaSignInModuleSpec.java +65 -0
- package/android/src/oldarch/java/com/klarna/mobile/sdk/reactnative/spec/RNKlarnaSignInModuleSpec.java +39 -0
- package/android/src/test/java/com/klarna/mobile/sdk/reactnative/KlarnaMobileSDKPackageTest.java +5 -4
- package/ios/Sources/signIn/KlarnaSignInData.h +25 -0
- package/ios/Sources/signIn/KlarnaSignInData.mm +21 -0
- package/ios/Sources/signIn/KlarnaSignInEventsMapper.h +18 -0
- package/ios/Sources/signIn/KlarnaSignInEventsMapper.m +54 -0
- package/ios/Sources/signIn/KlarnaSignInModule.h +26 -0
- package/ios/Sources/signIn/KlarnaSignInModuleImpl.h +37 -0
- package/ios/Sources/signIn/KlarnaSignInModuleImpl.mm +244 -0
- package/ios/Sources/signIn/newarch/KlarnaSignInModule.mm +75 -0
- package/ios/Sources/signIn/oldarch/KlarnaSignInModule.mm +72 -0
- package/lib/commonjs/KlarnaSignInSDK.js +80 -0
- package/lib/commonjs/KlarnaSignInSDK.js.map +1 -0
- package/lib/commonjs/index.js +11 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/specs/NativeKlarnaSignIn.js +10 -0
- package/lib/commonjs/specs/NativeKlarnaSignIn.js.map +1 -0
- package/lib/commonjs/types/common/KlarnaEnvironment.js +13 -0
- package/lib/commonjs/types/common/KlarnaEnvironment.js.map +1 -0
- package/lib/commonjs/types/common/KlarnaRegion.js +14 -0
- package/lib/commonjs/types/common/KlarnaRegion.js.map +1 -0
- package/lib/module/KlarnaSignInSDK.js +72 -0
- package/lib/module/KlarnaSignInSDK.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/specs/NativeKlarnaSignIn.js +3 -0
- package/lib/module/specs/NativeKlarnaSignIn.js.map +1 -0
- package/lib/module/types/common/KlarnaEnvironment.js +6 -0
- package/lib/module/types/common/KlarnaEnvironment.js.map +1 -0
- package/lib/module/types/common/KlarnaRegion.js +7 -0
- package/lib/module/types/common/KlarnaRegion.js.map +1 -0
- package/lib/typescript/KlarnaSignInSDK.d.ts +19 -0
- package/lib/typescript/KlarnaSignInSDK.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +1 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/specs/NativeKlarnaSignIn.d.ts +10 -0
- package/lib/typescript/specs/NativeKlarnaSignIn.d.ts.map +1 -0
- package/lib/typescript/types/common/KlarnaEnvironment.d.ts +5 -0
- package/lib/typescript/types/common/KlarnaEnvironment.d.ts.map +1 -0
- package/lib/typescript/types/common/KlarnaMobileSDKError.d.ts +4 -0
- package/lib/typescript/types/common/KlarnaMobileSDKError.d.ts.map +1 -1
- package/lib/typescript/types/common/KlarnaProductEvent.d.ts +1 -0
- package/lib/typescript/types/common/KlarnaProductEvent.d.ts.map +1 -1
- package/lib/typescript/types/common/KlarnaRegion.d.ts +6 -0
- package/lib/typescript/types/common/KlarnaRegion.d.ts.map +1 -0
- package/package.json +1 -1
- package/react-native-klarna-inapp-sdk.podspec +1 -1
- package/src/KlarnaSignInSDK.tsx +122 -0
- package/src/index.tsx +1 -0
- package/src/specs/NativeKlarnaSignIn.ts +25 -0
- package/src/types/common/KlarnaEnvironment.ts +4 -0
- package/src/types/common/KlarnaMobileSDKError.ts +2 -0
- package/src/types/common/KlarnaProductEvent.ts +1 -0
- package/src/types/common/KlarnaRegion.ts +5 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
//
|
|
2
|
+
// KlarnaSignInEventsHandler.h
|
|
3
|
+
// react-native-klarna-inapp-sdk
|
|
4
|
+
//
|
|
5
|
+
// Created by Jorge Palacio on 2025-02-26.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
#import <Foundation/Foundation.h>
|
|
9
|
+
#import <React/RCTBridgeModule.h>
|
|
10
|
+
|
|
11
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
12
|
+
|
|
13
|
+
@interface KlarnaSignInModuleImp: NSObject
|
|
14
|
+
|
|
15
|
+
- (void)dispose:(NSString *)instanceId
|
|
16
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
17
|
+
rejecter:(RCTPromiseRejectBlock)reject;
|
|
18
|
+
|
|
19
|
+
-(void)initWith:(NSString *)instanceId
|
|
20
|
+
environment: (NSString *)environment
|
|
21
|
+
region: (NSString *)region
|
|
22
|
+
returnUrl: (NSString *) returnUrl
|
|
23
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
24
|
+
rejecter:(RCTPromiseRejectBlock)reject;
|
|
25
|
+
|
|
26
|
+
-(void)signInWith:(NSString *)instanceId
|
|
27
|
+
clientId:(NSString *)clientId
|
|
28
|
+
scope:(NSString *)scope
|
|
29
|
+
market:(NSString *)market
|
|
30
|
+
locale:(NSString *)locale
|
|
31
|
+
tokenizationId:(NSString *)tokenizationId
|
|
32
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
33
|
+
rejecter:(RCTPromiseRejectBlock)reject;
|
|
34
|
+
|
|
35
|
+
@end
|
|
36
|
+
|
|
37
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
//
|
|
2
|
+
// KlarnaSignInEventsHandler.m
|
|
3
|
+
// react-native-klarna-inapp-sdk
|
|
4
|
+
//
|
|
5
|
+
// Created by Jorge Palacio on 2025-02-26.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
#import "KlarnaSignInModuleImpl.h"
|
|
9
|
+
#import "../common/RNMobileSDKUtils.h"
|
|
10
|
+
#import <AuthenticationServices/AuthenticationServices.h>
|
|
11
|
+
#import "KlarnaMobileSDK/KlarnaMobileSDK-Swift.h"
|
|
12
|
+
#import <React/RCTLog.h>
|
|
13
|
+
#import "KlarnaSignInData.h"
|
|
14
|
+
#import "KlarnaSignInEventsMapper.h"
|
|
15
|
+
|
|
16
|
+
@interface KlarnaSignInModuleImp()<KlarnaEventHandler, ASWebAuthenticationPresentationContextProviding>
|
|
17
|
+
|
|
18
|
+
@property (nonatomic, strong) NSMutableDictionary<NSString *, KlarnaSignInData *> *signInSDKs;
|
|
19
|
+
|
|
20
|
+
- (KlarnaEnvironment *)environmentFrom: (NSString *)value;
|
|
21
|
+
- (KlarnaRegion *)regionFrom: (NSString *)value;
|
|
22
|
+
- (void)rejectWithInvalidiOSVersionSupported:(RCTPromiseRejectBlock) rejectBlock;
|
|
23
|
+
- (KlarnaSignInData *)getInstanceFromComponent: (id <KlarnaComponent> _Nonnull)component;
|
|
24
|
+
|
|
25
|
+
@end
|
|
26
|
+
|
|
27
|
+
@implementation KlarnaSignInModuleImp
|
|
28
|
+
|
|
29
|
+
- (id)init {
|
|
30
|
+
self = [super init];
|
|
31
|
+
_signInSDKs = [NSMutableDictionary new];
|
|
32
|
+
return self;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
- (KlarnaEnvironment *)environmentFrom: (NSString *)value {
|
|
36
|
+
KlarnaEnvironment *env = KlarnaEnvironment.production;
|
|
37
|
+
if ([value isEqualToString:@"playground"]) {
|
|
38
|
+
env = KlarnaEnvironment.playground;
|
|
39
|
+
}
|
|
40
|
+
if ([value isEqualToString:@"staging"]) {
|
|
41
|
+
env = KlarnaEnvironment.staging;
|
|
42
|
+
}
|
|
43
|
+
if ([value isEqualToString:@"production"]) {
|
|
44
|
+
env = KlarnaEnvironment.production;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return env;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
- (KlarnaRegion *)regionFrom: (NSString *)value {
|
|
51
|
+
KlarnaRegion *reg = KlarnaRegion.eu;
|
|
52
|
+
if ([value isEqualToString:@"eu"]) {
|
|
53
|
+
reg = KlarnaRegion.eu;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if ([value isEqualToString:@"na"]) {
|
|
57
|
+
reg = KlarnaRegion.na;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if ([value isEqualToString:@"oc"]) {
|
|
61
|
+
reg = KlarnaRegion.oc;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return reg;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
- (KlarnaSignInData *)getInstanceFromComponent:(id<KlarnaComponent>)component {
|
|
68
|
+
for (NSString *key in _signInSDKs) {
|
|
69
|
+
KlarnaSignInData *data = _signInSDKs[key];
|
|
70
|
+
if (data.sdkInstance == component) {
|
|
71
|
+
return data;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return nil;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// MARK: - Module public Methods
|
|
78
|
+
|
|
79
|
+
- (void)dispose:(NSString *)instanceId
|
|
80
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
81
|
+
rejecter:(RCTPromiseRejectBlock)reject {
|
|
82
|
+
KlarnaSignInData *signInData = _signInSDKs[instanceId];
|
|
83
|
+
if (signInData != nil) {
|
|
84
|
+
[_signInSDKs removeObjectForKey:instanceId];
|
|
85
|
+
resolve(nil);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
- (void)initWith:(NSString *)instanceId
|
|
90
|
+
environment: (NSString *)environment
|
|
91
|
+
region: (NSString *)region
|
|
92
|
+
returnUrl: (NSString *)returnUrl
|
|
93
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
94
|
+
rejecter:(RCTPromiseRejectBlock)reject {
|
|
95
|
+
KlarnaEnvironment * env = [self environmentFrom: environment];
|
|
96
|
+
KlarnaRegion * reg = [self regionFrom: region];
|
|
97
|
+
NSURL *url = [NSURL URLWithString: returnUrl];
|
|
98
|
+
if (url != nil && url.scheme != nil) {
|
|
99
|
+
if (@available(iOS 13.0, *)) {
|
|
100
|
+
KlarnaSignInSDK *signInInstance = [[KlarnaSignInSDK alloc] initWithEnvironment: env
|
|
101
|
+
region: reg
|
|
102
|
+
returnUrl: url
|
|
103
|
+
eventHandler: self];
|
|
104
|
+
KlarnaSignInData *data = [[KlarnaSignInData alloc] initWith: instanceId sdkInstance: signInInstance];
|
|
105
|
+
[_signInSDKs setObject: data forKey: instanceId];
|
|
106
|
+
resolve(nil);
|
|
107
|
+
} else {
|
|
108
|
+
[self rejectWithInvalidiOSVersionSupported: reject];
|
|
109
|
+
}
|
|
110
|
+
} else {
|
|
111
|
+
[self rejectWithInvalidURL: reject];
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
- (void)signInWith:(NSString *)instanceId
|
|
116
|
+
clientId:(NSString *)clientId
|
|
117
|
+
scope:(NSString *)scope
|
|
118
|
+
market:(NSString *)market
|
|
119
|
+
locale:(NSString *)locale
|
|
120
|
+
tokenizationId:(NSString *)tokenizationId
|
|
121
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
122
|
+
rejecter:(RCTPromiseRejectBlock)reject {
|
|
123
|
+
if (@available(iOS 13.0, *)) {
|
|
124
|
+
KlarnaSignInData *signInData = [_signInSDKs objectForKey: instanceId];
|
|
125
|
+
if (signInData == nil) {
|
|
126
|
+
RCTLog(@"No instance found for the given instanceId");
|
|
127
|
+
reject(@"RNKlarnaSignIn", @"No instance found to initiate signIn, Init function must be called prior to this one.", nil);
|
|
128
|
+
} else {
|
|
129
|
+
signInData.resolver = resolve;
|
|
130
|
+
signInData.rejecter = reject;
|
|
131
|
+
[signInData.sdkInstance signInClientId: clientId
|
|
132
|
+
scope: scope
|
|
133
|
+
market: market
|
|
134
|
+
locale: locale
|
|
135
|
+
tokenizationId: tokenizationId
|
|
136
|
+
presentationContext: self];
|
|
137
|
+
}
|
|
138
|
+
} else {
|
|
139
|
+
[self rejectWithInvalidiOSVersionSupported: reject];
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
- (void)rejectWithInvalidiOSVersionSupported:(RCTPromiseRejectBlock) rejectBlock {
|
|
144
|
+
NSString *msg = @"KlarnaSignIn is supported from iOS version 13.0";
|
|
145
|
+
rejectBlock(@"RNKlarnaSignIn", msg, nil);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
- (void)rejectWithInvalidURL:(RCTPromiseRejectBlock) rejectBlock {
|
|
149
|
+
NSString *msg = @"Invalid or null return URL.";
|
|
150
|
+
NSError *errorEvent = [NSError errorWithDomain:@"com.klarnamobilesdk" code: 0001 userInfo: @{
|
|
151
|
+
@"name": @"KlarnaSignInInvalidReturnUrl",
|
|
152
|
+
@"message": msg,
|
|
153
|
+
@"isFatal": @"true"
|
|
154
|
+
}];
|
|
155
|
+
rejectBlock(@"", msg, errorEvent);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// MARK: - KlarnaEventHandler Methods
|
|
159
|
+
|
|
160
|
+
- (void)klarnaComponent:(id <KlarnaComponent> _Nonnull)klarnaComponent dispatchedEvent:(KlarnaProductEvent * _Nonnull)event {
|
|
161
|
+
KlarnaSignInData *signInData = [self getInstanceFromComponent: klarnaComponent];
|
|
162
|
+
if (signInData == nil) {
|
|
163
|
+
RCTLog(@"No instance found for the given component");
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (signInData.resolver == nil) {
|
|
167
|
+
RCTLog(@"Missing 'resolver' callback prop.");
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
NSMutableDictionary<NSString *, id> *resolvedEvent = [NSMutableDictionary dictionaryWithDictionary: @{
|
|
171
|
+
@"action": [KlarnaSignInEventsMapper mapSignInEventName: event.action],
|
|
172
|
+
@"sessionId": event.sessionId,
|
|
173
|
+
}];
|
|
174
|
+
NSMutableDictionary *updatedParams = [NSMutableDictionary new];
|
|
175
|
+
[[event getParams] enumerateKeysAndObjectsUsingBlock:^(NSString * _Nonnull key, NSString * _Nonnull obj, BOOL * _Nonnull stop) {
|
|
176
|
+
NSString *updatedKey = [KlarnaSignInEventsMapper mapSignInParamName: key];
|
|
177
|
+
[updatedParams setValue: obj forKey: updatedKey];
|
|
178
|
+
}];
|
|
179
|
+
if ([updatedParams count] > 0) {
|
|
180
|
+
[resolvedEvent setValue: updatedParams forKey: @"params"];
|
|
181
|
+
}
|
|
182
|
+
signInData.resolver(resolvedEvent);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
- (void)klarnaComponent:(id <KlarnaComponent> _Nonnull)klarnaComponent encounteredError:(KlarnaError * _Nonnull)error {
|
|
186
|
+
if (!error.isFatal) {
|
|
187
|
+
NSArray *allowedNonFatalErrors = @[@"KlarnaSignInAlreadyInProgress", @"KlarnaSignInAuthorizationFailed"];
|
|
188
|
+
if (![allowedNonFatalErrors containsObject: error.name]) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
KlarnaSignInData *signInData = [self getInstanceFromComponent: klarnaComponent];
|
|
193
|
+
if (signInData == nil) {
|
|
194
|
+
RCTLog(@"No instance found for the given component");
|
|
195
|
+
} else {
|
|
196
|
+
if (signInData.rejecter == nil) {
|
|
197
|
+
RCTLog(@"Missing 'rejecter' callback prop.");
|
|
198
|
+
} else {
|
|
199
|
+
NSMutableDictionary<NSString *, id> *infoDict = [NSMutableDictionary dictionaryWithDictionary: @{
|
|
200
|
+
@"name": [KlarnaSignInEventsMapper mapSignInErrorName: error.name],
|
|
201
|
+
@"message": error.message,
|
|
202
|
+
@"isFatal": error.isFatal ? @"true" : @"false",
|
|
203
|
+
@"sessionId": error.sessionId,
|
|
204
|
+
}];
|
|
205
|
+
NSDictionary *params = [error getParams];
|
|
206
|
+
if ([params count] > 0) {
|
|
207
|
+
[infoDict setValue: params forKey: @"params"];
|
|
208
|
+
}
|
|
209
|
+
NSError *errorEvent = [NSError errorWithDomain:@"com.klarnamobilesdk" code: 0001 userInfo: infoDict];
|
|
210
|
+
signInData.rejecter(@"", error.message, errorEvent);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// MARK: - ASWebAuthenticationPresentationContextProviding
|
|
216
|
+
|
|
217
|
+
- (ASPresentationAnchor)presentationAnchorForWebAuthenticationSession:(ASWebAuthenticationSession *)session {
|
|
218
|
+
UIWindowScene *windowScene = (UIWindowScene *)[[[UIApplication sharedApplication].connectedScenes objectsPassingTest:^BOOL(UIScene * _Nonnull obj, BOOL * _Nonnull stop) {
|
|
219
|
+
if(obj.activationState == UISceneActivationStateForegroundActive) {
|
|
220
|
+
*stop = YES; // Stop after finding the first match
|
|
221
|
+
return YES;
|
|
222
|
+
}
|
|
223
|
+
return NO;
|
|
224
|
+
}] allObjects].firstObject;
|
|
225
|
+
|
|
226
|
+
if (windowScene != nil) {
|
|
227
|
+
if (@available(iOS 15.0, *)) {
|
|
228
|
+
return windowScene.keyWindow;
|
|
229
|
+
} else {
|
|
230
|
+
UIWindow *currentTopWindow = windowScene.windows.firstObject;
|
|
231
|
+
if (currentTopWindow != nil) {
|
|
232
|
+
return currentTopWindow;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
return [[UIWindow alloc] initWithWindowScene: windowScene];
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// This Shouldn't execute app crashes!!!
|
|
240
|
+
// Windows can't be created in a bg thread. Hence the crash.
|
|
241
|
+
return nil;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
@end
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
//
|
|
2
|
+
// KlarnaSignInSDK.m
|
|
3
|
+
// RNKlarnaMobileSDK
|
|
4
|
+
//
|
|
5
|
+
// Created by Jorge Palacio on 2025-02-20.
|
|
6
|
+
// Copyright © 2025 Facebook. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
9
|
+
|
|
10
|
+
#import "KlarnaSignInModule.h"
|
|
11
|
+
#import "KlarnaSignInModuleImpl.h"
|
|
12
|
+
|
|
13
|
+
@interface KlarnaSignInModule()
|
|
14
|
+
|
|
15
|
+
@property (strong, nonatomic) KlarnaSignInModuleImp *signInModule;
|
|
16
|
+
|
|
17
|
+
@end
|
|
18
|
+
|
|
19
|
+
@implementation KlarnaSignInModule
|
|
20
|
+
|
|
21
|
+
RCT_EXPORT_MODULE(RNKlarnaSignIn);
|
|
22
|
+
|
|
23
|
+
- (id)init {
|
|
24
|
+
self = [super init];
|
|
25
|
+
_signInModule = [KlarnaSignInModuleImp new];
|
|
26
|
+
return self;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params {
|
|
30
|
+
return std::make_shared<facebook::react::NativeKlarnaSignInSpecJSI>(params);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
- (void)dispose:(NSString *)instanceId
|
|
34
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
35
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
36
|
+
[self.signInModule dispose:instanceId
|
|
37
|
+
resolver:resolve
|
|
38
|
+
rejecter:reject];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
- (void)init:(NSString *)instanceId
|
|
42
|
+
environment:(NSString *)environment
|
|
43
|
+
region:(NSString *)region
|
|
44
|
+
returnUrl:(NSString *)returnUrl
|
|
45
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
46
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
47
|
+
[self.signInModule initWith: instanceId
|
|
48
|
+
environment: environment
|
|
49
|
+
region: region
|
|
50
|
+
returnUrl: returnUrl
|
|
51
|
+
resolver: resolve
|
|
52
|
+
rejecter: reject];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
- (void)signIn:(NSString *)instanceId
|
|
56
|
+
clientId:(NSString *)clientId
|
|
57
|
+
scope:(NSString *)scope
|
|
58
|
+
market:(NSString *)market
|
|
59
|
+
locale:(NSString *)locale
|
|
60
|
+
tokenizationId:(NSString *)tokenizationId
|
|
61
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
62
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
63
|
+
[self.signInModule signInWith: instanceId
|
|
64
|
+
clientId: clientId
|
|
65
|
+
scope: scope
|
|
66
|
+
market: market
|
|
67
|
+
locale: locale
|
|
68
|
+
tokenizationId: tokenizationId
|
|
69
|
+
resolver: resolve
|
|
70
|
+
rejecter: reject];
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@end
|
|
74
|
+
|
|
75
|
+
#endif
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
//
|
|
2
|
+
// KlarnaSignInSDK.m
|
|
3
|
+
// RNKlarnaMobileSDK
|
|
4
|
+
//
|
|
5
|
+
// Created by Jorge Palacio on 2025-02-20.
|
|
6
|
+
// Copyright © 2025 Facebook. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#if !RCT_NEW_ARCH_ENABLED
|
|
10
|
+
|
|
11
|
+
#import "KlarnaSignInModule.h"
|
|
12
|
+
#import "KlarnaSignInModuleImpl.h"
|
|
13
|
+
|
|
14
|
+
@interface KlarnaSignInModule()
|
|
15
|
+
|
|
16
|
+
@property (strong, nonatomic) KlarnaSignInModuleImp *signInModule;
|
|
17
|
+
|
|
18
|
+
@end
|
|
19
|
+
|
|
20
|
+
@implementation KlarnaSignInModule
|
|
21
|
+
|
|
22
|
+
RCT_EXPORT_MODULE(RNKlarnaSignIn); // This should match the turbo module specification.
|
|
23
|
+
|
|
24
|
+
- (id)init {
|
|
25
|
+
self = [super init];
|
|
26
|
+
_signInModule = [KlarnaSignInModuleImp new];
|
|
27
|
+
return self;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
RCT_EXPORT_METHOD(dispose:(NSString *)instanceId
|
|
31
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
32
|
+
rejecter:(RCTPromiseRejectBlock)reject) {
|
|
33
|
+
[self.signInModule dispose: instanceId
|
|
34
|
+
resolver: resolve
|
|
35
|
+
rejecter: reject];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
RCT_EXPORT_METHOD(init:(NSString *)instanceId
|
|
39
|
+
environment:(NSString *)environment
|
|
40
|
+
region:(NSString *)region
|
|
41
|
+
returnUrl:(NSString *) returnUrl
|
|
42
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
43
|
+
reject:(RCTPromiseRejectBlock)reject) {
|
|
44
|
+
[self.signInModule initWith: instanceId
|
|
45
|
+
environment: environment
|
|
46
|
+
region: region
|
|
47
|
+
returnUrl: returnUrl
|
|
48
|
+
resolver: resolve
|
|
49
|
+
rejecter: reject];
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
RCT_EXPORT_METHOD(signIn:(NSString *)instanceId
|
|
53
|
+
clientId:(NSString *)clientId
|
|
54
|
+
scope:(NSString *)scope
|
|
55
|
+
market:(NSString *)market
|
|
56
|
+
locale:(NSString *)locale
|
|
57
|
+
tokenizationId:(NSString *)tokenizationId
|
|
58
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
59
|
+
rejecter:(RCTPromiseRejectBlock)reject) {
|
|
60
|
+
[self.signInModule signInWith: instanceId
|
|
61
|
+
clientId: clientId
|
|
62
|
+
scope: scope
|
|
63
|
+
market: market
|
|
64
|
+
locale: locale
|
|
65
|
+
tokenizationId: tokenizationId
|
|
66
|
+
resolver: resolve
|
|
67
|
+
rejecter: reject];
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
@end
|
|
71
|
+
|
|
72
|
+
#endif
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.KlarnaSignInSDK = void 0;
|
|
7
|
+
var _NativeKlarnaSignIn = _interopRequireDefault(require("./specs/NativeKlarnaSignIn"));
|
|
8
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
+
// declare a class that receive the KlarnaSignInProps in the initializer and expose a method to sign in
|
|
10
|
+
class KlarnaSignInSDK {
|
|
11
|
+
constructor(props, instanceId) {
|
|
12
|
+
this.environment = props.environment;
|
|
13
|
+
this.region = props.region;
|
|
14
|
+
this.returnUrl = props.returnUrl;
|
|
15
|
+
this.instanceId = instanceId;
|
|
16
|
+
}
|
|
17
|
+
static async createInstance(props) {
|
|
18
|
+
if (props.returnUrl.trim() === '') {
|
|
19
|
+
return new Promise((_, reject) => {
|
|
20
|
+
const sdkError = {
|
|
21
|
+
isFatal: true,
|
|
22
|
+
message: 'Invalid or null return URL',
|
|
23
|
+
name: 'KlarnaSignInMissingReturnUrl'
|
|
24
|
+
};
|
|
25
|
+
reject(sdkError);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return new Promise((resolve, reject) => {
|
|
29
|
+
let instanceId = Math.random().toString(36).substring(2, 15);
|
|
30
|
+
_NativeKlarnaSignIn.default.init(instanceId, props.environment, props.region, props.returnUrl).then(_ => {
|
|
31
|
+
resolve(new KlarnaSignInSDK(props, instanceId));
|
|
32
|
+
}).catch(error => {
|
|
33
|
+
const errorInfo = error.userInfo;
|
|
34
|
+
const sdkError = {
|
|
35
|
+
isFatal: errorInfo.isFatal,
|
|
36
|
+
message: errorInfo.message,
|
|
37
|
+
name: errorInfo.name,
|
|
38
|
+
sessionId: errorInfo.sessionId,
|
|
39
|
+
params: errorInfo.params
|
|
40
|
+
};
|
|
41
|
+
reject(sdkError);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
dispose() {
|
|
46
|
+
return _NativeKlarnaSignIn.default.dispose(this.instanceId);
|
|
47
|
+
}
|
|
48
|
+
signIn(clientId, scope, market, locale, tokenizationId) {
|
|
49
|
+
const scopes = scope.split(' ');
|
|
50
|
+
const tokenizationScopes = ['payment:customer_not_present', 'payment:customer_present'];
|
|
51
|
+
const isTokenizationScopeIncluded = tokenizationScopes.some(value => scopes.includes(value));
|
|
52
|
+
if (isTokenizationScopeIncluded && (!tokenizationId || tokenizationId.trim() === '')) {
|
|
53
|
+
return new Promise((_, reject) => {
|
|
54
|
+
const sdkError = {
|
|
55
|
+
isFatal: false,
|
|
56
|
+
message: `Found ${tokenizationScopes} in scope but tokenizationId is empty.`,
|
|
57
|
+
name: 'KlarnaSignInMissingTokenizationId'
|
|
58
|
+
};
|
|
59
|
+
reject(sdkError);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return new Promise((resolve, reject) => {
|
|
63
|
+
_NativeKlarnaSignIn.default.signIn(this.instanceId, clientId, scope, market, locale, tokenizationId).then(result => {
|
|
64
|
+
resolve(result);
|
|
65
|
+
}).catch(error => {
|
|
66
|
+
const errorInfo = error.userInfo;
|
|
67
|
+
const sdkError = {
|
|
68
|
+
isFatal: errorInfo.isFatal,
|
|
69
|
+
message: errorInfo.message,
|
|
70
|
+
name: errorInfo.name,
|
|
71
|
+
sessionId: errorInfo.sessionId,
|
|
72
|
+
params: errorInfo.params
|
|
73
|
+
};
|
|
74
|
+
reject(sdkError);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.KlarnaSignInSDK = KlarnaSignInSDK;
|
|
80
|
+
//# sourceMappingURL=KlarnaSignInSDK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_NativeKlarnaSignIn","_interopRequireDefault","require","obj","__esModule","default","KlarnaSignInSDK","constructor","props","instanceId","environment","region","returnUrl","createInstance","trim","Promise","_","reject","sdkError","isFatal","message","name","resolve","Math","random","toString","substring","RNKlarnaSignIn","init","then","catch","error","errorInfo","userInfo","sessionId","params","dispose","signIn","clientId","scope","market","locale","tokenizationId","scopes","split","tokenizationScopes","isTokenizationScopeIncluded","some","value","includes","result","exports"],"sourceRoot":"../../src","sources":["KlarnaSignInSDK.tsx"],"mappings":"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"}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -36,4 +36,15 @@ Object.keys(_KlarnaCheckoutView).forEach(function (key) {
|
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
38
|
});
|
|
39
|
+
var _KlarnaSignInSDK = require("./KlarnaSignInSDK");
|
|
40
|
+
Object.keys(_KlarnaSignInSDK).forEach(function (key) {
|
|
41
|
+
if (key === "default" || key === "__esModule") return;
|
|
42
|
+
if (key in exports && exports[key] === _KlarnaSignInSDK[key]) return;
|
|
43
|
+
Object.defineProperty(exports, key, {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
get: function () {
|
|
46
|
+
return _KlarnaSignInSDK[key];
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
});
|
|
39
50
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_KlarnaPaymentView","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_KlarnaStandaloneWebView","_KlarnaCheckoutView"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,kBAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,kBAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,kBAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,wBAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,wBAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,wBAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,wBAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,mBAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,mBAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,mBAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,mBAAA,CAAAN,GAAA;IAAA;EAAA;AAAA"}
|
|
1
|
+
{"version":3,"names":["_KlarnaPaymentView","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_KlarnaStandaloneWebView","_KlarnaCheckoutView","_KlarnaSignInSDK"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,kBAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,kBAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,kBAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,wBAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,wBAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,wBAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,wBAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,mBAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,mBAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,mBAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,mBAAA,CAAAN,GAAA;IAAA;EAAA;AAAA;AACA,IAAAO,gBAAA,GAAAX,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAS,gBAAA,EAAAR,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAO,gBAAA,CAAAP,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAG,gBAAA,CAAAP,GAAA;IAAA;EAAA;AAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
var _default = _reactNative.TurboModuleRegistry.getEnforcing('RNKlarnaSignIn');
|
|
9
|
+
exports.default = _default;
|
|
10
|
+
//# sourceMappingURL=NativeKlarnaSignIn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_default","TurboModuleRegistry","getEnforcing","exports","default"],"sourceRoot":"../../../src","sources":["specs/NativeKlarnaSignIn.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAuBpCC,gCAAmB,CAACC,YAAY,CAAO,gBAAgB,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAJ,QAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.KlarnaEnvironment = void 0;
|
|
7
|
+
let KlarnaEnvironment = /*#__PURE__*/function (KlarnaEnvironment) {
|
|
8
|
+
KlarnaEnvironment["Playground"] = "playground";
|
|
9
|
+
KlarnaEnvironment["Production"] = "production";
|
|
10
|
+
return KlarnaEnvironment;
|
|
11
|
+
}({});
|
|
12
|
+
exports.KlarnaEnvironment = KlarnaEnvironment;
|
|
13
|
+
//# sourceMappingURL=KlarnaEnvironment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["KlarnaEnvironment","exports"],"sourceRoot":"../../../../src","sources":["types/common/KlarnaEnvironment.ts"],"mappings":";;;;;;IAAYA,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAAAC,OAAA,CAAAD,iBAAA,GAAAA,iBAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.KlarnaRegion = void 0;
|
|
7
|
+
let KlarnaRegion = /*#__PURE__*/function (KlarnaRegion) {
|
|
8
|
+
KlarnaRegion["EU"] = "eu";
|
|
9
|
+
KlarnaRegion["NA"] = "na";
|
|
10
|
+
KlarnaRegion["OC"] = "oc";
|
|
11
|
+
return KlarnaRegion;
|
|
12
|
+
}({});
|
|
13
|
+
exports.KlarnaRegion = KlarnaRegion;
|
|
14
|
+
//# sourceMappingURL=KlarnaRegion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["KlarnaRegion","exports"],"sourceRoot":"../../../../src","sources":["types/common/KlarnaRegion.ts"],"mappings":";;;;;;IAAYA,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;AAAAC,OAAA,CAAAD,YAAA,GAAAA,YAAA"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import RNKlarnaSignIn from './specs/NativeKlarnaSignIn';
|
|
2
|
+
// declare a class that receive the KlarnaSignInProps in the initializer and expose a method to sign in
|
|
3
|
+
export class KlarnaSignInSDK {
|
|
4
|
+
constructor(props, instanceId) {
|
|
5
|
+
this.environment = props.environment;
|
|
6
|
+
this.region = props.region;
|
|
7
|
+
this.returnUrl = props.returnUrl;
|
|
8
|
+
this.instanceId = instanceId;
|
|
9
|
+
}
|
|
10
|
+
static async createInstance(props) {
|
|
11
|
+
if (props.returnUrl.trim() === '') {
|
|
12
|
+
return new Promise((_, reject) => {
|
|
13
|
+
const sdkError = {
|
|
14
|
+
isFatal: true,
|
|
15
|
+
message: 'Invalid or null return URL',
|
|
16
|
+
name: 'KlarnaSignInMissingReturnUrl'
|
|
17
|
+
};
|
|
18
|
+
reject(sdkError);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
return new Promise((resolve, reject) => {
|
|
22
|
+
let instanceId = Math.random().toString(36).substring(2, 15);
|
|
23
|
+
RNKlarnaSignIn.init(instanceId, props.environment, props.region, props.returnUrl).then(_ => {
|
|
24
|
+
resolve(new KlarnaSignInSDK(props, instanceId));
|
|
25
|
+
}).catch(error => {
|
|
26
|
+
const errorInfo = error.userInfo;
|
|
27
|
+
const sdkError = {
|
|
28
|
+
isFatal: errorInfo.isFatal,
|
|
29
|
+
message: errorInfo.message,
|
|
30
|
+
name: errorInfo.name,
|
|
31
|
+
sessionId: errorInfo.sessionId,
|
|
32
|
+
params: errorInfo.params
|
|
33
|
+
};
|
|
34
|
+
reject(sdkError);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
dispose() {
|
|
39
|
+
return RNKlarnaSignIn.dispose(this.instanceId);
|
|
40
|
+
}
|
|
41
|
+
signIn(clientId, scope, market, locale, tokenizationId) {
|
|
42
|
+
const scopes = scope.split(' ');
|
|
43
|
+
const tokenizationScopes = ['payment:customer_not_present', 'payment:customer_present'];
|
|
44
|
+
const isTokenizationScopeIncluded = tokenizationScopes.some(value => scopes.includes(value));
|
|
45
|
+
if (isTokenizationScopeIncluded && (!tokenizationId || tokenizationId.trim() === '')) {
|
|
46
|
+
return new Promise((_, reject) => {
|
|
47
|
+
const sdkError = {
|
|
48
|
+
isFatal: false,
|
|
49
|
+
message: `Found ${tokenizationScopes} in scope but tokenizationId is empty.`,
|
|
50
|
+
name: 'KlarnaSignInMissingTokenizationId'
|
|
51
|
+
};
|
|
52
|
+
reject(sdkError);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
return new Promise((resolve, reject) => {
|
|
56
|
+
RNKlarnaSignIn.signIn(this.instanceId, clientId, scope, market, locale, tokenizationId).then(result => {
|
|
57
|
+
resolve(result);
|
|
58
|
+
}).catch(error => {
|
|
59
|
+
const errorInfo = error.userInfo;
|
|
60
|
+
const sdkError = {
|
|
61
|
+
isFatal: errorInfo.isFatal,
|
|
62
|
+
message: errorInfo.message,
|
|
63
|
+
name: errorInfo.name,
|
|
64
|
+
sessionId: errorInfo.sessionId,
|
|
65
|
+
params: errorInfo.params
|
|
66
|
+
};
|
|
67
|
+
reject(sdkError);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=KlarnaSignInSDK.js.map
|