react-native-klarna-inapp-sdk 2.3.15 → 2.4.1

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.
Files changed (83) hide show
  1. package/README.md +1 -0
  2. package/android/src/main/java/com/klarna/mobile/sdk/reactnative/KlarnaMobileSDKPackage.java +2 -4
  3. package/android/src/main/java/com/klarna/mobile/sdk/reactnative/checkout/KlarnaCheckoutViewEventSender.java +7 -2
  4. package/android/src/main/java/com/klarna/mobile/sdk/reactnative/checkout/KlarnaCheckoutViewManager.java +51 -18
  5. package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/WebViewResizeObserver.java +9 -4
  6. package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/event/KlarnaEventHandlerEventsUtil.java +62 -3
  7. package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/ui/ResizeObserverWrapperView.java +3 -2
  8. package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/util/ArgumentsUtil.java +40 -0
  9. package/android/src/main/java/com/klarna/mobile/sdk/reactnative/payments/PaymentViewWrapper.java +1 -1
  10. package/android/src/main/java/com/klarna/mobile/sdk/reactnative/signin/KlarnaSignInData.java +15 -0
  11. package/android/src/main/java/com/klarna/mobile/sdk/reactnative/signin/KlarnaSignInEventsMapper.java +40 -0
  12. package/android/src/main/java/com/klarna/mobile/sdk/reactnative/signin/KlarnaSignInModuleImpl.java +124 -0
  13. package/android/src/newarch/java/com/klarna/mobile/sdk/reactnative/spec/RNKlarnaSignInModuleSpec.java +65 -0
  14. package/android/src/oldarch/java/com/klarna/mobile/sdk/reactnative/spec/RNKlarnaSignInModuleSpec.java +39 -0
  15. package/android/src/test/java/com/klarna/mobile/sdk/reactnative/KlarnaMobileSDKPackageTest.java +5 -4
  16. package/ios/Sources/KlarnaCheckoutViewManager.mm +32 -24
  17. package/ios/Sources/signIn/KlarnaSignInData.h +25 -0
  18. package/ios/Sources/signIn/KlarnaSignInData.mm +21 -0
  19. package/ios/Sources/signIn/KlarnaSignInEventsMapper.h +18 -0
  20. package/ios/Sources/signIn/KlarnaSignInEventsMapper.m +54 -0
  21. package/ios/Sources/signIn/KlarnaSignInModule.h +26 -0
  22. package/ios/Sources/signIn/KlarnaSignInModuleImpl.h +37 -0
  23. package/ios/Sources/signIn/KlarnaSignInModuleImpl.mm +244 -0
  24. package/ios/Sources/signIn/newarch/KlarnaSignInModule.mm +75 -0
  25. package/ios/Sources/signIn/oldarch/KlarnaSignInModule.mm +72 -0
  26. package/ios/Sources/view/KlarnaCheckoutViewWrapper.h +1 -3
  27. package/ios/Sources/view/newarch/KlarnaCheckoutViewWrapper.mm +53 -29
  28. package/ios/Sources/view/oldarch/KlarnaCheckoutViewWrapper.mm +58 -20
  29. package/lib/commonjs/KlarnaCheckoutView.js +16 -3
  30. package/lib/commonjs/KlarnaCheckoutView.js.map +1 -1
  31. package/lib/commonjs/KlarnaSignInSDK.js +80 -0
  32. package/lib/commonjs/KlarnaSignInSDK.js.map +1 -0
  33. package/lib/commonjs/index.js +11 -0
  34. package/lib/commonjs/index.js.map +1 -1
  35. package/lib/commonjs/specs/KlarnaCheckoutViewNativeComponent.js.map +1 -1
  36. package/lib/commonjs/specs/NativeKlarnaSignIn.js +10 -0
  37. package/lib/commonjs/specs/NativeKlarnaSignIn.js.map +1 -0
  38. package/lib/commonjs/types/common/KlarnaEnvironment.js +13 -0
  39. package/lib/commonjs/types/common/KlarnaEnvironment.js.map +1 -0
  40. package/lib/commonjs/types/common/KlarnaRegion.js +14 -0
  41. package/lib/commonjs/types/common/KlarnaRegion.js.map +1 -0
  42. package/lib/module/KlarnaCheckoutView.js +16 -3
  43. package/lib/module/KlarnaCheckoutView.js.map +1 -1
  44. package/lib/module/KlarnaSignInSDK.js +72 -0
  45. package/lib/module/KlarnaSignInSDK.js.map +1 -0
  46. package/lib/module/index.js +1 -0
  47. package/lib/module/index.js.map +1 -1
  48. package/lib/module/specs/KlarnaCheckoutViewNativeComponent.js.map +1 -1
  49. package/lib/module/specs/NativeKlarnaSignIn.js +3 -0
  50. package/lib/module/specs/NativeKlarnaSignIn.js.map +1 -0
  51. package/lib/module/types/common/KlarnaEnvironment.js +6 -0
  52. package/lib/module/types/common/KlarnaEnvironment.js.map +1 -0
  53. package/lib/module/types/common/KlarnaRegion.js +7 -0
  54. package/lib/module/types/common/KlarnaRegion.js.map +1 -0
  55. package/lib/typescript/KlarnaCheckoutView.d.ts +2 -0
  56. package/lib/typescript/KlarnaCheckoutView.d.ts.map +1 -1
  57. package/lib/typescript/KlarnaSignInSDK.d.ts +19 -0
  58. package/lib/typescript/KlarnaSignInSDK.d.ts.map +1 -0
  59. package/lib/typescript/index.d.ts +1 -0
  60. package/lib/typescript/index.d.ts.map +1 -1
  61. package/lib/typescript/specs/KlarnaCheckoutViewNativeComponent.d.ts +1 -0
  62. package/lib/typescript/specs/KlarnaCheckoutViewNativeComponent.d.ts.map +1 -1
  63. package/lib/typescript/specs/NativeKlarnaSignIn.d.ts +10 -0
  64. package/lib/typescript/specs/NativeKlarnaSignIn.d.ts.map +1 -0
  65. package/lib/typescript/types/common/KlarnaEnvironment.d.ts +5 -0
  66. package/lib/typescript/types/common/KlarnaEnvironment.d.ts.map +1 -0
  67. package/lib/typescript/types/common/KlarnaMobileSDKError.d.ts +4 -0
  68. package/lib/typescript/types/common/KlarnaMobileSDKError.d.ts.map +1 -1
  69. package/lib/typescript/types/common/KlarnaProductEvent.d.ts +1 -0
  70. package/lib/typescript/types/common/KlarnaProductEvent.d.ts.map +1 -1
  71. package/lib/typescript/types/common/KlarnaRegion.d.ts +6 -0
  72. package/lib/typescript/types/common/KlarnaRegion.d.ts.map +1 -0
  73. package/package.json +1 -1
  74. package/react-native-klarna-inapp-sdk.podspec +1 -1
  75. package/src/KlarnaCheckoutView.tsx +16 -3
  76. package/src/KlarnaSignInSDK.tsx +122 -0
  77. package/src/index.tsx +1 -0
  78. package/src/specs/KlarnaCheckoutViewNativeComponent.ts +1 -0
  79. package/src/specs/NativeKlarnaSignIn.ts +25 -0
  80. package/src/types/common/KlarnaEnvironment.ts +4 -0
  81. package/src/types/common/KlarnaMobileSDKError.ts +2 -0
  82. package/src/types/common/KlarnaProductEvent.ts +1 -0
  83. package/src/types/common/KlarnaRegion.ts +5 -0
