react-native-klarna-inapp-sdk 2.3.15 → 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/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 @@
|
|
|
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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"}
|
package/lib/module/index.js
CHANGED
package/lib/module/index.js.map
CHANGED
|
@@ -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"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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"}
|
|
@@ -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 +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"}
|
|
@@ -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 @@
|
|
|
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"}
|
|
@@ -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;
|
|
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"}
|
|
@@ -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;
|
|
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 @@
|
|
|
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.
|
|
4
|
+
"version": "2.4.0",
|
|
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",
|
|
@@ -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
|
@@ -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');
|