react-native-klarna-inapp-sdk 2.4.0 → 2.4.2
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/android/build.gradle +1 -1
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/checkout/KlarnaCheckoutViewEventSender.java +7 -2
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/checkout/KlarnaCheckoutViewManager.java +51 -18
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/WebViewResizeObserver.java +9 -4
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/ui/ResizeObserverWrapperView.java +3 -2
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/payments/PaymentViewWrapper.java +1 -1
- package/ios/Sources/KlarnaCheckoutViewManager.mm +32 -24
- package/ios/Sources/view/KlarnaCheckoutViewWrapper.h +1 -3
- package/ios/Sources/view/newarch/KlarnaCheckoutViewWrapper.mm +53 -29
- package/ios/Sources/view/oldarch/KlarnaCheckoutViewWrapper.mm +58 -20
- package/lib/commonjs/KlarnaCheckoutView.js +16 -3
- package/lib/commonjs/KlarnaCheckoutView.js.map +1 -1
- package/lib/commonjs/specs/KlarnaCheckoutViewNativeComponent.js.map +1 -1
- package/lib/module/KlarnaCheckoutView.js +16 -3
- package/lib/module/KlarnaCheckoutView.js.map +1 -1
- package/lib/module/specs/KlarnaCheckoutViewNativeComponent.js.map +1 -1
- package/lib/typescript/KlarnaCheckoutView.d.ts +2 -0
- package/lib/typescript/KlarnaCheckoutView.d.ts.map +1 -1
- package/lib/typescript/specs/KlarnaCheckoutViewNativeComponent.d.ts +1 -0
- package/lib/typescript/specs/KlarnaCheckoutViewNativeComponent.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/KlarnaCheckoutView.tsx +16 -3
- package/src/specs/KlarnaCheckoutViewNativeComponent.ts +1 -0
package/android/build.gradle
CHANGED
|
@@ -109,7 +109,7 @@ dependencies {
|
|
|
109
109
|
//noinspection GradleDynamicVersion
|
|
110
110
|
implementation "com.facebook.react:react-native:${getExtOrFallback('reactnativeVersion', '+')}"
|
|
111
111
|
|
|
112
|
-
implementation 'com.klarna.mobile:sdk:2.6.
|
|
112
|
+
implementation 'com.klarna.mobile:sdk:2.6.29'
|
|
113
113
|
|
|
114
114
|
testImplementation "junit:junit:4.13.2"
|
|
115
115
|
testImplementation 'androidx.test:core:1.5.0'
|
|
@@ -8,7 +8,6 @@ import com.facebook.react.uimanager.events.EventDispatcher;
|
|
|
8
8
|
import com.klarna.mobile.sdk.KlarnaMobileSDKError;
|
|
9
9
|
import com.klarna.mobile.sdk.api.KlarnaProductEvent;
|
|
10
10
|
import com.klarna.mobile.sdk.api.checkout.KlarnaCheckoutView;
|
|
11
|
-
import com.klarna.mobile.sdk.reactnative.common.event.ComponentEvent;
|
|
12
11
|
import com.klarna.mobile.sdk.reactnative.common.event.ComponentEventSender;
|
|
13
12
|
import com.klarna.mobile.sdk.reactnative.common.event.KlarnaEventHandlerEventsUtil;
|
|
14
13
|
import com.klarna.mobile.sdk.reactnative.common.ui.ResizeObserverWrapperView;
|
|
@@ -23,6 +22,7 @@ import java.util.Map;
|
|
|
23
22
|
public class KlarnaCheckoutViewEventSender extends ComponentEventSender<ResizeObserverWrapperView<KlarnaCheckoutView>> {
|
|
24
23
|
|
|
25
24
|
private static final String EVENT_NAME_ON_RESIZED = "onResized";
|
|
25
|
+
private static final String EVENT_NAME_ON_CHECKOUT_VIEW_READY = "onCheckoutViewReady";
|
|
26
26
|
|
|
27
27
|
KlarnaCheckoutViewEventSender(@NonNull final Map<WeakReference<ResizeObserverWrapperView<KlarnaCheckoutView>>, EventDispatcher> viewToDispatcher) {
|
|
28
28
|
super(viewToDispatcher);
|
|
@@ -33,7 +33,8 @@ public class KlarnaCheckoutViewEventSender extends ComponentEventSender<ResizeOb
|
|
|
33
33
|
return Arrays.asList(
|
|
34
34
|
KlarnaEventHandlerEventsUtil.EVENT_NAME_ON_EVENT,
|
|
35
35
|
KlarnaEventHandlerEventsUtil.EVENT_NAME_ON_ERROR,
|
|
36
|
-
EVENT_NAME_ON_RESIZED
|
|
36
|
+
EVENT_NAME_ON_RESIZED,
|
|
37
|
+
EVENT_NAME_ON_CHECKOUT_VIEW_READY
|
|
37
38
|
);
|
|
38
39
|
}
|
|
39
40
|
|
|
@@ -53,4 +54,8 @@ public class KlarnaCheckoutViewEventSender extends ComponentEventSender<ResizeOb
|
|
|
53
54
|
);
|
|
54
55
|
postEventForView(view, EVENT_NAME_ON_RESIZED, params);
|
|
55
56
|
}
|
|
57
|
+
|
|
58
|
+
public void sendOnKlarnaCheckoutViewReadyEvent(@Nullable KlarnaCheckoutView view) {
|
|
59
|
+
postEventForView(view, EVENT_NAME_ON_CHECKOUT_VIEW_READY, null);
|
|
60
|
+
}
|
|
56
61
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
package com.klarna.mobile.sdk.reactnative.checkout;
|
|
2
2
|
|
|
3
3
|
import android.os.Handler;
|
|
4
|
+
import android.os.Looper;
|
|
5
|
+
import android.view.View;
|
|
4
6
|
|
|
5
7
|
import androidx.annotation.NonNull;
|
|
6
8
|
import androidx.annotation.Nullable;
|
|
@@ -12,7 +14,6 @@ import com.facebook.react.uimanager.ThemedReactContext;
|
|
|
12
14
|
import com.facebook.react.uimanager.UIManagerHelper;
|
|
13
15
|
import com.facebook.react.uimanager.annotations.ReactProp;
|
|
14
16
|
import com.facebook.react.uimanager.events.EventDispatcher;
|
|
15
|
-
import com.klarna.mobile.sdk.api.KlarnaLoggingLevel;
|
|
16
17
|
import com.klarna.mobile.sdk.api.checkout.KlarnaCheckoutView;
|
|
17
18
|
import com.klarna.mobile.sdk.reactnative.common.WebViewResizeObserver;
|
|
18
19
|
import com.klarna.mobile.sdk.reactnative.common.ui.ResizeObserverWrapperView;
|
|
@@ -41,13 +42,15 @@ public class KlarnaCheckoutViewManager extends RNKlarnaCheckoutViewSpec<ResizeOb
|
|
|
41
42
|
|
|
42
43
|
private final KlarnaCheckoutViewEventSender eventSender;
|
|
43
44
|
private final KlarnaCheckoutViewEventHandler eventHandler;
|
|
45
|
+
private Runnable javascriptInterfaceInjectionRunnable;
|
|
46
|
+
private final Handler handler = new Handler(Looper.getMainLooper());
|
|
44
47
|
|
|
45
48
|
public KlarnaCheckoutViewManager(ReactApplicationContext reactApplicationContext) {
|
|
46
49
|
super();
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
50
|
+
viewToDispatcher = new HashMap<>();
|
|
51
|
+
reactAppContext = reactApplicationContext;
|
|
52
|
+
eventSender = new KlarnaCheckoutViewEventSender(viewToDispatcher);
|
|
53
|
+
eventHandler = new KlarnaCheckoutViewEventHandler(eventSender);
|
|
51
54
|
}
|
|
52
55
|
|
|
53
56
|
@NonNull
|
|
@@ -60,7 +63,6 @@ public class KlarnaCheckoutViewManager extends RNKlarnaCheckoutViewSpec<ResizeOb
|
|
|
60
63
|
@Override
|
|
61
64
|
protected ResizeObserverWrapperView<KlarnaCheckoutView> createViewInstance(@NonNull ThemedReactContext themedReactContext) {
|
|
62
65
|
KlarnaCheckoutView klarnaCheckoutView = new KlarnaCheckoutView(reactAppContext.getCurrentActivity(), null, 0, eventHandler);
|
|
63
|
-
klarnaCheckoutView.setLoggingLevel(KlarnaLoggingLevel.Verbose);
|
|
64
66
|
ResizeObserverWrapperView<KlarnaCheckoutView> view = new ResizeObserverWrapperView<>(reactAppContext, null, klarnaCheckoutView);
|
|
65
67
|
|
|
66
68
|
// Each view has its own event dispatcher.
|
|
@@ -68,15 +70,24 @@ public class KlarnaCheckoutViewManager extends RNKlarnaCheckoutViewSpec<ResizeOb
|
|
|
68
70
|
viewToDispatcher.put(new WeakReference<>(view), eventDispatcher);
|
|
69
71
|
|
|
70
72
|
view.initiateWebViewResizeObserver(WebViewResizeObserver.TargetElement.CHECKOUT_CONTAINER, (resizeObserverWrapperView, newHeight) -> {
|
|
71
|
-
if (resizeObserverWrapperView == null) {
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
if (eventDispatcher == null) {
|
|
73
|
+
if (resizeObserverWrapperView == null || eventDispatcher == null) {
|
|
75
74
|
return;
|
|
76
75
|
}
|
|
77
76
|
eventSender.sendOnResizedEvent(resizeObserverWrapperView.getView(), newHeight);
|
|
78
77
|
});
|
|
79
|
-
view.
|
|
78
|
+
view.addJavascriptInterfaceToWebView();
|
|
79
|
+
|
|
80
|
+
view.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
|
|
81
|
+
@Override
|
|
82
|
+
public void onViewAttachedToWindow(@NonNull View v) {
|
|
83
|
+
eventSender.sendOnKlarnaCheckoutViewReadyEvent(view.getView());
|
|
84
|
+
v.removeOnAttachStateChangeListener(this);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
@Override
|
|
88
|
+
public void onViewDetachedFromWindow(@NonNull View v) {
|
|
89
|
+
}
|
|
90
|
+
});
|
|
80
91
|
|
|
81
92
|
return view;
|
|
82
93
|
}
|
|
@@ -128,20 +139,42 @@ public class KlarnaCheckoutViewManager extends RNKlarnaCheckoutViewSpec<ResizeOb
|
|
|
128
139
|
|
|
129
140
|
@Override
|
|
130
141
|
public void setSnippet(ResizeObserverWrapperView<KlarnaCheckoutView> view, String snippet) {
|
|
131
|
-
view
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
142
|
+
if (view == null) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
KlarnaCheckoutView klarnaCheckoutView = view.getView();
|
|
147
|
+
if (klarnaCheckoutView == null) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (snippet == null || snippet.isEmpty()) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
klarnaCheckoutView.setSnippet(snippet);
|
|
156
|
+
view.addJavascriptInterfaceToWebView();
|
|
157
|
+
|
|
158
|
+
if (javascriptInterfaceInjectionRunnable != null) {
|
|
159
|
+
handler.removeCallbacks(javascriptInterfaceInjectionRunnable);
|
|
160
|
+
}
|
|
161
|
+
javascriptInterfaceInjectionRunnable = view::injectListenerToWebView;
|
|
162
|
+
handler.postDelayed(javascriptInterfaceInjectionRunnable, 500);
|
|
136
163
|
}
|
|
137
164
|
|
|
138
165
|
@Override
|
|
139
166
|
public void suspend(ResizeObserverWrapperView<KlarnaCheckoutView> view) {
|
|
140
|
-
view.getView()
|
|
167
|
+
KlarnaCheckoutView klarnaCheckoutView = view.getView();
|
|
168
|
+
if (klarnaCheckoutView != null) {
|
|
169
|
+
klarnaCheckoutView.suspend();
|
|
170
|
+
}
|
|
141
171
|
}
|
|
142
172
|
|
|
143
173
|
@Override
|
|
144
174
|
public void resume(ResizeObserverWrapperView<KlarnaCheckoutView> view) {
|
|
145
|
-
view.getView()
|
|
175
|
+
KlarnaCheckoutView klarnaCheckoutView = view.getView();
|
|
176
|
+
if (klarnaCheckoutView != null) {
|
|
177
|
+
klarnaCheckoutView.resume();
|
|
178
|
+
}
|
|
146
179
|
}
|
|
147
180
|
}
|
package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/WebViewResizeObserver.java
CHANGED
|
@@ -29,8 +29,10 @@ public class WebViewResizeObserver {
|
|
|
29
29
|
this.targetElement = targetElement;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
public void
|
|
33
|
-
webView
|
|
32
|
+
public void addJavascriptInterface(WebView webView) {
|
|
33
|
+
if (webView != null) {
|
|
34
|
+
webView.addJavascriptInterface(this, JS_INTERFACE_NAME);
|
|
35
|
+
}
|
|
34
36
|
}
|
|
35
37
|
|
|
36
38
|
public void injectListener(WebView webView) {
|
|
@@ -62,12 +64,12 @@ public class WebViewResizeObserver {
|
|
|
62
64
|
}
|
|
63
65
|
|
|
64
66
|
private void injectScript(WebView webView, String script) {
|
|
65
|
-
String
|
|
67
|
+
String scriptWrappedInTryCatch = "try {\n" +
|
|
66
68
|
" " + script + "\n" +
|
|
67
69
|
"} catch (error) {\n" +
|
|
68
70
|
" console.error(\"inject failed\")\n" +
|
|
69
71
|
"}";
|
|
70
|
-
evaluateJSCompat(webView,
|
|
72
|
+
evaluateJSCompat(webView, scriptWrappedInTryCatch);
|
|
71
73
|
}
|
|
72
74
|
|
|
73
75
|
/**
|
|
@@ -77,6 +79,9 @@ public class WebViewResizeObserver {
|
|
|
77
79
|
* @param script The script to be evaluated
|
|
78
80
|
*/
|
|
79
81
|
private void evaluateJSCompat(WebView webView, String script) {
|
|
82
|
+
if (webView == null) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
80
85
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
|
81
86
|
webView.evaluateJavascript(script, null);
|
|
82
87
|
} else {
|
|
@@ -49,10 +49,10 @@ public class ResizeObserverWrapperView<T extends ViewGroup> extends WrapperView<
|
|
|
49
49
|
this.webViewResizeObserver = new WebViewResizeObserver(webViewResizeObserverCallback, targetElement);
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
public void
|
|
52
|
+
public void addJavascriptInterfaceToWebView() {
|
|
53
53
|
WebView webView = findWebView(getView());
|
|
54
54
|
if (webView != null && webViewResizeObserver != null) {
|
|
55
|
-
webViewResizeObserver.
|
|
55
|
+
webViewResizeObserver.addJavascriptInterface(webView);
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
|
|
@@ -63,6 +63,7 @@ public class ResizeObserverWrapperView<T extends ViewGroup> extends WrapperView<
|
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
+
@Nullable
|
|
66
67
|
private WebView findWebView(T view) {
|
|
67
68
|
if (view == null) {
|
|
68
69
|
return null;
|
package/android/src/main/java/com/klarna/mobile/sdk/reactnative/payments/PaymentViewWrapper.java
CHANGED
|
@@ -36,7 +36,7 @@ public class PaymentViewWrapper extends LinearLayout implements WebViewResizeObs
|
|
|
36
36
|
resizeObserver = new WebViewResizeObserver(this, WebViewResizeObserver.TargetElement.PAYMENT_CONTAINER);
|
|
37
37
|
WebView webView = getPaymentViewWebView();
|
|
38
38
|
if (webView != null) {
|
|
39
|
-
resizeObserver.
|
|
39
|
+
resizeObserver.addJavascriptInterface(webView);
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
|
|
@@ -1,20 +1,21 @@
|
|
|
1
|
-
#import "KlarnaCheckoutViewManager.h"
|
|
2
|
-
|
|
3
1
|
#import <React/RCTUIManager.h>
|
|
4
2
|
#import <React/RCTLog.h>
|
|
5
|
-
|
|
3
|
+
#import "KlarnaCheckoutViewManager.h"
|
|
6
4
|
#import "view/KlarnaCheckoutViewWrapper.h"
|
|
7
5
|
|
|
8
6
|
@implementation KlarnaCheckoutViewManager
|
|
9
7
|
|
|
10
8
|
RCT_EXPORT_MODULE(RNKlarnaCheckoutView)
|
|
11
9
|
|
|
12
|
-
#pragma mark - View
|
|
10
|
+
#pragma mark - View Properties
|
|
13
11
|
|
|
14
12
|
RCT_EXPORT_VIEW_PROPERTY(returnUrl, NSString)
|
|
15
13
|
RCT_EXPORT_VIEW_PROPERTY(onEvent, RCTDirectEventBlock)
|
|
16
14
|
RCT_EXPORT_VIEW_PROPERTY(onError, RCTDirectEventBlock)
|
|
17
15
|
RCT_EXPORT_VIEW_PROPERTY(onResized, RCTDirectEventBlock)
|
|
16
|
+
RCT_EXPORT_VIEW_PROPERTY(onCheckoutViewReady, RCTDirectEventBlock)
|
|
17
|
+
|
|
18
|
+
#pragma mark - View Creation
|
|
18
19
|
|
|
19
20
|
- (UIView *)view
|
|
20
21
|
{
|
|
@@ -23,39 +24,46 @@ RCT_EXPORT_VIEW_PROPERTY(onResized, RCTDirectEventBlock)
|
|
|
23
24
|
return wrapper;
|
|
24
25
|
}
|
|
25
26
|
|
|
26
|
-
#pragma mark - Exported Methods
|
|
27
|
+
#pragma mark - Exported Methods to React Native
|
|
27
28
|
|
|
28
|
-
RCT_EXPORT_METHOD(setSnippet:(nonnull NSNumber*)reactTag snippet:(NSString*)snippet)
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
RCT_EXPORT_METHOD(setSnippet:(nonnull NSNumber *)reactTag snippet:(NSString *)snippet)
|
|
30
|
+
{
|
|
31
|
+
[self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
|
|
32
|
+
KlarnaCheckoutViewWrapper *view = [self checkoutViewWrapperForTag:reactTag fromRegistry:viewRegistry];
|
|
33
|
+
if (view) {
|
|
34
|
+
[view setSnippet:snippet];
|
|
34
35
|
}
|
|
35
|
-
[view setSnippet:snippet];
|
|
36
36
|
}];
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
RCT_EXPORT_METHOD(suspend:(nonnull NSNumber*)reactTag) {
|
|
39
|
+
RCT_EXPORT_METHOD(suspend:(nonnull NSNumber *)reactTag) {
|
|
40
40
|
[self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, NSDictionary<NSNumber *,UIView *> *viewRegistry) {
|
|
41
|
-
KlarnaCheckoutViewWrapper*
|
|
42
|
-
if (
|
|
43
|
-
|
|
44
|
-
return;
|
|
41
|
+
KlarnaCheckoutViewWrapper *view = [self checkoutViewWrapperForTag:reactTag fromRegistry:viewRegistry];
|
|
42
|
+
if (view) {
|
|
43
|
+
[view suspend];
|
|
45
44
|
}
|
|
46
|
-
[view suspend];
|
|
47
45
|
}];
|
|
48
46
|
}
|
|
49
47
|
|
|
50
|
-
RCT_EXPORT_METHOD(resume:(nonnull NSNumber*)reactTag) {
|
|
48
|
+
RCT_EXPORT_METHOD(resume:(nonnull NSNumber *)reactTag) {
|
|
51
49
|
[self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, NSDictionary<NSNumber *,UIView *> *viewRegistry) {
|
|
52
|
-
KlarnaCheckoutViewWrapper*
|
|
53
|
-
if (
|
|
54
|
-
|
|
55
|
-
return;
|
|
50
|
+
KlarnaCheckoutViewWrapper *view = [self checkoutViewWrapperForTag:reactTag fromRegistry:viewRegistry];
|
|
51
|
+
if (view) {
|
|
52
|
+
[view resume];
|
|
56
53
|
}
|
|
57
|
-
[view resume];
|
|
58
54
|
}];
|
|
59
55
|
}
|
|
60
56
|
|
|
57
|
+
#pragma mark - Private Helper Methods
|
|
58
|
+
|
|
59
|
+
- (KlarnaCheckoutViewWrapper *)checkoutViewWrapperForTag:(NSNumber *)reactTag fromRegistry:(NSDictionary<NSNumber *, UIView *> *)viewRegistry
|
|
60
|
+
{
|
|
61
|
+
UIView *view = viewRegistry[reactTag];
|
|
62
|
+
if (!view || ![view isKindOfClass:[KlarnaCheckoutViewWrapper class]]) {
|
|
63
|
+
RCTLogError(@"Can't find KlarnaCheckoutViewWrapper with tag #%@", reactTag);
|
|
64
|
+
return nil;
|
|
65
|
+
}
|
|
66
|
+
return (KlarnaCheckoutViewWrapper *)view;
|
|
67
|
+
}
|
|
68
|
+
|
|
61
69
|
@end
|
|
@@ -8,10 +8,8 @@
|
|
|
8
8
|
#import <React/RCTView.h>
|
|
9
9
|
#endif
|
|
10
10
|
|
|
11
|
-
|
|
12
11
|
NS_ASSUME_NONNULL_BEGIN
|
|
13
12
|
|
|
14
|
-
|
|
15
13
|
#if RCT_NEW_ARCH_ENABLED
|
|
16
14
|
@interface KlarnaCheckoutViewWrapper : RCTViewComponentView
|
|
17
15
|
#else
|
|
@@ -20,6 +18,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
20
18
|
@property (nonatomic, copy) RCTDirectEventBlock onEvent;
|
|
21
19
|
@property (nonatomic, copy) RCTDirectEventBlock onError;
|
|
22
20
|
@property (nonatomic, copy) RCTDirectEventBlock onResized;
|
|
21
|
+
@property (nonatomic, copy) RCTDirectEventBlock onCheckoutViewReady;
|
|
23
22
|
|
|
24
23
|
@property (nonatomic, strong) NSString* returnUrl;
|
|
25
24
|
|
|
@@ -38,5 +37,4 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
38
37
|
|
|
39
38
|
@end
|
|
40
39
|
|
|
41
|
-
|
|
42
40
|
NS_ASSUME_NONNULL_END
|
|
@@ -1,35 +1,34 @@
|
|
|
1
1
|
#if RCT_NEW_ARCH_ENABLED
|
|
2
2
|
|
|
3
|
-
#import "../KlarnaCheckoutViewWrapper.h"
|
|
4
|
-
#import "../../common/RNMobileSDKUtils.h"
|
|
5
|
-
|
|
6
3
|
#import <AVFoundation/AVFoundation.h>
|
|
7
|
-
#import <KlarnaMobileSDK/KlarnaMobileSDK-Swift.h>
|
|
8
4
|
#import <React/RCTLog.h>
|
|
9
|
-
|
|
10
5
|
#import <react/renderer/components/RNKlarnaMobileSDK/ComponentDescriptors.h>
|
|
11
6
|
#import <react/renderer/components/RNKlarnaMobileSDK/EventEmitters.h>
|
|
12
7
|
#import <react/renderer/components/RNKlarnaMobileSDK/Props.h>
|
|
13
8
|
#import <react/renderer/components/RNKlarnaMobileSDK/RCTComponentViewHelpers.h>
|
|
14
|
-
|
|
9
|
+
#import "../KlarnaCheckoutViewWrapper.h"
|
|
10
|
+
#import "../../common/RNMobileSDKUtils.h"
|
|
15
11
|
#import "RCTFabricComponentsPlugins.h"
|
|
12
|
+
#import <KlarnaMobileSDK/KlarnaMobileSDK-Swift.h>
|
|
16
13
|
|
|
17
14
|
using namespace facebook::react;
|
|
18
15
|
|
|
19
16
|
@interface KlarnaCheckoutViewWrapper () <KlarnaEventHandler, KlarnaSizingDelegate, RCTRNKlarnaCheckoutViewViewProtocol>
|
|
20
17
|
|
|
21
|
-
@property (nonatomic, strong) KlarnaCheckoutView*
|
|
18
|
+
@property (nonatomic, strong) KlarnaCheckoutView* klarnaCheckoutView;
|
|
19
|
+
@property (nonatomic, assign) BOOL isCheckoutViewReadyEventSent;
|
|
22
20
|
|
|
23
21
|
@end
|
|
24
22
|
|
|
25
23
|
@implementation KlarnaCheckoutViewWrapper
|
|
26
24
|
|
|
27
|
-
#pragma mark -
|
|
25
|
+
#pragma mark - Initialization
|
|
28
26
|
|
|
29
27
|
- (instancetype)initWithFrame:(CGRect)frame
|
|
30
28
|
{
|
|
31
29
|
self = [super initWithFrame:frame];
|
|
32
30
|
if (self) {
|
|
31
|
+
self.isCheckoutViewReadyEventSent = NO;
|
|
33
32
|
static const auto defaultProps = std::make_shared<const RNKlarnaCheckoutViewProps>();
|
|
34
33
|
_props = defaultProps;
|
|
35
34
|
}
|
|
@@ -51,7 +50,7 @@ Class<RCTComponentViewProtocol> RNKlarnaCheckoutViewCls(void)
|
|
|
51
50
|
RCTRNKlarnaCheckoutViewHandleCommand(self, commandName, args);
|
|
52
51
|
}
|
|
53
52
|
|
|
54
|
-
#pragma mark -
|
|
53
|
+
#pragma mark - KlarnaCheckoutView Props Update
|
|
55
54
|
|
|
56
55
|
- (void)updateProps:(const facebook::react::Props::Shared &)props oldProps:(const facebook::react::Props::Shared &)oldProps {
|
|
57
56
|
const auto &oldViewProps = *std::static_pointer_cast<RNKlarnaCheckoutViewProps const>(_props);
|
|
@@ -59,45 +58,70 @@ Class<RCTComponentViewProtocol> RNKlarnaCheckoutViewCls(void)
|
|
|
59
58
|
|
|
60
59
|
if (oldViewProps.returnUrl != newViewProps.returnUrl) {
|
|
61
60
|
NSString * newReturnUrl = [[NSString alloc] initWithUTF8String: newViewProps.returnUrl.c_str()];
|
|
62
|
-
if (self.
|
|
63
|
-
self.
|
|
61
|
+
if (self.klarnaCheckoutView != nil) {
|
|
62
|
+
self.klarnaCheckoutView.returnURL = [NSURL URLWithString:newReturnUrl];
|
|
64
63
|
} else {
|
|
65
|
-
[self
|
|
64
|
+
[self initializeKlarnaCheckoutView:newReturnUrl];
|
|
66
65
|
}
|
|
67
66
|
}
|
|
68
67
|
|
|
69
68
|
[super updateProps:props oldProps:oldProps];
|
|
70
69
|
}
|
|
71
70
|
|
|
71
|
+
- (void)updateEventEmitter:(const facebook::react::EventEmitter::Shared &)eventEmitter
|
|
72
|
+
{
|
|
73
|
+
[super updateEventEmitter:eventEmitter];
|
|
72
74
|
|
|
73
|
-
|
|
75
|
+
if (!self.isCheckoutViewReadyEventSent && self.klarnaCheckoutView != nil && _eventEmitter) {
|
|
76
|
+
RCTLogInfo(@"Sending onCheckoutViewReady event.");
|
|
77
|
+
std::dynamic_pointer_cast<const RNKlarnaCheckoutViewEventEmitter>(_eventEmitter)
|
|
78
|
+
->onCheckoutViewReady({});
|
|
79
|
+
self.isCheckoutViewReadyEventSent = YES;
|
|
80
|
+
} else {
|
|
81
|
+
RCTLogInfo(@"Could not send onCheckoutViewReady event.");
|
|
82
|
+
}
|
|
83
|
+
}
|
|
74
84
|
|
|
75
|
-
-
|
|
76
|
-
|
|
77
|
-
|
|
85
|
+
#pragma mark - KlarnaCheckoutView Setup
|
|
86
|
+
|
|
87
|
+
- (void)initializeKlarnaCheckoutView:(NSString*)returnUrl {
|
|
88
|
+
self.isCheckoutViewReadyEventSent = NO;
|
|
89
|
+
self.klarnaCheckoutView = [[KlarnaCheckoutView alloc] initWithReturnURL:[NSURL URLWithString:returnUrl] eventHandler:self];
|
|
90
|
+
self.klarnaCheckoutView.sizingDelegate = self;
|
|
78
91
|
|
|
79
|
-
self.
|
|
92
|
+
self.klarnaCheckoutView.translatesAutoresizingMaskIntoConstraints = NO;
|
|
80
93
|
|
|
81
|
-
[self addSubview:self.
|
|
94
|
+
[self addSubview:self.klarnaCheckoutView];
|
|
82
95
|
|
|
83
96
|
[NSLayoutConstraint activateConstraints:[[NSArray alloc] initWithObjects:
|
|
84
|
-
[self.
|
|
85
|
-
[self.
|
|
86
|
-
[self.
|
|
87
|
-
[self.
|
|
97
|
+
[self.klarnaCheckoutView.topAnchor constraintEqualToAnchor:self.topAnchor],
|
|
98
|
+
[self.klarnaCheckoutView.bottomAnchor constraintEqualToAnchor:self.bottomAnchor],
|
|
99
|
+
[self.klarnaCheckoutView.leadingAnchor constraintEqualToAnchor:self.leadingAnchor],
|
|
100
|
+
[self.klarnaCheckoutView.trailingAnchor constraintEqualToAnchor:self.trailingAnchor], nil
|
|
88
101
|
]];
|
|
89
102
|
}
|
|
90
103
|
|
|
104
|
+
#pragma mark - Methods Exposed to React Native
|
|
105
|
+
|
|
91
106
|
- (void)setSnippet:(NSString *)snippet {
|
|
92
|
-
[self.
|
|
107
|
+
[self.klarnaCheckoutView setSnippet:snippet];
|
|
93
108
|
}
|
|
94
109
|
|
|
95
110
|
- (void)suspend {
|
|
96
|
-
[self.
|
|
111
|
+
[self.klarnaCheckoutView suspend];
|
|
97
112
|
}
|
|
98
113
|
|
|
99
114
|
- (void)resume {
|
|
100
|
-
[self.
|
|
115
|
+
[self.klarnaCheckoutView resume];
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
#pragma mark - UIView Lifecycle
|
|
119
|
+
|
|
120
|
+
- (void)didMoveToWindow {
|
|
121
|
+
[super didMoveToWindow];
|
|
122
|
+
if (!self.window) {
|
|
123
|
+
self.isCheckoutViewReadyEventSent = NO;
|
|
124
|
+
}
|
|
101
125
|
}
|
|
102
126
|
|
|
103
127
|
#pragma mark - KlarnaEventHandler
|
|
@@ -114,13 +138,13 @@ Class<RCTComponentViewProtocol> RNKlarnaCheckoutViewCls(void)
|
|
|
114
138
|
}
|
|
115
139
|
});
|
|
116
140
|
} else {
|
|
117
|
-
RCTLogInfo(@"_eventEmitter is nil!");
|
|
141
|
+
RCTLogInfo(@"Could not send onEvent event. _eventEmitter is nil!");
|
|
118
142
|
}
|
|
119
143
|
}
|
|
120
144
|
|
|
121
145
|
- (void)klarnaComponent:(id<KlarnaComponent>)klarnaComponent encounteredError:(KlarnaError *)error {
|
|
122
146
|
if (_eventEmitter) {
|
|
123
|
-
RCTLogInfo(@"Sending
|
|
147
|
+
RCTLogInfo(@"Sending onError event");
|
|
124
148
|
std::dynamic_pointer_cast<const RNKlarnaCheckoutViewEventEmitter>(_eventEmitter)
|
|
125
149
|
->onError(RNKlarnaCheckoutViewEventEmitter::OnError{
|
|
126
150
|
.error = {
|
|
@@ -130,7 +154,7 @@ Class<RCTComponentViewProtocol> RNKlarnaCheckoutViewCls(void)
|
|
|
130
154
|
}
|
|
131
155
|
});
|
|
132
156
|
} else {
|
|
133
|
-
RCTLogInfo(@"_eventEmitter is nil!");
|
|
157
|
+
RCTLogInfo(@"Could not send onError event. _eventEmitter is nil!");
|
|
134
158
|
}
|
|
135
159
|
}
|
|
136
160
|
|
|
@@ -144,7 +168,7 @@ Class<RCTComponentViewProtocol> RNKlarnaCheckoutViewCls(void)
|
|
|
144
168
|
.height = std::string([[[NSNumber numberWithFloat:height] stringValue] UTF8String]),
|
|
145
169
|
});
|
|
146
170
|
} else {
|
|
147
|
-
RCTLogInfo(@"_eventEmitter is nil!");
|
|
171
|
+
RCTLogInfo(@"Could not send onResized event. _eventEmitter is nil!");
|
|
148
172
|
}
|
|
149
173
|
}
|
|
150
174
|
|
|
@@ -1,25 +1,36 @@
|
|
|
1
1
|
#if !RCT_NEW_ARCH_ENABLED
|
|
2
2
|
|
|
3
|
+
#import <React/RCTLog.h>
|
|
3
4
|
#import "../KlarnaCheckoutViewWrapper.h"
|
|
4
5
|
#import "../../common/RNMobileSDKUtils.h"
|
|
5
|
-
|
|
6
6
|
#import <KlarnaMobileSDK/KlarnaMobileSDK-Swift.h>
|
|
7
|
-
#import <React/RCTLog.h>
|
|
8
7
|
|
|
9
8
|
@interface KlarnaCheckoutViewWrapper () <KlarnaEventHandler, KlarnaSizingDelegate>
|
|
10
9
|
|
|
11
|
-
@property (nonatomic, strong) KlarnaCheckoutView*
|
|
10
|
+
@property (nonatomic, strong) KlarnaCheckoutView* klarnaCheckoutView;
|
|
11
|
+
@property (nonatomic, assign) BOOL isCheckoutViewReadyEventSent;
|
|
12
12
|
|
|
13
13
|
@end
|
|
14
14
|
|
|
15
15
|
@implementation KlarnaCheckoutViewWrapper
|
|
16
16
|
|
|
17
|
-
#pragma mark -
|
|
17
|
+
#pragma mark - Initialization
|
|
18
|
+
|
|
19
|
+
- (instancetype)initWithFrame:(CGRect)frame
|
|
20
|
+
{
|
|
21
|
+
self = [super initWithFrame:frame];
|
|
22
|
+
if (self) {
|
|
23
|
+
self.isCheckoutViewReadyEventSent = NO;
|
|
24
|
+
}
|
|
25
|
+
return self;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
#pragma mark - React Native Property Setters
|
|
18
29
|
|
|
19
30
|
- (void) setReturnUrl:(NSString *)returnUrl {
|
|
20
31
|
_returnUrl = returnUrl;
|
|
21
32
|
if (returnUrl.length > 0) {
|
|
22
|
-
self.
|
|
33
|
+
self.klarnaCheckoutView.returnURL = [NSURL URLWithString:self.returnUrl];
|
|
23
34
|
}
|
|
24
35
|
[self evaluateProps];
|
|
25
36
|
}
|
|
@@ -28,43 +39,70 @@
|
|
|
28
39
|
[self initializeActualCheckoutView];
|
|
29
40
|
}
|
|
30
41
|
|
|
42
|
+
#pragma mark - KlarnaCheckoutView Setup
|
|
43
|
+
|
|
31
44
|
- (void) initializeActualCheckoutView {
|
|
32
|
-
self.
|
|
33
|
-
self.
|
|
45
|
+
self.isCheckoutViewReadyEventSent = NO;
|
|
46
|
+
self.klarnaCheckoutView = [[KlarnaCheckoutView alloc] initWithReturnURL:[NSURL URLWithString:self.returnUrl] eventHandler:self];
|
|
47
|
+
self.klarnaCheckoutView.sizingDelegate = self;
|
|
34
48
|
|
|
35
|
-
self.
|
|
49
|
+
self.klarnaCheckoutView.translatesAutoresizingMaskIntoConstraints = NO;
|
|
36
50
|
|
|
37
|
-
[self addSubview:self.
|
|
51
|
+
[self addSubview:self.klarnaCheckoutView];
|
|
38
52
|
|
|
39
53
|
[NSLayoutConstraint activateConstraints:[[NSArray alloc] initWithObjects:
|
|
40
|
-
[self.
|
|
41
|
-
[self.
|
|
42
|
-
[self.
|
|
43
|
-
[self.
|
|
54
|
+
[self.klarnaCheckoutView.topAnchor constraintEqualToAnchor:self.topAnchor],
|
|
55
|
+
[self.klarnaCheckoutView.bottomAnchor constraintEqualToAnchor:self.bottomAnchor],
|
|
56
|
+
[self.klarnaCheckoutView.leadingAnchor constraintEqualToAnchor:self.leadingAnchor],
|
|
57
|
+
[self.klarnaCheckoutView.trailingAnchor constraintEqualToAnchor:self.trailingAnchor], nil
|
|
44
58
|
]];
|
|
45
59
|
}
|
|
46
60
|
|
|
61
|
+
#pragma mark - Layout
|
|
62
|
+
|
|
47
63
|
- (void)layoutSubviews {
|
|
48
64
|
[super layoutSubviews];
|
|
49
|
-
self.
|
|
50
|
-
[self.
|
|
65
|
+
self.klarnaCheckoutView.frame = self.bounds;
|
|
66
|
+
[self.klarnaCheckoutView layoutSubviews];
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
#pragma mark - UIView Lifecycle
|
|
70
|
+
|
|
71
|
+
- (void)didMoveToWindow {
|
|
72
|
+
[super didMoveToWindow];
|
|
73
|
+
if (!self.window) {
|
|
74
|
+
self.isCheckoutViewReadyEventSent = NO;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
#pragma mark - React Native Lifecycle
|
|
79
|
+
|
|
80
|
+
- (void)didSetProps:(NSArray<NSString *> *)changedProps {
|
|
81
|
+
[super didSetProps:changedProps];
|
|
82
|
+
[self sendCheckoutViewReadyEvent];
|
|
51
83
|
}
|
|
52
84
|
|
|
53
|
-
|
|
85
|
+
- (void)sendCheckoutViewReadyEvent {
|
|
86
|
+
if (self.klarnaCheckoutView && self.onCheckoutViewReady && !self.isCheckoutViewReadyEventSent) {
|
|
87
|
+
self.isCheckoutViewReadyEventSent = YES;
|
|
88
|
+
self.onCheckoutViewReady(@{});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
#pragma mark - Methods Exposed to React Native
|
|
54
93
|
|
|
55
94
|
- (void)setSnippet:(NSString *)snippet {
|
|
56
|
-
[self.
|
|
95
|
+
[self.klarnaCheckoutView setSnippet:snippet];
|
|
57
96
|
}
|
|
58
97
|
|
|
59
98
|
- (void)suspend {
|
|
60
|
-
[self.
|
|
99
|
+
[self.klarnaCheckoutView suspend];
|
|
61
100
|
}
|
|
62
101
|
|
|
63
102
|
- (void)resume {
|
|
64
|
-
[self.
|
|
103
|
+
[self.klarnaCheckoutView resume];
|
|
65
104
|
}
|
|
66
105
|
|
|
67
|
-
|
|
68
106
|
#pragma mark - KlarnaEventHandler
|
|
69
107
|
|
|
70
108
|
- (void)klarnaComponent:(id<KlarnaComponent>)klarnaComponent dispatchedEvent:(KlarnaProductEvent *)event {
|
|
@@ -9,12 +9,15 @@ var _KlarnaCheckoutViewNativeComponent = _interopRequireWildcard(require("./spec
|
|
|
9
9
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
10
10
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
11
11
|
class KlarnaCheckoutView extends _react.Component {
|
|
12
|
+
snippet = null;
|
|
13
|
+
isCheckoutViewReady = false;
|
|
12
14
|
constructor(props) {
|
|
13
15
|
super(props);
|
|
14
16
|
this.state = {
|
|
15
17
|
nativeViewHeight: 0
|
|
16
18
|
};
|
|
17
19
|
this.checkoutViewRef = /*#__PURE__*/_react.default.createRef();
|
|
20
|
+
this.isCheckoutViewReady = false;
|
|
18
21
|
}
|
|
19
22
|
render() {
|
|
20
23
|
return /*#__PURE__*/_react.default.createElement(_KlarnaCheckoutViewNativeComponent.default, {
|
|
@@ -57,24 +60,34 @@ class KlarnaCheckoutView extends _react.Component {
|
|
|
57
60
|
nativeViewHeight: newHeight
|
|
58
61
|
});
|
|
59
62
|
}
|
|
63
|
+
},
|
|
64
|
+
onCheckoutViewReady: () => {
|
|
65
|
+
this.isCheckoutViewReady = true;
|
|
66
|
+
console.log('onCheckoutViewReady');
|
|
67
|
+
if (this.snippet) {
|
|
68
|
+
console.log('Setting the snippet...');
|
|
69
|
+
this.setSnippet(this.snippet);
|
|
70
|
+
this.snippet = null;
|
|
71
|
+
}
|
|
60
72
|
}
|
|
61
73
|
});
|
|
62
74
|
}
|
|
63
75
|
setSnippet = snippet => {
|
|
76
|
+
this.snippet = snippet;
|
|
64
77
|
const view = this.checkoutViewRef.current;
|
|
65
|
-
if (view != null) {
|
|
78
|
+
if (view != null && this.isCheckoutViewReady) {
|
|
66
79
|
_KlarnaCheckoutViewNativeComponent.Commands.setSnippet(view, snippet);
|
|
67
80
|
}
|
|
68
81
|
};
|
|
69
82
|
suspend = () => {
|
|
70
83
|
const view = this.checkoutViewRef.current;
|
|
71
|
-
if (view != null) {
|
|
84
|
+
if (view != null && this.isCheckoutViewReady) {
|
|
72
85
|
_KlarnaCheckoutViewNativeComponent.Commands.suspend(view);
|
|
73
86
|
}
|
|
74
87
|
};
|
|
75
88
|
resume = () => {
|
|
76
89
|
const view = this.checkoutViewRef.current;
|
|
77
|
-
if (view != null) {
|
|
90
|
+
if (view != null && this.isCheckoutViewReady) {
|
|
78
91
|
_KlarnaCheckoutViewNativeComponent.Commands.resume(view);
|
|
79
92
|
}
|
|
80
93
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_KlarnaCheckoutViewNativeComponent","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","KlarnaCheckoutView","Component","constructor","props","state","nativeViewHeight","checkoutViewRef","React","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","onError","_this$props$onError","_this$props2","mobileSdkError","isFatal","message","name","onResized","newHeight","Number","log","setState","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_KlarnaCheckoutViewNativeComponent","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","KlarnaCheckoutView","Component","snippet","isCheckoutViewReady","constructor","props","state","nativeViewHeight","checkoutViewRef","React","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","onError","_this$props$onError","_this$props2","mobileSdkError","isFatal","message","name","onResized","newHeight","Number","log","setState","onCheckoutViewReady","setSnippet","view","current","RNKlarnaCheckoutViewCommands","suspend","resume","exports","_default"],"sourceRoot":"../../src","sources":["KlarnaCheckoutView.tsx"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_codegenNativeCommands","_interopRequireDefault","require","_codegenNativeComponent","obj","__esModule","default","Commands","codegenNativeCommands","supportedCommands","exports","_default","codegenNativeComponent"],"sourceRoot":"../../../src","sources":["specs/KlarnaCheckoutViewNativeComponent.ts"],"mappings":";;;;;;AAIA,IAAAA,sBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAA6F,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;
|
|
1
|
+
{"version":3,"names":["_codegenNativeCommands","_interopRequireDefault","require","_codegenNativeComponent","obj","__esModule","default","Commands","codegenNativeCommands","supportedCommands","exports","_default","codegenNativeComponent"],"sourceRoot":"../../../src","sources":["specs/KlarnaCheckoutViewNativeComponent.ts"],"mappings":";;;;;;AAIA,IAAAA,sBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAA6F,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AA8CtF,MAAMG,QAA4C,GACvD,IAAAC,8BAAqB,EAAqC;EACxDC,iBAAiB,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ;AACvD,CAAC,CAAC;AAACC,OAAA,CAAAH,QAAA,GAAAA,QAAA;AAAA,IAAAI,QAAA,GAEU,IAAAC,+BAAsB,EACnC,sBACF,CAAC;AAAAF,OAAA,CAAAJ,OAAA,GAAAK,QAAA"}
|
|
@@ -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","
|
|
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":"AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAwB,OAAO;AAQxD,OAAOC,oBAAoB,IACzBC,QAAQ,IAAIC,4BAA4B,QAEnC,2CAA2C;AAalD,OAAO,MAAMC,kBAAkB,SAASJ,SAAS,CAG/C;EAIQK,OAAO,GAAkB,IAAI;EAC7BC,mBAAmB,GAAG,KAAK;EAEnCC,WAAWA,CAACC,KAA8B,EAAE;IAC1C,KAAK,CAACA,KAAK,CAAC;IACZ,IAAI,CAACC,KAAK,GAAG;MACXC,gBAAgB,EAAE;IACpB,CAAC;IACD,IAAI,CAACC,eAAe,gBAAGZ,KAAK,CAACa,SAAS,CAAC,CAAC;IACxC,IAAI,CAACN,mBAAmB,GAAG,KAAK;EAClC;EAEAO,MAAMA,CAAA,EAAG;IACP,oBACEd,KAAA,CAAAe,aAAA,CAACb,oBAAoB;MACnBc,GAAG,EAAE,IAAI,CAACJ;MACV;MACAK,KAAK,EAAE;QACLC,KAAK,EAAE,MAAM;QACbC,MAAM,EAAE,IAAI,CAACT,KAAK,CAACC,gBAAgB;QACnCS,UAAU,EAAE;MACd,CAAE;MACFC,SAAS,EAAE,IAAI,CAACZ,KAAK,CAACY,SAAS,IAAI,EAAG;MACtCC,OAAO,EACLC,KAOC,IACE;QAAA,IAAAC,mBAAA,EAAAC,WAAA;QACH,IAAIC,MAAM,GAAG,CAAC,CAAC;QACf,IAAI;UACFA,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACL,KAAK,CAACM,WAAW,CAACC,YAAY,CAACJ,MAAM,CAAC;QAC5D,CAAC,CAAC,OAAOK,CAAC,EAAE;UACVC,OAAO,CAACC,KAAK,CAAC,qCAAqC,EAAEF,CAAC,CAAC;QACzD;QACA,MAAMD,YAAgC,GAAG;UACvCI,MAAM,EAAEX,KAAK,CAACM,WAAW,CAACC,YAAY,CAACI,MAAM;UAC7CR,MAAM,EAAEA;QACV,CAAC;QACD,CAAAF,mBAAA,IAAAC,WAAA,OAAI,CAAChB,KAAK,EAACa,OAAO,cAAAE,mBAAA,eAAlBA,mBAAA,CAAAW,IAAA,CAAAV,WAAA,EAAqBK,YAAY,CAAC;MACpC,CAAE;MACFM,OAAO,EACLb,KAQC,IACE;QAAA,IAAAc,mBAAA,EAAAC,YAAA;QACH,MAAMC,cAAoC,GAAG;UAC3CC,OAAO,EAAEjB,KAAK,CAACM,WAAW,CAACI,KAAK,CAACO,OAAO;UACxCC,OAAO,EAAElB,KAAK,CAACM,WAAW,CAACI,KAAK,CAACQ,OAAO;UACxCC,IAAI,EAAEnB,KAAK,CAACM,WAAW,CAACI,KAAK,CAACS;QAChC,CAAC;QACD,CAAAL,mBAAA,IAAAC,YAAA,OAAI,CAAC7B,KAAK,EAAC2B,OAAO,cAAAC,mBAAA,eAAlBA,mBAAA,CAAAF,IAAA,CAAAG,YAAA,EAAqBC,cAAc,CAAC;MACtC,CAAE;MACFI,SAAS,EACPpB,KAIC,IACE;QACH,MAAMqB,SAAS,GAAGC,MAAM,CAACtB,KAAK,CAACM,WAAW,CAACV,MAAM,CAAC;QAClD,IAAIyB,SAAS,KAAK,IAAI,CAAClC,KAAK,CAACC,gBAAgB,EAAE;UAC7CqB,OAAO,CAACc,GAAG,CAAC,WAAW,EAAEF,SAAS,CAAC;UACnC,IAAI,CAACG,QAAQ,CAAC;YAAEpC,gBAAgB,EAAEiC;UAAU,CAAC,CAAC;QAChD;MACF,CAAE;MACFI,mBAAmB,EAAEA,CAAA,KAAM;QACzB,IAAI,CAACzC,mBAAmB,GAAG,IAAI;QAC/ByB,OAAO,CAACc,GAAG,CAAC,qBAAqB,CAAC;QAClC,IAAI,IAAI,CAACxC,OAAO,EAAE;UAChB0B,OAAO,CAACc,GAAG,CAAC,wBAAwB,CAAC;UACrC,IAAI,CAACG,UAAU,CAAC,IAAI,CAAC3C,OAAO,CAAC;UAC7B,IAAI,CAACA,OAAO,GAAG,IAAI;QACrB;MACF;IAAE,CACH,CAAC;EAEN;EAEA2C,UAAU,GAAI3C,OAAe,IAAK;IAChC,IAAI,CAACA,OAAO,GAAGA,OAAO;IACtB,MAAM4C,IAAI,GAAG,IAAI,CAACtC,eAAe,CAACuC,OAAO;IACzC,IAAID,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC3C,mBAAmB,EAAE;MAC5CH,4BAA4B,CAAC6C,UAAU,CAACC,IAAI,EAAE5C,OAAO,CAAC;IACxD;EACF,CAAC;EAED8C,OAAO,GAAGA,CAAA,KAAM;IACd,MAAMF,IAAI,GAAG,IAAI,CAACtC,eAAe,CAACuC,OAAO;IACzC,IAAID,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC3C,mBAAmB,EAAE;MAC5CH,4BAA4B,CAACgD,OAAO,CAACF,IAAI,CAAC;IAC5C;EACF,CAAC;EAEDG,MAAM,GAAGA,CAAA,KAAM;IACb,MAAMH,IAAI,GAAG,IAAI,CAACtC,eAAe,CAACuC,OAAO;IACzC,IAAID,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC3C,mBAAmB,EAAE;MAC5CH,4BAA4B,CAACiD,MAAM,CAACH,IAAI,CAAC;IAC3C;EACF,CAAC;AACH;AAEA,eAAe7C,kBAAkB"}
|
|
@@ -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;
|
|
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"}
|
|
@@ -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;
|
|
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"}
|
|
@@ -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;
|
|
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"}
|
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.
|
|
4
|
+
"version": "2.4.2",
|
|
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",
|
|
@@ -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
|
};
|