@@ -1,12 +1,15 @@
1
1
  import React, { Component } from 'react';
2
2
  import RNKlarnaCheckoutView, { Commands as RNKlarnaCheckoutViewCommands } from './specs/KlarnaCheckoutViewNativeComponent';
3
3
  export class KlarnaCheckoutView extends Component {
4
+ snippet = null;
5
+ isCheckoutViewReady = false;
4
6
  constructor(props) {
5
7
  super(props);
6
8
  this.state = {
7
9
  nativeViewHeight: 0
8
10
  };
9
11
  this.checkoutViewRef = /*#__PURE__*/React.createRef();
12
+ this.isCheckoutViewReady = false;
10
13
  }
11
14
  render() {
12
15
  return /*#__PURE__*/React.createElement(RNKlarnaCheckoutView, {
@@ -49,24 +52,34 @@ export class KlarnaCheckoutView extends Component {
49
52
  nativeViewHeight: newHeight
50
53
  });
51
54
  }
55
+ },
56
+ onCheckoutViewReady: () => {
57
+ this.isCheckoutViewReady = true;
58
+ console.log('onCheckoutViewReady');
59
+ if (this.snippet) {
60
+ console.log('Setting the snippet...');
61
+ this.setSnippet(this.snippet);
62
+ this.snippet = null;
63
+ }
52
64
  }
53
65
  });
54
66
  }
