react-native-klarna-inapp-sdk 2.2.5 → 2.3.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.
- package/README.md +3 -2
- package/android/build.gradle +10 -10
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/KlarnaMobileSDKPackage.java +3 -1
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/checkout/KlarnaCheckoutViewEventHandler.java +32 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/checkout/KlarnaCheckoutViewEventSender.java +56 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/checkout/KlarnaCheckoutViewManager.java +147 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/WebViewResizeObserver.java +59 -19
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/event/ComponentEvent.java +37 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/event/ComponentEventSender.java +78 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/event/KlarnaEventHandlerEventsUtil.java +53 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/ui/ResizeObserverWrapperView.java +79 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/ui/WrapperView.java +32 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/{ArgumentsUtil.java → util/ArgumentsUtil.java} +1 -1
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/util/ParserUtil.java +36 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/payments/KlarnaPaymentViewManager.java +1 -1
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/payments/PaymentViewWrapper.java +1 -1
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/standalonewebview/KlarnaStandaloneWebViewEventSender.java +1 -1
- package/android/src/newarch/java/com/klarna/mobile/sdk/reactnative/spec/RNKlarnaCheckoutViewSpec.java +31 -0
- package/android/src/oldarch/java/com/klarna/mobile/sdk/reactnative/spec/RNKlarnaCheckoutViewSpec.java +20 -0
- package/android/src/test/java/com/klarna/mobile/sdk/reactnative/KlarnaMobileSDKPackageTest.java +3 -1
- package/android/src/test/java/com/klarna/mobile/sdk/reactnative/common/event/ComponentEventSenderTest.java +85 -0
- package/android/src/test/java/com/klarna/mobile/sdk/reactnative/common/event/ComponentEventTest.java +73 -0
- package/android/src/test/java/com/klarna/mobile/sdk/reactnative/common/event/KlarnaEventHandlerEventsUtilTest.java +61 -0
- package/ios/RNKlarnaMobileSDK.xcodeproj/project.pbxproj +32 -0
- package/ios/Sources/KlarnaCheckoutViewManager.h +5 -0
- package/ios/Sources/KlarnaCheckoutViewManager.mm +65 -0
- package/ios/Sources/common/RNMobileSDKUtils.h +6 -0
- package/ios/Sources/common/RNMobileSDKUtils.mm +22 -0
- package/ios/Sources/view/newarch/KlarnaCheckoutViewWrapper.h +26 -0
- package/ios/Sources/view/newarch/KlarnaCheckoutViewWrapper.mm +153 -0
- package/ios/Sources/view/newarch/KlarnaStandaloneWebViewWrapper.mm +22 -1
- package/ios/Sources/view/oldarch/KlarnaCheckoutViewWrapper.h +37 -0
- package/ios/Sources/view/oldarch/KlarnaCheckoutViewWrapper.mm +116 -0
- package/ios/Sources/view/oldarch/KlarnaStandaloneWebViewWrapper.mm +22 -1
- package/lib/commonjs/KlarnaCheckoutView.js +84 -0
- package/lib/commonjs/KlarnaCheckoutView.js.map +1 -0
- package/lib/commonjs/index.js +11 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/specs/KlarnaCheckoutViewNativeComponent.js +16 -0
- package/lib/commonjs/specs/KlarnaCheckoutViewNativeComponent.js.map +1 -0
- package/lib/commonjs/types/common/KlarnaMobileSDKError.js +2 -0
- package/lib/commonjs/types/common/KlarnaMobileSDKError.js.map +1 -0
- package/lib/commonjs/types/common/KlarnaProductEvent.js +2 -0
- package/lib/commonjs/types/common/KlarnaProductEvent.js.map +1 -0
- package/lib/module/KlarnaCheckoutView.js +74 -0
- package/lib/module/KlarnaCheckoutView.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/specs/KlarnaCheckoutViewNativeComponent.js +7 -0
- package/lib/module/specs/KlarnaCheckoutViewNativeComponent.js.map +1 -0
- package/lib/module/types/common/KlarnaMobileSDKError.js +2 -0
- package/lib/module/types/common/KlarnaMobileSDKError.js.map +1 -0
- package/lib/module/types/common/KlarnaProductEvent.js +2 -0
- package/lib/module/types/common/KlarnaProductEvent.js.map +1 -0
- package/lib/typescript/KlarnaCheckoutView.d.ts +24 -0
- package/lib/typescript/KlarnaCheckoutView.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/KlarnaCheckoutViewNativeComponent.d.ts +33 -0
- package/lib/typescript/specs/KlarnaCheckoutViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/types/common/KlarnaMobileSDKError.d.ts +6 -0
- package/lib/typescript/types/common/KlarnaMobileSDKError.d.ts.map +1 -0
- package/lib/typescript/types/common/KlarnaProductEvent.d.ts +7 -0
- package/lib/typescript/types/common/KlarnaProductEvent.d.ts.map +1 -0
- package/package.json +2 -2
- package/src/KlarnaCheckoutView.tsx +130 -0
- package/src/index.tsx +1 -0
- package/src/specs/KlarnaCheckoutViewNativeComponent.ts +58 -0
- package/src/types/common/KlarnaMobileSDKError.ts +5 -0
- package/src/types/common/KlarnaProductEvent.ts +4 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
#if RCT_NEW_ARCH_ENABLED
|
|
2
|
+
|
|
3
|
+
#import "KlarnaCheckoutViewWrapper.h"
|
|
4
|
+
#import "../../common/RNMobileSDKUtils.h"
|
|
5
|
+
|
|
6
|
+
#import <AVFoundation/AVFoundation.h>
|
|
7
|
+
#import <KlarnaMobileSDK/KlarnaMobileSDK-Swift.h>
|
|
8
|
+
#import <React/RCTLog.h>
|
|
9
|
+
|
|
10
|
+
#import <react/renderer/components/RNKlarnaMobileSDK/ComponentDescriptors.h>
|
|
11
|
+
#import <react/renderer/components/RNKlarnaMobileSDK/EventEmitters.h>
|
|
12
|
+
#import <react/renderer/components/RNKlarnaMobileSDK/Props.h>
|
|
13
|
+
#import <react/renderer/components/RNKlarnaMobileSDK/RCTComponentViewHelpers.h>
|
|
14
|
+
|
|
15
|
+
#import "RCTFabricComponentsPlugins.h"
|
|
16
|
+
|
|
17
|
+
using namespace facebook::react;
|
|
18
|
+
|
|
19
|
+
@interface KlarnaCheckoutViewWrapper () <KlarnaEventHandler, KlarnaSizingDelegate, RCTRNKlarnaCheckoutViewViewProtocol>
|
|
20
|
+
|
|
21
|
+
@property (nonatomic, strong) KlarnaCheckoutView* actualCheckoutView;
|
|
22
|
+
|
|
23
|
+
@end
|
|
24
|
+
|
|
25
|
+
@implementation KlarnaCheckoutViewWrapper
|
|
26
|
+
|
|
27
|
+
#pragma mark - RN Klarna Checout View
|
|
28
|
+
|
|
29
|
+
- (instancetype)initWithFrame:(CGRect)frame
|
|
30
|
+
{
|
|
31
|
+
self = [super initWithFrame:frame];
|
|
32
|
+
if (self) {
|
|
33
|
+
static const auto defaultProps = std::make_shared<const RNKlarnaCheckoutViewProps>();
|
|
34
|
+
_props = defaultProps;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return self;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
+ (ComponentDescriptorProvider)componentDescriptorProvider
|
|
41
|
+
{
|
|
42
|
+
return concreteComponentDescriptorProvider<RNKlarnaCheckoutViewComponentDescriptor>();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
Class<RCTComponentViewProtocol> RNKlarnaCheckoutViewCls(void)
|
|
46
|
+
{
|
|
47
|
+
return KlarnaCheckoutViewWrapper.class;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
- (void)handleCommand:(const NSString *)commandName args:(const NSArray *)args {
|
|
51
|
+
RCTRNKlarnaCheckoutViewHandleCommand(self, commandName, args);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
#pragma mark - RN Klarna Checout View Props
|
|
55
|
+
|
|
56
|
+
- (void)updateProps:(const facebook::react::Props::Shared &)props oldProps:(const facebook::react::Props::Shared &)oldProps {
|
|
57
|
+
const auto &oldViewProps = *std::static_pointer_cast<RNKlarnaCheckoutViewProps const>(_props);
|
|
58
|
+
const auto &newViewProps = *std::static_pointer_cast<RNKlarnaCheckoutViewProps const>(props);
|
|
59
|
+
|
|
60
|
+
if (oldViewProps.returnUrl != newViewProps.returnUrl) {
|
|
61
|
+
NSString * newReturnUrl = [[NSString alloc] initWithUTF8String: newViewProps.returnUrl.c_str()];
|
|
62
|
+
if (self.actualCheckoutView != nil) {
|
|
63
|
+
self.actualCheckoutView.returnURL = [NSURL URLWithString:newReturnUrl];
|
|
64
|
+
} else {
|
|
65
|
+
[self initializeActualCheckoutView:newReturnUrl];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
[super updateProps:props oldProps:oldProps];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
#pragma mark - RN Klarna Checout View Methods
|
|
74
|
+
|
|
75
|
+
- (void)initializeActualCheckoutView:(NSString*)returnUrl {
|
|
76
|
+
self.actualCheckoutView = [[KlarnaCheckoutView alloc] initWithReturnURL:[NSURL URLWithString:returnUrl] eventHandler:self];
|
|
77
|
+
self.actualCheckoutView.sizingDelegate = self;
|
|
78
|
+
|
|
79
|
+
self.actualCheckoutView.translatesAutoresizingMaskIntoConstraints = NO;
|
|
80
|
+
|
|
81
|
+
[self addSubview:self.actualCheckoutView];
|
|
82
|
+
|
|
83
|
+
[NSLayoutConstraint activateConstraints:[[NSArray alloc] initWithObjects:
|
|
84
|
+
[self.actualCheckoutView.topAnchor constraintEqualToAnchor:self.topAnchor],
|
|
85
|
+
[self.actualCheckoutView.bottomAnchor constraintEqualToAnchor:self.bottomAnchor],
|
|
86
|
+
[self.actualCheckoutView.leadingAnchor constraintEqualToAnchor:self.leadingAnchor],
|
|
87
|
+
[self.actualCheckoutView.trailingAnchor constraintEqualToAnchor:self.trailingAnchor], nil
|
|
88
|
+
]];
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
- (void)setSnippet:(NSString *)snippet {
|
|
92
|
+
[self.actualCheckoutView setSnippet:snippet];
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
- (void)suspend {
|
|
96
|
+
[self.actualCheckoutView suspend];
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
- (void)resume {
|
|
100
|
+
[self.actualCheckoutView resume];
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
#pragma mark - KlarnaEventHandler
|
|
104
|
+
|
|
105
|
+
- (void)klarnaComponent:(id<KlarnaComponent>)klarnaComponent dispatchedEvent:(KlarnaProductEvent *)event {
|
|
106
|
+
if (_eventEmitter) {
|
|
107
|
+
RCTLogInfo(@"Sending onEvent event");
|
|
108
|
+
NSString *serializedParams = [SerializationUtil serializeDictionaryToJsonString:[event getParams]];
|
|
109
|
+
std::dynamic_pointer_cast<const RNKlarnaCheckoutViewEventEmitter>(_eventEmitter)
|
|
110
|
+
->onEvent(RNKlarnaCheckoutViewEventEmitter::OnEvent{
|
|
111
|
+
.productEvent = {
|
|
112
|
+
.action = std::string([event.action UTF8String]),
|
|
113
|
+
.params = std::string([serializedParams UTF8String]),
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
} else {
|
|
117
|
+
RCTLogInfo(@"_eventEmitter is nil!");
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
- (void)klarnaComponent:(id<KlarnaComponent>)klarnaComponent encounteredError:(KlarnaError *)error {
|
|
122
|
+
if (_eventEmitter) {
|
|
123
|
+
RCTLogInfo(@"Sending onEvent event");
|
|
124
|
+
std::dynamic_pointer_cast<const RNKlarnaCheckoutViewEventEmitter>(_eventEmitter)
|
|
125
|
+
->onError(RNKlarnaCheckoutViewEventEmitter::OnError{
|
|
126
|
+
.error = {
|
|
127
|
+
.name = std::string([error.name UTF8String]),
|
|
128
|
+
.message = std::string([error.message UTF8String]),
|
|
129
|
+
.isFatal = error.isFatal,
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
} else {
|
|
133
|
+
RCTLogInfo(@"_eventEmitter is nil!");
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
#pragma mark - KlarnaSizingDelegate
|
|
138
|
+
|
|
139
|
+
- (void)klarnaComponent:(id<KlarnaComponent>)klarnaComponent resizedToHeight:(CGFloat)height {
|
|
140
|
+
if (_eventEmitter) {
|
|
141
|
+
RCTLogInfo(@"Sending onResized event");
|
|
142
|
+
std::dynamic_pointer_cast<const RNKlarnaCheckoutViewEventEmitter>(_eventEmitter)
|
|
143
|
+
->onResized(RNKlarnaCheckoutViewEventEmitter::OnResized{
|
|
144
|
+
.height = std::string([[[NSNumber numberWithFloat:height] stringValue] UTF8String]),
|
|
145
|
+
});
|
|
146
|
+
} else {
|
|
147
|
+
RCTLogInfo(@"_eventEmitter is nil!");
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
@end
|
|
152
|
+
|
|
153
|
+
#endif
|
|
@@ -37,7 +37,11 @@ NSString *const PROPERTY_NAME_ESTIMATED_PROGRESS = @"estimatedProgress";
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
-(void)dealloc {
|
|
40
|
-
|
|
40
|
+
@try {
|
|
41
|
+
[self.klarnaStandaloneWebView removeObserver:self forKeyPath:PROPERTY_NAME_ESTIMATED_PROGRESS context:nil];
|
|
42
|
+
} @catch(NSException *exception) {
|
|
43
|
+
RCTLog(@"Could not remove the progress observer: %@", exception);
|
|
44
|
+
}
|
|
41
45
|
}
|
|
42
46
|
|
|
43
47
|
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
|
|
@@ -80,6 +84,7 @@ NSString *const PROPERTY_NAME_ESTIMATED_PROGRESS = @"estimatedProgress";
|
|
|
80
84
|
self.klarnaStandaloneWebView.translatesAutoresizingMaskIntoConstraints = NO;
|
|
81
85
|
|
|
82
86
|
[self addSubview:self.klarnaStandaloneWebView];
|
|
87
|
+
[self setWebViewBackgroundToTransparent];
|
|
83
88
|
|
|
84
89
|
[NSLayoutConstraint activateConstraints:[[NSArray alloc] initWithObjects:
|
|
85
90
|
[self.klarnaStandaloneWebView.topAnchor constraintEqualToAnchor:self.topAnchor],
|
|
@@ -89,6 +94,17 @@ NSString *const PROPERTY_NAME_ESTIMATED_PROGRESS = @"estimatedProgress";
|
|
|
89
94
|
]];
|
|
90
95
|
}
|
|
91
96
|
|
|
97
|
+
- (void)setWebViewBackgroundToTransparent {
|
|
98
|
+
for (UIView *subview in self.klarnaStandaloneWebView.subviews) {
|
|
99
|
+
if ([subview isKindOfClass:[WKWebView class]]) {
|
|
100
|
+
WKWebView *webView = (WKWebView *) subview;
|
|
101
|
+
webView.backgroundColor = [UIColor clearColor];
|
|
102
|
+
webView.opaque = NO;
|
|
103
|
+
webView.scrollView.backgroundColor = [UIColor clearColor];
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
92
108
|
- (void)layoutSubviews {
|
|
93
109
|
[super layoutSubviews];
|
|
94
110
|
self.klarnaStandaloneWebView.frame = self.bounds;
|
|
@@ -262,6 +278,11 @@ Class<RCTComponentViewProtocol>RNKlarnaStandaloneWebViewCls(void)
|
|
|
262
278
|
}
|
|
263
279
|
|
|
264
280
|
- (NSString *)serializeDictionaryToJsonString:(NSDictionary<NSString *, id<NSCoding>> *)dictionary {
|
|
281
|
+
if (!dictionary) {
|
|
282
|
+
RCTLog(@"Dictionary is nil");
|
|
283
|
+
return @"{}";
|
|
284
|
+
}
|
|
285
|
+
|
|
265
286
|
NSError *error;
|
|
266
287
|
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:&error];
|
|
267
288
|
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#if !RCT_NEW_ARCH_ENABLED
|
|
2
|
+
|
|
3
|
+
#import <React/RCTUIManager.h>
|
|
4
|
+
|
|
5
|
+
#import <AVFoundation/AVFoundation.h>
|
|
6
|
+
#import <UIKit/UIKit.h>
|
|
7
|
+
#import <React/RCTView.h>
|
|
8
|
+
#import <React/RCTUIManager.h>
|
|
9
|
+
|
|
10
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
11
|
+
|
|
12
|
+
@interface KlarnaCheckoutViewWrapper : UIView
|
|
13
|
+
|
|
14
|
+
@property (nonatomic, copy) RCTDirectEventBlock onEvent;
|
|
15
|
+
@property (nonatomic, copy) RCTDirectEventBlock onError;
|
|
16
|
+
@property (nonatomic, copy) RCTDirectEventBlock onResized;
|
|
17
|
+
|
|
18
|
+
@property (nonatomic, strong) NSString* returnUrl;
|
|
19
|
+
|
|
20
|
+
#pragma mark - React Native Overrides
|
|
21
|
+
- (void) setReturnUrl:(NSString * _Nonnull)returnUrl;
|
|
22
|
+
- (void) evaluateProps;
|
|
23
|
+
- (void) initializeActualCheckoutView;
|
|
24
|
+
|
|
25
|
+
@property (nonatomic, weak) RCTUIManager* uiManager;
|
|
26
|
+
|
|
27
|
+
- (void)setSnippet:(NSString*)snippet;
|
|
28
|
+
|
|
29
|
+
- (void)suspend;
|
|
30
|
+
|
|
31
|
+
- (void)resume;
|
|
32
|
+
|
|
33
|
+
@end
|
|
34
|
+
|
|
35
|
+
NS_ASSUME_NONNULL_END
|
|
36
|
+
|
|
37
|
+
#endif
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
#if !RCT_NEW_ARCH_ENABLED
|
|
2
|
+
|
|
3
|
+
#import "KlarnaCheckoutViewWrapper.h"
|
|
4
|
+
#import "../../common/RNMobileSDKUtils.h"
|
|
5
|
+
|
|
6
|
+
#import <KlarnaMobileSDK/KlarnaMobileSDK-Swift.h>
|
|
7
|
+
#import <React/RCTLog.h>
|
|
8
|
+
|
|
9
|
+
@interface KlarnaCheckoutViewWrapper () <KlarnaEventHandler, KlarnaSizingDelegate>
|
|
10
|
+
|
|
11
|
+
@property (nonatomic, strong) KlarnaCheckoutView* actualCheckoutView;
|
|
12
|
+
|
|
13
|
+
@end
|
|
14
|
+
|
|
15
|
+
@implementation KlarnaCheckoutViewWrapper
|
|
16
|
+
|
|
17
|
+
#pragma mark - React Native Overrides
|
|
18
|
+
|
|
19
|
+
- (void) setReturnUrl:(NSString *)returnUrl {
|
|
20
|
+
_returnUrl = returnUrl;
|
|
21
|
+
if (returnUrl.length > 0) {
|
|
22
|
+
self.actualCheckoutView.returnURL = [NSURL URLWithString:self.returnUrl];
|
|
23
|
+
}
|
|
24
|
+
[self evaluateProps];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
- (void) evaluateProps {
|
|
28
|
+
[self initializeActualCheckoutView];
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
- (void) initializeActualCheckoutView {
|
|
32
|
+
self.actualCheckoutView = [[KlarnaCheckoutView alloc] initWithReturnURL:[NSURL URLWithString:self.returnUrl] eventHandler:self];
|
|
33
|
+
self.actualCheckoutView.sizingDelegate = self;
|
|
34
|
+
|
|
35
|
+
self.actualCheckoutView.translatesAutoresizingMaskIntoConstraints = NO;
|
|
36
|
+
|
|
37
|
+
[self addSubview:self.actualCheckoutView];
|
|
38
|
+
|
|
39
|
+
[NSLayoutConstraint activateConstraints:[[NSArray alloc] initWithObjects:
|
|
40
|
+
[self.actualCheckoutView.topAnchor constraintEqualToAnchor:self.topAnchor],
|
|
41
|
+
[self.actualCheckoutView.bottomAnchor constraintEqualToAnchor:self.bottomAnchor],
|
|
42
|
+
[self.actualCheckoutView.leadingAnchor constraintEqualToAnchor:self.leadingAnchor],
|
|
43
|
+
[self.actualCheckoutView.trailingAnchor constraintEqualToAnchor:self.trailingAnchor], nil
|
|
44
|
+
]];
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
- (void)layoutSubviews {
|
|
48
|
+
[super layoutSubviews];
|
|
49
|
+
self.actualCheckoutView.frame = self.bounds;
|
|
50
|
+
[self.actualCheckoutView layoutSubviews];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
#pragma mark - KlarnaCheckoutView Methods
|
|
54
|
+
|
|
55
|
+
- (void)setSnippet:(NSString *)snippet {
|
|
56
|
+
[self.actualCheckoutView setSnippet:snippet];
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
- (void)suspend {
|
|
60
|
+
[self.actualCheckoutView suspend];
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
- (void)resume {
|
|
64
|
+
[self.actualCheckoutView resume];
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
#pragma mark - KlarnaEventHandler
|
|
69
|
+
|
|
70
|
+
- (void)klarnaComponent:(id<KlarnaComponent>)klarnaComponent dispatchedEvent:(KlarnaProductEvent *)event {
|
|
71
|
+
if (!self.onEvent) {
|
|
72
|
+
RCTLog(@"Missing 'onEvent' callback prop.");
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
NSString *serializedParams = [SerializationUtil serializeDictionaryToJsonString:[event getParams]];
|
|
77
|
+
|
|
78
|
+
self.onEvent(@{
|
|
79
|
+
@"productEvent": @{
|
|
80
|
+
@"action": event.action,
|
|
81
|
+
@"params": serializedParams,
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
- (void)klarnaComponent:(id<KlarnaComponent>)klarnaComponent encounteredError:(KlarnaError *)error {
|
|
87
|
+
if (!self.onError) {
|
|
88
|
+
RCTLog(@"Missing 'onError' callback prop.");
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
self.onError(@{
|
|
93
|
+
@"error": @{
|
|
94
|
+
@"name": error.name,
|
|
95
|
+
@"message": error.message,
|
|
96
|
+
@"isFatal": [NSNumber numberWithBool:error.isFatal],
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
#pragma mark - KlarnaSizingDelegate
|
|
102
|
+
|
|
103
|
+
- (void)klarnaComponent:(id<KlarnaComponent>)klarnaComponent resizedToHeight:(CGFloat)height {
|
|
104
|
+
if (!self.onResized) {
|
|
105
|
+
RCTLog(@"Missing 'onResized' callback prop.");
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
self.onResized(@{
|
|
110
|
+
@"height": [[NSNumber numberWithFloat:height] stringValue]
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
@end
|
|
115
|
+
|
|
116
|
+
#endif
|
|
@@ -26,7 +26,11 @@ NSString * const PROPERTY_NAME_ESTIMATED_PROGRESS = @"estimatedProgress";
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
-(void)dealloc {
|
|
29
|
-
|
|
29
|
+
@try {
|
|
30
|
+
[self.klarnaStandaloneWebView removeObserver:self forKeyPath:PROPERTY_NAME_ESTIMATED_PROGRESS context:nil];
|
|
31
|
+
} @catch(NSException *exception) {
|
|
32
|
+
RCTLog(@"Could not remove the progress observer: %@", exception);
|
|
33
|
+
}
|
|
30
34
|
}
|
|
31
35
|
|
|
32
36
|
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
|
|
@@ -75,6 +79,7 @@ NSString * const PROPERTY_NAME_ESTIMATED_PROGRESS = @"estimatedProgress";
|
|
|
75
79
|
self.klarnaStandaloneWebView.translatesAutoresizingMaskIntoConstraints = NO;
|
|
76
80
|
|
|
77
81
|
[self addSubview:self.klarnaStandaloneWebView];
|
|
82
|
+
[self setWebViewBackgroundToTransparent];
|
|
78
83
|
|
|
79
84
|
[NSLayoutConstraint activateConstraints:[[NSArray alloc] initWithObjects:
|
|
80
85
|
[self.klarnaStandaloneWebView.topAnchor constraintEqualToAnchor:self.topAnchor],
|
|
@@ -84,6 +89,17 @@ NSString * const PROPERTY_NAME_ESTIMATED_PROGRESS = @"estimatedProgress";
|
|
|
84
89
|
]];
|
|
85
90
|
}
|
|
86
91
|
|
|
92
|
+
- (void)setWebViewBackgroundToTransparent {
|
|
93
|
+
for (UIView *subview in self.klarnaStandaloneWebView.subviews) {
|
|
94
|
+
if ([subview isKindOfClass:[WKWebView class]]) {
|
|
95
|
+
WKWebView *webView = (WKWebView *) subview;
|
|
96
|
+
webView.backgroundColor = [UIColor clearColor];
|
|
97
|
+
webView.opaque = NO;
|
|
98
|
+
webView.scrollView.backgroundColor = [UIColor clearColor];
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
87
103
|
- (void)layoutSubviews {
|
|
88
104
|
[super layoutSubviews];
|
|
89
105
|
self.klarnaStandaloneWebView.frame = self.bounds;
|
|
@@ -182,6 +198,11 @@ NSString * const PROPERTY_NAME_ESTIMATED_PROGRESS = @"estimatedProgress";
|
|
|
182
198
|
#pragma mark - Events
|
|
183
199
|
|
|
184
200
|
- (NSString *)serializeDictionaryToJsonString:(NSDictionary<NSString *, id<NSCoding>> *)dictionary {
|
|
201
|
+
if (!dictionary) {
|
|
202
|
+
RCTLog(@"Dictionary is nil");
|
|
203
|
+
return @"{}";
|
|
204
|
+
}
|
|
205
|
+
|
|
185
206
|
NSError *error;
|
|
186
207
|
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:&error];
|
|
187
208
|
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.KlarnaCheckoutView = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _KlarnaCheckoutViewNativeComponent = _interopRequireWildcard(require("./specs/KlarnaCheckoutViewNativeComponent"));
|
|
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
|
+
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
|
+
class KlarnaCheckoutView extends _react.Component {
|
|
12
|
+
constructor(props) {
|
|
13
|
+
super(props);
|
|
14
|
+
this.state = {
|
|
15
|
+
nativeViewHeight: 0
|
|
16
|
+
};
|
|
17
|
+
this.checkoutViewRef = /*#__PURE__*/_react.default.createRef();
|
|
18
|
+
}
|
|
19
|
+
render() {
|
|
20
|
+
return /*#__PURE__*/_react.default.createElement(_KlarnaCheckoutViewNativeComponent.default, {
|
|
21
|
+
ref: this.checkoutViewRef
|
|
22
|
+
/* eslint-disable-next-line react-native/no-inline-styles */,
|
|
23
|
+
style: {
|
|
24
|
+
width: '100%',
|
|
25
|
+
height: this.state.nativeViewHeight
|
|
26
|
+
},
|
|
27
|
+
returnUrl: this.props.returnUrl || '',
|
|
28
|
+
onEvent: event => {
|
|
29
|
+
var _this$props$onEvent, _this$props;
|
|
30
|
+
let params = {};
|
|
31
|
+
try {
|
|
32
|
+
params = JSON.parse(event.nativeEvent.productEvent.params);
|
|
33
|
+
} catch (e) {
|
|
34
|
+
console.error('Failed to parse productEvent.params', e);
|
|
35
|
+
}
|
|
36
|
+
const productEvent = {
|
|
37
|
+
action: event.nativeEvent.productEvent.action,
|
|
38
|
+
params: params
|
|
39
|
+
};
|
|
40
|
+
(_this$props$onEvent = (_this$props = this.props).onEvent) === null || _this$props$onEvent === void 0 || _this$props$onEvent.call(_this$props, productEvent);
|
|
41
|
+
},
|
|
42
|
+
onError: event => {
|
|
43
|
+
var _this$props$onError, _this$props2;
|
|
44
|
+
const mobileSdkError = {
|
|
45
|
+
isFatal: event.nativeEvent.error.isFatal,
|
|
46
|
+
message: event.nativeEvent.error.message,
|
|
47
|
+
name: event.nativeEvent.error.name
|
|
48
|
+
};
|
|
49
|
+
(_this$props$onError = (_this$props2 = this.props).onError) === null || _this$props$onError === void 0 || _this$props$onError.call(_this$props2, mobileSdkError);
|
|
50
|
+
},
|
|
51
|
+
onResized: event => {
|
|
52
|
+
const newHeight = Number(event.nativeEvent.height);
|
|
53
|
+
if (newHeight !== this.state.nativeViewHeight) {
|
|
54
|
+
console.log('onResized', newHeight);
|
|
55
|
+
this.setState({
|
|
56
|
+
nativeViewHeight: newHeight
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
setSnippet = snippet => {
|
|
63
|
+
const view = this.checkoutViewRef.current;
|
|
64
|
+
if (view != null) {
|
|
65
|
+
_KlarnaCheckoutViewNativeComponent.RNKlarnaCheckoutViewCommands.setSnippet(view, snippet);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
suspend = () => {
|
|
69
|
+
const view = this.checkoutViewRef.current;
|
|
70
|
+
if (view != null) {
|
|
71
|
+
_KlarnaCheckoutViewNativeComponent.RNKlarnaCheckoutViewCommands.suspend(view);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
resume = () => {
|
|
75
|
+
const view = this.checkoutViewRef.current;
|
|
76
|
+
if (view != null) {
|
|
77
|
+
_KlarnaCheckoutViewNativeComponent.RNKlarnaCheckoutViewCommands.resume(view);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
exports.KlarnaCheckoutView = KlarnaCheckoutView;
|
|
82
|
+
var _default = KlarnaCheckoutView;
|
|
83
|
+
exports.default = _default;
|
|
84
|
+
//# sourceMappingURL=KlarnaCheckoutView.js.map
|
|
@@ -0,0 +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","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","setSnippet","snippet","view","current","RNKlarnaCheckoutViewCommands","suspend","resume","exports","_default"],"sourceRoot":"../../src","sources":["KlarnaCheckoutView.tsx"],"mappings":"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"}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -25,4 +25,15 @@ Object.keys(_KlarnaStandaloneWebView).forEach(function (key) {
|
|
|
25
25
|
}
|
|
26
26
|
});
|
|
27
27
|
});
|
|
28
|
+
var _KlarnaCheckoutView = require("./KlarnaCheckoutView");
|
|
29
|
+
Object.keys(_KlarnaCheckoutView).forEach(function (key) {
|
|
30
|
+
if (key === "default" || key === "__esModule") return;
|
|
31
|
+
if (key in exports && exports[key] === _KlarnaCheckoutView[key]) return;
|
|
32
|
+
Object.defineProperty(exports, key, {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function () {
|
|
35
|
+
return _KlarnaCheckoutView[key];
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
28
39
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_KlarnaPaymentView","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_KlarnaStandaloneWebView"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,kBAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,kBAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,kBAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,wBAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,wBAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,wBAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,wBAAA,CAAAL,GAAA;IAAA;EAAA;AAAA"}
|
|
1
|
+
{"version":3,"names":["_KlarnaPaymentView","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_KlarnaStandaloneWebView","_KlarnaCheckoutView"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,kBAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,kBAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,kBAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,wBAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,wBAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,wBAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,wBAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,mBAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,mBAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,mBAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,mBAAA,CAAAN,GAAA;IAAA;EAAA;AAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.RNKlarnaCheckoutViewCommands = void 0;
|
|
7
|
+
var _codegenNativeCommands = _interopRequireDefault(require("react-native/Libraries/Utilities/codegenNativeCommands"));
|
|
8
|
+
var _codegenNativeComponent = _interopRequireDefault(require("react-native/Libraries/Utilities/codegenNativeComponent"));
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
const RNKlarnaCheckoutViewCommands = (0, _codegenNativeCommands.default)({
|
|
11
|
+
supportedCommands: ['setSnippet', 'suspend', 'resume']
|
|
12
|
+
});
|
|
13
|
+
exports.RNKlarnaCheckoutViewCommands = RNKlarnaCheckoutViewCommands;
|
|
14
|
+
var _default = (0, _codegenNativeComponent.default)('RNKlarnaCheckoutView');
|
|
15
|
+
exports.default = _default;
|
|
16
|
+
//# sourceMappingURL=KlarnaCheckoutViewNativeComponent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_codegenNativeCommands","_interopRequireDefault","require","_codegenNativeComponent","obj","__esModule","default","RNKlarnaCheckoutViewCommands","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;AA6CtF,MAAMG,4BAAgE,GAC3E,IAAAC,8BAAqB,EAAqC;EACxDC,iBAAiB,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ;AACvD,CAAC,CAAC;AAACC,OAAA,CAAAH,4BAAA,GAAAA,4BAAA;AAAA,IAAAI,QAAA,GAEU,IAAAC,+BAAsB,EACnC,sBACF,CAAC;AAAAF,OAAA,CAAAJ,OAAA,GAAAK,QAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["types/common/KlarnaMobileSDKError.ts"],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["types/common/KlarnaProductEvent.ts"],"mappings":""}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import React, { Component } from 'react';
|
|
2
|
+
import RNKlarnaCheckoutView, { RNKlarnaCheckoutViewCommands } from './specs/KlarnaCheckoutViewNativeComponent';
|
|
3
|
+
export class KlarnaCheckoutView extends Component {
|
|
4
|
+
constructor(props) {
|
|
5
|
+
super(props);
|
|
6
|
+
this.state = {
|
|
7
|
+
nativeViewHeight: 0
|
|
8
|
+
};
|
|
9
|
+
this.checkoutViewRef = /*#__PURE__*/React.createRef();
|
|
10
|
+
}
|
|
11
|
+
render() {
|
|
12
|
+
return /*#__PURE__*/React.createElement(RNKlarnaCheckoutView, {
|
|
13
|
+
ref: this.checkoutViewRef
|
|
14
|
+
/* eslint-disable-next-line react-native/no-inline-styles */,
|
|
15
|
+
style: {
|
|
16
|
+
width: '100%',
|
|
17
|
+
height: this.state.nativeViewHeight
|
|
18
|
+
},
|
|
19
|
+
returnUrl: this.props.returnUrl || '',
|
|
20
|
+
onEvent: event => {
|
|
21
|
+
var _this$props$onEvent, _this$props;
|
|
22
|
+
let params = {};
|
|
23
|
+
try {
|
|
24
|
+
params = JSON.parse(event.nativeEvent.productEvent.params);
|
|
25
|
+
} catch (e) {
|
|
26
|
+
console.error('Failed to parse productEvent.params', e);
|
|
27
|
+
}
|
|
28
|
+
const productEvent = {
|
|
29
|
+
action: event.nativeEvent.productEvent.action,
|
|
30
|
+
params: params
|
|
31
|
+
};
|
|
32
|
+
(_this$props$onEvent = (_this$props = this.props).onEvent) === null || _this$props$onEvent === void 0 || _this$props$onEvent.call(_this$props, productEvent);
|
|
33
|
+
},
|
|
34
|
+
onError: event => {
|
|
35
|
+
var _this$props$onError, _this$props2;
|
|
36
|
+
const mobileSdkError = {
|
|
37
|
+
isFatal: event.nativeEvent.error.isFatal,
|
|
38
|
+
message: event.nativeEvent.error.message,
|
|
39
|
+
name: event.nativeEvent.error.name
|
|
40
|
+
};
|
|
41
|
+
(_this$props$onError = (_this$props2 = this.props).onError) === null || _this$props$onError === void 0 || _this$props$onError.call(_this$props2, mobileSdkError);
|
|
42
|
+
},
|
|
43
|
+
onResized: event => {
|
|
44
|
+
const newHeight = Number(event.nativeEvent.height);
|
|
45
|
+
if (newHeight !== this.state.nativeViewHeight) {
|
|
46
|
+
console.log('onResized', newHeight);
|
|
47
|
+
this.setState({
|
|
48
|
+
nativeViewHeight: newHeight
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
setSnippet = snippet => {
|
|
55
|
+
const view = this.checkoutViewRef.current;
|
|
56
|
+
if (view != null) {
|
|
57
|
+
RNKlarnaCheckoutViewCommands.setSnippet(view, snippet);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
suspend = () => {
|
|
61
|
+
const view = this.checkoutViewRef.current;
|
|
62
|
+
if (view != null) {
|
|
63
|
+
RNKlarnaCheckoutViewCommands.suspend(view);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
resume = () => {
|
|
67
|
+
const view = this.checkoutViewRef.current;
|
|
68
|
+
if (view != null) {
|
|
69
|
+
RNKlarnaCheckoutViewCommands.resume(view);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
export default KlarnaCheckoutView;
|
|
74
|
+
//# sourceMappingURL=KlarnaCheckoutView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Component","RNKlarnaCheckoutView","RNKlarnaCheckoutViewCommands","KlarnaCheckoutView","constructor","props","state","nativeViewHeight","checkoutViewRef","createRef","render","createElement","ref","style","width","height","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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"}
|
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"}
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,cAAc,qBAAqB;AACnC,cAAc,2BAA2B;AACzC,cAAc,sBAAsB"}
|