55
67
  setSnippet = snippet => {
68
+ this.snippet = snippet;
56
69
  const view = this.checkoutViewRef.current;
57
- if (view != null) {
70
+ if (view != null && this.isCheckoutViewReady) {
58
71
  RNKlarnaCheckoutViewCommands.setSnippet(view, snippet);
59
72
  }
60
73
  };
61
74
  suspend = () => {
62
75
  const view = this.checkoutViewRef.current;
63
- if (view != null) {
76
+ if (view != null && this.isCheckoutViewReady) {
64
77
  RNKlarnaCheckoutViewCommands.suspend(view);
65
78
  }
66
79
  };
67
80
  resume = () => {
68
81
  const view = this.checkoutViewRef.current;
69
- if (view != null) {
82
+ if (view != null && this.isCheckoutViewReady) {
70
83
  RNKlarnaCheckoutViewCommands.resume(view);
71
84
  }
72
85
  };
@@ -1 +1 @@
1
- {"version":3,"names":["React","Component","RNKlarnaCheckoutView","Commands","RNKlarnaCheckoutViewCommands","KlarnaCheckoutView","constructor","props","state","nativeViewHeight","checkoutViewRef","createRef","render","createElement","ref","style","width","height","flexShrink","returnUrl","onEvent","event","_this$props$onEvent","_this$props","params","JSON","parse","nativeEvent","productEvent","e","console","error","action","call","onError","_this$props$onError","_this$props2","mobileSdkError","isFatal","message","name","onResized","newHeight","Number","log","setState","setSnippet","snippet","view","current","suspend","resume"],"sourceRoot":"../../src","sources":["KlarnaCheckoutView.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["React","Component","RNKlarnaCheckoutView","Commands","RNKlarnaCheckoutViewCommands","KlarnaCheckoutView","snippet","isCheckoutViewReady","constructor","props","state","nativeViewHeight","checkoutViewRef","createRef","render","createElement","ref","style","width","height","flexShrink","returnUrl","onEvent","event","_this$props$onEvent","_this$props","params","JSON","parse","nativeEvent","productEvent","e","console","error","action","call","onError","_this$props$onError","_this$props2","mobileSdkError","isFatal","message","name","onResized","newHeight","Number","log","setState","onCheckoutViewReady","setSnippet","view","current","suspend","resume"],"sourceRoot":"../../src","sources":["KlarnaCheckoutView.tsx"],"mappings":"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"}
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"names":["RNKlarnaSignIn","KlarnaSignInSDK","constructor","props","instanceId","environment","region","returnUrl","createInstance","trim","Promise","_","reject","sdkError","isFatal","message","name","resolve","Math","random","toString","substring","init","then","catch","error","errorInfo","userInfo","sessionId","params","dispose","signIn","clientId","scope","market","locale","tokenizationId","scopes","split","tokenizationScopes","isTokenizationScopeIncluded","some","value","includes","result"],"sourceRoot":"../../src","sources":["KlarnaSignInSDK.tsx"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export * from './KlarnaPaymentView';
2
2
  export * from './KlarnaStandaloneWebView';
3
3
  export * from './KlarnaCheckoutView';
4
+ export * from './KlarnaSignInSDK';
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,cAAc,qBAAqB;AACnC,cAAc,2BAA2B;AACzC,cAAc,sBAAsB"}
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,cAAc,qBAAqB;AACnC,cAAc,2BAA2B;AACzC,cAAc,sBAAsB;AACpC,cAAc,mBAAmB"}
@@ -1 +1 @@
1
- {"version":3,"names":["codegenNativeCommands","codegenNativeComponent","Commands","supportedCommands"],"sourceRoot":"../../../src","sources":["specs/KlarnaCheckoutViewNativeComponent.ts"],"mappings":"AAIA,OAAOA,qBAAqB,MAAM,wDAAwD;AAC1F,OAAOC,sBAAsB,MAAM,yDAAyD;AA6C5F,OAAO,MAAMC,QAA4C,GACvDF,qBAAqB,CAAqC;EACxDG,iBAAiB,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ;AACvD,CAAC,CAAC;AAEJ,eAAeF,sBAAsB,CACnC,sBACF,CAAC"}
1
+ {"version":3,"names":["codegenNativeCommands","codegenNativeComponent","Commands","supportedCommands"],"sourceRoot":"../../../src","sources":["specs/KlarnaCheckoutViewNativeComponent.ts"],"mappings":"AAIA,OAAOA,qBAAqB,MAAM,wDAAwD;AAC1F,OAAOC,sBAAsB,MAAM,yDAAyD;AA8C5F,OAAO,MAAMC,QAA4C,GACvDF,qBAAqB,CAAqC;EACxDG,iBAAiB,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ;AACvD,CAAC,CAAC;AAEJ,eAAeF,sBAAsB,CACnC,sBACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { TurboModuleRegistry } from 'react-native';
2
+ export default TurboModuleRegistry.getEnforcing('RNKlarnaSignIn');
3
+ //# sourceMappingURL=NativeKlarnaSignIn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["specs/NativeKlarnaSignIn.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;AAuBlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,gBAAgB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export let KlarnaEnvironment = /*#__PURE__*/function (KlarnaEnvironment) {
2
+ KlarnaEnvironment["Playground"] = "playground";
3
+ KlarnaEnvironment["Production"] = "production";
4
+ return KlarnaEnvironment;
5
+ }({});
6
+ //# sourceMappingURL=KlarnaEnvironment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["KlarnaEnvironment"],"sourceRoot":"../../../../src","sources":["types/common/KlarnaEnvironment.ts"],"mappings":"AAAA,WAAYA,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA"}
@@ -0,0 +1,7 @@
1
+ export let KlarnaRegion = /*#__PURE__*/function (KlarnaRegion) {
2
+ KlarnaRegion["EU"] = "eu";
3
+ KlarnaRegion["NA"] = "na";
4
+ KlarnaRegion["OC"] = "oc";
5
+ return KlarnaRegion;
6
+ }({});
7
+ //# sourceMappingURL=KlarnaRegion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["KlarnaRegion"],"sourceRoot":"../../../../src","sources":["types/common/KlarnaRegion.ts"],"mappings":"AAAA,WAAYA,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA"}
@@ -14,6 +14,8 @@ interface KlarnaCheckoutViewState {
14
14
  }
15
15
  export declare class KlarnaCheckoutView extends Component<KlarnaCheckoutViewProps, KlarnaCheckoutViewState> {
16
16
  checkoutViewRef: RefObject<Component<RNKlarnaCheckoutViewProps> & Readonly<NativeMethods>>;
17
+ private snippet;
18
+ private isCheckoutViewReady;
17
19
  constructor(props: KlarnaCheckoutViewProps);
18
20
  render(): React.JSX.Element;
19
21
  setSnippet: (snippet: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"KlarnaCheckoutView.d.ts","sourceRoot":"","sources":["../../src/KlarnaCheckoutView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EACV,aAAa,EAEb,SAAS,EACV,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAA6B,EAE3B,KAAK,yBAAyB,EAC/B,MAAM,2CAA2C,CAAC;AAEnD,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACpE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAC1D;AAED,UAAU,uBAAuB;IAC/B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,kBAAmB,SAAQ,SAAS,CAC/C,uBAAuB,EACvB,uBAAuB,CACxB;IACC,eAAe,EAAE,SAAS,CACxB,SAAS,CAAC,yBAAyB,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,CAC/D,CAAC;gBAEU,KAAK,EAAE,uBAAuB;IAQ1C,MAAM;IAoEN,UAAU,YAAa,MAAM,UAK3B;IAEF,OAAO,aAKL;IAEF,MAAM,aAKJ;CACH;AAED,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"KlarnaCheckoutView.d.ts","sourceRoot":"","sources":["../../src/KlarnaCheckoutView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EACV,aAAa,EAEb,SAAS,EACV,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAA6B,EAE3B,KAAK,yBAAyB,EAC/B,MAAM,2CAA2C,CAAC;AAEnD,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACpE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAC1D;AAED,UAAU,uBAAuB;IAC/B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,kBAAmB,SAAQ,SAAS,CAC/C,uBAAuB,EACvB,uBAAuB,CACxB;IACC,eAAe,EAAE,SAAS,CACxB,SAAS,CAAC,yBAAyB,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,CAC/D,CAAC;IACF,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,mBAAmB,CAAS;gBAExB,KAAK,EAAE,uBAAuB;IAS1C,MAAM;IA6EN,UAAU,YAAa,MAAM,UAM3B;IAEF,OAAO,aAKL;IAEF,MAAM,aAKJ;CACH;AAED,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { KlarnaEnvironment } from './types/common/KlarnaEnvironment';
2
+ import type { KlarnaProductEvent } from './types/common/KlarnaProductEvent';
3
+ import type { KlarnaRegion } from './types/common/KlarnaRegion';
4
+ export interface KlarnaSignInProps {
5
+ readonly environment: KlarnaEnvironment;
6
+ readonly region: KlarnaRegion;
7
+ readonly returnUrl: string;
8
+ }
9
+ export declare class KlarnaSignInSDK {
10
+ readonly environment: KlarnaEnvironment;
11
+ readonly region: KlarnaRegion;
12
+ readonly returnUrl: string;
13
+ readonly instanceId: string;
14
+ private constructor();
15
+ static createInstance(props: KlarnaSignInProps): Promise<KlarnaSignInSDK>;
16
+ dispose(): Promise<void>;
17
+ signIn(clientId: string, scope: string, market: string, locale: string, tokenizationId?: string): Promise<KlarnaProductEvent>;
18
+ }
19
+ //# sourceMappingURL=KlarnaSignInSDK.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KlarnaSignInSDK.d.ts","sourceRoot":"","sources":["../../src/KlarnaSignInSDK.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAGD,qBAAa,eAAe;IAC1B,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,OAAO;WAOM,cAAc,CACzB,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,eAAe,CAAC;IAoC3B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,MAAM,CACJ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,kBAAkB,CAAC;CA+C/B"}
@@ -1,4 +1,5 @@
1
1
  export * from './KlarnaPaymentView';
2
2
  export * from './KlarnaStandaloneWebView';
3
3
  export * from './KlarnaCheckoutView';
4
+ export * from './KlarnaSignInSDK';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC"}
@@ -20,6 +20,7 @@ export interface RNKlarnaCheckoutViewProps extends ViewProps {
20
20
  readonly onResized: DirectEventHandler<Readonly<{
21
21
  readonly height: string;
22
22
  }>>;
23
+ readonly onCheckoutViewReady?: DirectEventHandler<{}>;
23
24
  }
24
25
  type KlarnaCheckoutViewNativeComponentType = HostComponent<RNKlarnaCheckoutViewProps>;
25
26
  interface RNKlarnaCheckoutViewNativeCommands {
@@ -1 +1 @@
1
- {"version":3,"file":"KlarnaCheckoutViewNativeComponent.d.ts","sourceRoot":"","sources":["../../../src/specs/KlarnaCheckoutViewNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sDAAsD,CAAC;AACtF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,yBAA0B,SAAQ,SAAS;IAC1D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAClC,QAAQ,CAAC;QACP,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC;YAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;YACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;SACzB,CAAC,CAAC;KACJ,CAAC,CACH,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAClC,QAAQ,CAAC;QACP,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;YACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;YAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;YACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;SACvB,CAAC,CAAC;KACJ,CAAC,CACH,CAAC;IACF,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CACpC,QAAQ,CAAC;QAEP,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB,CAAC,CACH,CAAC;CACH;AAED,KAAK,qCAAqC,GACxC,aAAa,CAAC,yBAAyB,CAAC,CAAC;AAE3C,UAAU,kCAAkC;IAC1C,UAAU,EAAE,CACV,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,qCAAqC,CAAC,EAChE,OAAO,EAAE,MAAM,KACZ,IAAI,CAAC;IACV,OAAO,EAAE,CACP,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,qCAAqC,CAAC,KAC7D,IAAI,CAAC;IACV,MAAM,EAAE,CACN,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,qCAAqC,CAAC,KAC7D,IAAI,CAAC;CACX;AAED,eAAO,MAAM,QAAQ,EAAE,kCAGnB,CAAC;;AAEL,wBAE2C"}
1
+ {"version":3,"file":"KlarnaCheckoutViewNativeComponent.d.ts","sourceRoot":"","sources":["../../../src/specs/KlarnaCheckoutViewNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sDAAsD,CAAC;AACtF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,yBAA0B,SAAQ,SAAS;IAC1D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAClC,QAAQ,CAAC;QACP,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC;YAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;YACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;SACzB,CAAC,CAAC;KACJ,CAAC,CACH,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAClC,QAAQ,CAAC;QACP,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;YACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;YAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;YACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;SACvB,CAAC,CAAC;KACJ,CAAC,CACH,CAAC;IACF,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CACpC,QAAQ,CAAC;QAEP,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB,CAAC,CACH,CAAC;IACF,QAAQ,CAAC,mBAAmB,CAAC,EAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC;CACvD;AAED,KAAK,qCAAqC,GACxC,aAAa,CAAC,yBAAyB,CAAC,CAAC;AAE3C,UAAU,kCAAkC;IAC1C,UAAU,EAAE,CACV,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,qCAAqC,CAAC,EAChE,OAAO,EAAE,MAAM,KACZ,IAAI,CAAC;IACV,OAAO,EAAE,CACP,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,qCAAqC,CAAC,KAC7D,IAAI,CAAC;IACV,MAAM,EAAE,CACN,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,qCAAqC,CAAC,KAC7D,IAAI,CAAC;CACX;AAED,eAAO,MAAM,QAAQ,EAAE,kCAGnB,CAAC;;AAEL,wBAE2C"}
@@ -0,0 +1,10 @@
1
+ import type { TurboModule } from 'react-native';
2
+ import type { KlarnaProductEvent } from 'src/types/common/KlarnaProductEvent';
3
+ export interface Spec extends TurboModule {
4
+ init(instanceId: string, environment: string, region: string, returnUrl: string): Promise<void>;
5
+ dispose(instanceId: string): Promise<void>;
6
+ signIn(instanceId: string, clientId: string, scope: string, market: string, locale: string, tokenizationId?: string): Promise<KlarnaProductEvent>;
7
+ }
8
+ declare const _default: Spec;
9
+ export default _default;
10
+ //# sourceMappingURL=NativeKlarnaSignIn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeKlarnaSignIn.d.ts","sourceRoot":"","sources":["../../../src/specs/NativeKlarnaSignIn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAE9E,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,IAAI,CACF,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3C,MAAM,CACJ,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAChC;;AAED,wBAAwE"}
@@ -0,0 +1,5 @@
1
+ export declare enum KlarnaEnvironment {
2
+ Playground = "playground",
3
+ Production = "production"
4
+ }
5
+ //# sourceMappingURL=KlarnaEnvironment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KlarnaEnvironment.d.ts","sourceRoot":"","sources":["../../../../src/types/common/KlarnaEnvironment.ts"],"names":[],"mappings":"AAAA,oBAAY,iBAAiB;IAC3B,UAAU,eAAe;IACzB,UAAU,eAAe;CAC1B"}
@@ -2,5 +2,9 @@ export interface KlarnaMobileSDKError {
2
2
  readonly isFatal: boolean;
3
3
  readonly message: string;
4
4
  readonly name: string;
5
+ readonly sessionId?: string;
6
+ readonly params?: {
7
+ [key: string]: any;
8
+ };
5
9
  }
6
10
  //# sourceMappingURL=KlarnaMobileSDKError.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"KlarnaMobileSDKError.d.ts","sourceRoot":"","sources":["../../../../src/types/common/KlarnaMobileSDKError.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB"}
1
+ {"version":3,"file":"KlarnaMobileSDKError.d.ts","sourceRoot":"","sources":["../../../../src/types/common/KlarnaMobileSDKError.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CAC1C"}
@@ -3,5 +3,6 @@ export interface KlarnaProductEvent {
3
3
  readonly params: {
4
4
  [key: string]: any;
5
5
  };
6
+ readonly sessionId?: string;
6
7
  }
7
8
  //# sourceMappingURL=KlarnaProductEvent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"KlarnaProductEvent.d.ts","sourceRoot":"","sources":["../../../../src/types/common/KlarnaProductEvent.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CACzC"}
1
+ {"version":3,"file":"KlarnaProductEvent.d.ts","sourceRoot":"","sources":["../../../../src/types/common/KlarnaProductEvent.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B"}
@@ -0,0 +1,6 @@
1
+ export declare enum KlarnaRegion {
2
+ EU = "eu",
3
+ NA = "na",
4
+ OC = "oc"
5
+ }
6
+ //# sourceMappingURL=KlarnaRegion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KlarnaRegion.d.ts","sourceRoot":"","sources":["../../../../src/types/common/KlarnaRegion.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY;IACtB,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;CACV"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "react-native-klarna-inapp-sdk",
3
3
  "title": "Klarna Mobile SDK React Native",
4
- "version": "2.3.15",
4
+ "version": "2.4.1",
5
5
  "description": "This library wraps Klarna Mobile SDK and exposes its functionality as React Native components.",
6
6
  "main": "lib/commonjs/index",
7
7
  "module": "lib/module/index",
@@ -48,5 +48,5 @@ Pod::Spec.new do |s|
48
48
  end
49
49
  end
50
50
 
51
- s.dependency 'KlarnaMobileSDK', '2.6.28'
51
+ s.dependency 'KlarnaMobileSDK', '2.6.29'
52
52
  end
@@ -29,6 +29,8 @@ export class KlarnaCheckoutView extends Component<
29
29
  checkoutViewRef: RefObject<
30
30
  Component<RNKlarnaCheckoutViewProps> & Readonly<NativeMethods>
31
31
  >;
32
+ private snippet: string | null = null;
33
+ private isCheckoutViewReady = false;
32
34
 
33
35
  constructor(props: KlarnaCheckoutViewProps) {
34
36
  super(props);
@@ -36,6 +38,7 @@ export class KlarnaCheckoutView extends Component<
36
38
  nativeViewHeight: 0,
37
39
  };
38
40
  this.checkoutViewRef = React.createRef();
41
+ this.isCheckoutViewReady = false;
39
42
  }
40
43
 
41
44
  render() {
@@ -102,27 +105,37 @@ export class KlarnaCheckoutView extends Component<
102
105
  this.setState({ nativeViewHeight: newHeight });
103
106
  }
104
107
  }}
108
+ onCheckoutViewReady={() => {
109
+ this.isCheckoutViewReady = true;
110
+ console.log('onCheckoutViewReady');
111
+ if (this.snippet) {
112
+ console.log('Setting the snippet...');
113
+ this.setSnippet(this.snippet);
114
+ this.snippet = null;
115
+ }
116
+ }}
105
117
  />
106
118
  );
107
119
  }
108
120
 
109
121
  setSnippet = (snippet: string) => {
122
+ this.snippet = snippet;
110
123
  const view = this.checkoutViewRef.current;
111
- if (view != null) {
124
+ if (view != null && this.isCheckoutViewReady) {
112
125
  RNKlarnaCheckoutViewCommands.setSnippet(view, snippet);
113
126
  }
114
127
  };
115
128
 
116
129
  suspend = () => {
117
130
  const view = this.checkoutViewRef.current;
118
- if (view != null) {
131
+ if (view != null && this.isCheckoutViewReady) {
119
132
  RNKlarnaCheckoutViewCommands.suspend(view);
120
133
  }
121
134
  };
122
135
 
123
136
  resume = () => {
124
137
  const view = this.checkoutViewRef.current;
125
- if (view != null) {
138
+ if (view != null && this.isCheckoutViewReady) {
126
139
  RNKlarnaCheckoutViewCommands.resume(view);
127
140
  }
128
141
  };
@@ -0,0 +1,122 @@
1
+ import RNKlarnaSignIn from './specs/NativeKlarnaSignIn';
2
+ import type { KlarnaEnvironment } from './types/common/KlarnaEnvironment';
3
+ import type { KlarnaMobileSDKError } from './types/common/KlarnaMobileSDKError';
4
+ import type { KlarnaProductEvent } from './types/common/KlarnaProductEvent';
5
+ import type { KlarnaRegion } from './types/common/KlarnaRegion';
6
+
7
+ export interface KlarnaSignInProps {
8
+ readonly environment: KlarnaEnvironment;
9
+ readonly region: KlarnaRegion;
10
+ readonly returnUrl: string;
11
+ }
12
+
13
+ // declare a class that receive the KlarnaSignInProps in the initializer and expose a method to sign in
14
+ export class KlarnaSignInSDK {
15
+ readonly environment: KlarnaEnvironment;
16
+ readonly region: KlarnaRegion;
17
+ readonly returnUrl: string;
18
+ readonly instanceId: string;
19
+
20
+ private constructor(props: KlarnaSignInProps, instanceId: string) {
21
+ this.environment = props.environment;
22
+ this.region = props.region;
23
+ this.returnUrl = props.returnUrl;
24
+ this.instanceId = instanceId;
25
+ }
26
+
27
+ static async createInstance(
28
+ props: KlarnaSignInProps
29
+ ): Promise<KlarnaSignInSDK> {
30
+ if (props.returnUrl.trim() === '') {
31
+ return new Promise((_, reject) => {
32
+ const sdkError: KlarnaMobileSDKError = {
33
+ isFatal: true,
34
+ message: 'Invalid or null return URL',
35
+ name: 'KlarnaSignInMissingReturnUrl',
36
+ };
37
+ reject(sdkError);
38
+ });
39
+ }
40
+ return new Promise((resolve, reject) => {
41
+ let instanceId = Math.random().toString(36).substring(2, 15);
42
+ RNKlarnaSignIn.init(
43
+ instanceId,
44
+ props.environment,
45
+ props.region,
46
+ props.returnUrl
47
+ )
48
+ .then((_) => {
49
+ resolve(new KlarnaSignInSDK(props, instanceId));
50
+ })
51
+ .catch((error) => {
52
+ const errorInfo = error.userInfo;
53
+ const sdkError: KlarnaMobileSDKError = {
54
+ isFatal: errorInfo.isFatal,
55
+ message: errorInfo.message,
56
+ name: errorInfo.name,
57
+ sessionId: errorInfo.sessionId,
58
+ params: errorInfo.params,
59
+ };
60
+ reject(sdkError);
61
+ });
62
+ });
63
+ }
64
+
65
+ dispose(): Promise<void> {
66
+ return RNKlarnaSignIn.dispose(this.instanceId);
67
+ }
68
+
69
+ signIn(
70
+ clientId: string,
71
+ scope: string,
72
+ market: string,
73
+ locale: string,
74
+ tokenizationId?: string
75
+ ): Promise<KlarnaProductEvent> {
76
+ const scopes = scope.split(' ');
77
+ const tokenizationScopes = [
78
+ 'payment:customer_not_present',
79
+ 'payment:customer_present',
80
+ ];
81
+ const isTokenizationScopeIncluded = tokenizationScopes.some((value) =>
82
+ scopes.includes(value)
83
+ );
84
+ if (
85
+ isTokenizationScopeIncluded &&
86
+ (!tokenizationId || tokenizationId.trim() === '')
87
+ ) {
88
+ return new Promise((_, reject) => {
89
+ const sdkError: KlarnaMobileSDKError = {
90
+ isFatal: false,
91
+ message: `Found ${tokenizationScopes} in scope but tokenizationId is empty.`,
92
+ name: 'KlarnaSignInMissingTokenizationId',
93
+ };
94
+ reject(sdkError);
95
+ });
96
+ }
97
+ return new Promise((resolve, reject) => {
98
+ RNKlarnaSignIn.signIn(
99
+ this.instanceId,
100
+ clientId,
101
+ scope,
102
+ market,
103
+ locale,
104
+ tokenizationId
105
+ )
106
+ .then((result) => {
107
+ resolve(result);
108
+ })
109
+ .catch((error) => {
110
+ const errorInfo = error.userInfo;
111
+ const sdkError: KlarnaMobileSDKError = {
112
+ isFatal: errorInfo.isFatal,
113
+ message: errorInfo.message,
114
+ name: errorInfo.name,
115
+ sessionId: errorInfo.sessionId,
116
+ params: errorInfo.params,
117
+ };
118
+ reject(sdkError);
119
+ });
120
+ });
121
+ }
122
+ }
package/src/index.tsx CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './KlarnaPaymentView';
2
2
  export * from './KlarnaStandaloneWebView';
3
3
  export * from './KlarnaCheckoutView';
4
+ export * from './KlarnaSignInSDK';
@@ -30,6 +30,7 @@ export interface RNKlarnaCheckoutViewProps extends ViewProps {
30
30
  readonly height: string;
31
31
  }>
32
32
  >;
33
+ readonly onCheckoutViewReady?: DirectEventHandler<{}>;
33
34
  }
34
35
 
35
36
  type KlarnaCheckoutViewNativeComponentType =
@@ -0,0 +1,25 @@
1
+ import type { TurboModule } from 'react-native';
2
+ import { TurboModuleRegistry } from 'react-native';
3
+ import type { KlarnaProductEvent } from 'src/types/common/KlarnaProductEvent';
4
+
5
+ export interface Spec extends TurboModule {
6
+ init(
7
+ instanceId: string,
8
+ environment: string,
9
+ region: string,
10
+ returnUrl: string
11
+ ): Promise<void>;
12
+
13
+ dispose(instanceId: string): Promise<void>;
14
+
15
+ signIn(
16
+ instanceId: string,
17
+ clientId: string,
18
+ scope: string,
19
+ market: string,
20
+ locale: string,
21
+ tokenizationId?: string
22
+ ): Promise<KlarnaProductEvent>;
23
+ }
24
+
25
+ export default TurboModuleRegistry.getEnforcing<Spec>('RNKlarnaSignIn');
@@ -0,0 +1,4 @@
1
+ export enum KlarnaEnvironment {
2
+ Playground = 'playground',
3
+ Production = 'production',
4
+ }
@@ -2,4 +2,6 @@ export interface KlarnaMobileSDKError {
2
2
  readonly isFatal: boolean;
3
3
  readonly message: string;
4
4
  readonly name: string;
5
+ readonly sessionId?: string;
6
+ readonly params?: { [key: string]: any };
5
7
  }
@@ -1,4 +1,5 @@
1
1
  export interface KlarnaProductEvent {
2
2
  readonly action: string;
3
3
  readonly params: { [key: string]: any };
4
+ readonly sessionId?: string;
4
5
  }
@@ -0,0 +1,5 @@
1
+ export enum KlarnaRegion {
2
+ EU = 'eu',
3
+ NA = 'na',
4
+ OC = 'oc',
5
+ }