react-native-klarna-inapp-sdk 2.4.10 → 2.5.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 +2 -1
- package/android/build.gradle +3 -1
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/KlarnaMobileSDKPackage.java +5 -1
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/checkout/KlarnaCheckoutViewManager.java +4 -10
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/WebViewResizeObserver.java +28 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/event/ComponentEventSender.java +5 -1
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/ui/ResizeObserverWrapperView.java +2 -2
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/ui/WrapperView.java +2 -2
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/ui/YogaLayoutHelper.java +39 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/expresscheckout/KlarnaExpressCheckoutViewCallback.kt +30 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/expresscheckout/KlarnaExpressCheckoutViewEventSender.kt +80 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/expresscheckout/KlarnaExpressCheckoutViewManager.java +544 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/osm/KlarnaOSMViewEventHandler.java +30 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/osm/KlarnaOSMViewEventSender.java +64 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/osm/KlarnaOSMViewManager.java +356 -0
- package/android/src/newarch/java/com/klarna/mobile/sdk/reactnative/spec/RNKlarnaExpressCheckoutViewSpec.java +31 -0
- package/android/src/newarch/java/com/klarna/mobile/sdk/reactnative/spec/RNKlarnaOSMViewSpec.java +31 -0
- package/android/src/oldarch/java/com/klarna/mobile/sdk/reactnative/spec/RNKlarnaExpressCheckoutViewSpec.java +36 -0
- package/android/src/oldarch/java/com/klarna/mobile/sdk/reactnative/spec/RNKlarnaOSMViewSpec.java +32 -0
- package/android/src/test/java/com/klarna/mobile/sdk/reactnative/KlarnaMobileSDKPackageTest.java +5 -1
- package/android/src/test/java/com/klarna/mobile/sdk/reactnative/common/ui/YogaLayoutHelperTest.java +79 -0
- package/android/src/test/java/com/klarna/mobile/sdk/reactnative/expresscheckout/KlarnaExpressCheckoutViewManagerTest.java +259 -0
- package/android/src/test/java/com/klarna/mobile/sdk/reactnative/osm/KlarnaOSMViewEventHandlerTest.java +136 -0
- package/android/src/test/java/com/klarna/mobile/sdk/reactnative/osm/KlarnaOSMViewEventSenderTest.java +184 -0
- package/android/src/test/java/com/klarna/mobile/sdk/reactnative/osm/KlarnaOSMViewManagerTest.java +385 -0
- package/ios/RNKlarnaMobileSDK.xcodeproj/project.pbxproj +55 -1
- package/ios/Sources/KlarnaExpressCheckoutViewManager.h +5 -0
- package/ios/Sources/KlarnaExpressCheckoutViewManager.mm +39 -0
- package/ios/Sources/KlarnaOSMViewManager.h +5 -0
- package/ios/Sources/KlarnaOSMViewManager.mm +59 -0
- package/ios/Sources/view/KlarnaExpressCheckoutButtonDelegateProxy.swift +145 -0
- package/ios/Sources/view/KlarnaExpressCheckoutViewWrapper.h +41 -0
- package/ios/Sources/view/KlarnaOSMViewWrapper.h +48 -0
- package/ios/Sources/view/newarch/KlarnaExpressCheckoutViewWrapper.mm +228 -0
- package/ios/Sources/view/newarch/KlarnaOSMViewWrapper.mm +294 -0
- package/ios/Sources/view/newarch/KlarnaStandaloneWebViewWrapper.mm +20 -13
- package/ios/Sources/view/oldarch/KlarnaExpressCheckoutViewWrapper.mm +222 -0
- package/ios/Sources/view/oldarch/KlarnaOSMViewWrapper.mm +273 -0
- package/ios/Sources/view/oldarch/KlarnaStandaloneWebViewWrapper.mm +11 -13
- package/ios/Tests/KlarnaExpressCheckoutViewWrapperTests.m +391 -0
- package/ios/Tests/KlarnaOSMViewWrapperTests.m +450 -0
- package/ios/Tests/KlarnaStandaloneWebViewWrapperTests.m +105 -0
- package/lib/commonjs/KlarnaExpressCheckoutView.js +75 -0
- package/lib/commonjs/KlarnaExpressCheckoutView.js.map +1 -0
- package/lib/commonjs/KlarnaOSMView.js +94 -0
- package/lib/commonjs/KlarnaOSMView.js.map +1 -0
- package/lib/commonjs/index.js +99 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/specs/KlarnaExpressCheckoutViewNativeComponent.js +11 -0
- package/lib/commonjs/specs/KlarnaExpressCheckoutViewNativeComponent.js.map +1 -0
- package/lib/commonjs/specs/KlarnaOSMViewNativeComponent.js +16 -0
- package/lib/commonjs/specs/KlarnaOSMViewNativeComponent.js.map +1 -0
- package/lib/commonjs/types/button/KlarnaButtonShape.js +14 -0
- package/lib/commonjs/types/button/KlarnaButtonShape.js.map +1 -0
- package/lib/commonjs/types/button/KlarnaButtonStyle.js +13 -0
- package/lib/commonjs/types/button/KlarnaButtonStyle.js.map +1 -0
- package/lib/commonjs/types/button/KlarnaButtonTheme.js +14 -0
- package/lib/commonjs/types/button/KlarnaButtonTheme.js.map +1 -0
- package/lib/commonjs/types/common/KlarnaExpressCheckoutSessionOptions.js +9 -0
- package/lib/commonjs/types/common/KlarnaExpressCheckoutSessionOptions.js.map +1 -0
- package/lib/commonjs/types/common/KlarnaOSMPlacementKey.js +2 -0
- package/lib/commonjs/types/common/KlarnaOSMPlacementKey.js.map +1 -0
- package/lib/commonjs/types/common/KlarnaTheme.js +14 -0
- package/lib/commonjs/types/common/KlarnaTheme.js.map +1 -0
- package/lib/module/KlarnaExpressCheckoutView.js +64 -0
- package/lib/module/KlarnaExpressCheckoutView.js.map +1 -0
- package/lib/module/KlarnaOSMView.js +84 -0
- package/lib/module/KlarnaOSMView.js.map +1 -0
- package/lib/module/index.js +9 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/specs/KlarnaExpressCheckoutViewNativeComponent.js +3 -0
- package/lib/module/specs/KlarnaExpressCheckoutViewNativeComponent.js.map +1 -0
- package/lib/module/specs/KlarnaOSMViewNativeComponent.js +7 -0
- package/lib/module/specs/KlarnaOSMViewNativeComponent.js.map +1 -0
- package/lib/module/types/button/KlarnaButtonShape.js +7 -0
- package/lib/module/types/button/KlarnaButtonShape.js.map +1 -0
- package/lib/module/types/button/KlarnaButtonStyle.js +6 -0
- package/lib/module/types/button/KlarnaButtonStyle.js.map +1 -0
- package/lib/module/types/button/KlarnaButtonTheme.js +7 -0
- package/lib/module/types/button/KlarnaButtonTheme.js.map +1 -0
- package/lib/module/types/common/KlarnaExpressCheckoutSessionOptions.js +2 -0
- package/lib/module/types/common/KlarnaExpressCheckoutSessionOptions.js.map +1 -0
- package/lib/module/types/common/KlarnaOSMPlacementKey.js +2 -0
- package/lib/module/types/common/KlarnaOSMPlacementKey.js.map +1 -0
- package/lib/module/types/common/KlarnaTheme.js +7 -0
- package/lib/module/types/common/KlarnaTheme.js.map +1 -0
- package/lib/typescript/KlarnaExpressCheckoutView.d.ts +47 -0
- package/lib/typescript/KlarnaExpressCheckoutView.d.ts.map +1 -0
- package/lib/typescript/KlarnaOSMView.d.ts +36 -0
- package/lib/typescript/KlarnaOSMView.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +9 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/specs/KlarnaExpressCheckoutViewNativeComponent.d.ts +45 -0
- package/lib/typescript/specs/KlarnaExpressCheckoutViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/specs/KlarnaOSMViewNativeComponent.d.ts +35 -0
- package/lib/typescript/specs/KlarnaOSMViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/types/button/KlarnaButtonShape.d.ts +6 -0
- package/lib/typescript/types/button/KlarnaButtonShape.d.ts.map +1 -0
- package/lib/typescript/types/button/KlarnaButtonStyle.d.ts +5 -0
- package/lib/typescript/types/button/KlarnaButtonStyle.d.ts.map +1 -0
- package/lib/typescript/types/button/KlarnaButtonTheme.d.ts +6 -0
- package/lib/typescript/types/button/KlarnaButtonTheme.d.ts.map +1 -0
- package/lib/typescript/types/common/KlarnaExpressCheckoutSessionOptions.d.ts +10 -0
- package/lib/typescript/types/common/KlarnaExpressCheckoutSessionOptions.d.ts.map +1 -0
- package/lib/typescript/types/common/KlarnaOSMPlacementKey.d.ts +2 -0
- package/lib/typescript/types/common/KlarnaOSMPlacementKey.d.ts.map +1 -0
- package/lib/typescript/types/common/KlarnaTheme.d.ts +6 -0
- package/lib/typescript/types/common/KlarnaTheme.d.ts.map +1 -0
- package/package.json +5 -3
- package/react-native-klarna-inapp-sdk.podspec +2 -1
- package/src/KlarnaExpressCheckoutView.tsx +169 -0
- package/src/KlarnaOSMView.tsx +157 -0
- package/src/index.tsx +9 -0
- package/src/specs/KlarnaExpressCheckoutViewNativeComponent.ts +66 -0
- package/src/specs/KlarnaOSMViewNativeComponent.ts +50 -0
- package/src/types/button/KlarnaButtonShape.ts +5 -0
- package/src/types/button/KlarnaButtonStyle.ts +4 -0
- package/src/types/button/KlarnaButtonTheme.ts +5 -0
- package/src/types/common/KlarnaExpressCheckoutSessionOptions.ts +13 -0
- package/src/types/common/KlarnaOSMPlacementKey.ts +3 -0
- package/src/types/common/KlarnaTheme.ts +5 -0
package/android/src/test/java/com/klarna/mobile/sdk/reactnative/osm/KlarnaOSMViewManagerTest.java
ADDED
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
package com.klarna.mobile.sdk.reactnative.osm;
|
|
2
|
+
|
|
3
|
+
import static com.klarna.mobile.sdk.reactnative.osm.KlarnaOSMViewManager.COMMAND_RENDER_OSM;
|
|
4
|
+
import static com.klarna.mobile.sdk.reactnative.osm.KlarnaOSMViewManager.KLARNA_OSM_VIEW_REACT_CLASS;
|
|
5
|
+
|
|
6
|
+
import com.facebook.react.bridge.Arguments;
|
|
7
|
+
import com.facebook.react.bridge.JavaOnlyArray;
|
|
8
|
+
import com.facebook.react.bridge.JavaOnlyMap;
|
|
9
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
10
|
+
import com.klarna.mobile.sdk.api.KlarnaEnvironment;
|
|
11
|
+
import com.klarna.mobile.sdk.api.KlarnaRegion;
|
|
12
|
+
import com.klarna.mobile.sdk.api.KlarnaTheme;
|
|
13
|
+
import com.klarna.mobile.sdk.api.osm.KlarnaOSMView;
|
|
14
|
+
import com.klarna.mobile.sdk.reactnative.common.ui.WrapperView;
|
|
15
|
+
|
|
16
|
+
import org.junit.After;
|
|
17
|
+
import org.junit.Assert;
|
|
18
|
+
import org.junit.Before;
|
|
19
|
+
import org.junit.Test;
|
|
20
|
+
import org.junit.runner.RunWith;
|
|
21
|
+
import org.mockito.MockedStatic;
|
|
22
|
+
import org.mockito.Mockito;
|
|
23
|
+
import org.robolectric.RobolectricTestRunner;
|
|
24
|
+
|
|
25
|
+
@RunWith(RobolectricTestRunner.class)
|
|
26
|
+
public class KlarnaOSMViewManagerTest {
|
|
27
|
+
|
|
28
|
+
private MockedStatic<Arguments> mockedStaticArguments;
|
|
29
|
+
private KlarnaOSMViewManager manager;
|
|
30
|
+
private WrapperView<KlarnaOSMView> wrapper;
|
|
31
|
+
private KlarnaOSMView osmView;
|
|
32
|
+
|
|
33
|
+
@SuppressWarnings("unchecked")
|
|
34
|
+
@Before
|
|
35
|
+
public void setup() {
|
|
36
|
+
manager = new KlarnaOSMViewManager();
|
|
37
|
+
|
|
38
|
+
osmView = Mockito.mock(KlarnaOSMView.class);
|
|
39
|
+
wrapper = Mockito.mock(WrapperView.class);
|
|
40
|
+
Mockito.when(wrapper.getView()).thenReturn(osmView);
|
|
41
|
+
|
|
42
|
+
mockedStaticArguments = Mockito.mockStatic(Arguments.class);
|
|
43
|
+
Mockito.when(Arguments.createArray())
|
|
44
|
+
.thenAnswer(invocation -> new JavaOnlyArray());
|
|
45
|
+
Mockito.when(Arguments.createMap())
|
|
46
|
+
.thenAnswer(invocation -> new JavaOnlyMap());
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
@After
|
|
50
|
+
public void teardown() {
|
|
51
|
+
Mockito.reset(wrapper, osmView);
|
|
52
|
+
mockedStaticArguments.close();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// --- getName ---
|
|
56
|
+
|
|
57
|
+
@Test
|
|
58
|
+
public void testReactClassName() {
|
|
59
|
+
Assert.assertEquals("RNKlarnaOSMView", manager.getName());
|
|
60
|
+
Assert.assertEquals("RNKlarnaOSMView", KLARNA_OSM_VIEW_REACT_CLASS);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// --- Prop setters: string props ---
|
|
64
|
+
|
|
65
|
+
@Test
|
|
66
|
+
public void testSetClientId() {
|
|
67
|
+
manager.setClientId(wrapper, "test-client-id");
|
|
68
|
+
Mockito.verify(osmView).setClientId("test-client-id");
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
@Test
|
|
72
|
+
public void testSetClientIdNull() {
|
|
73
|
+
manager.setClientId(wrapper, null);
|
|
74
|
+
Mockito.verify(osmView, Mockito.never()).setClientId(Mockito.anyString());
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
@Test
|
|
78
|
+
public void testSetClientIdEmpty() {
|
|
79
|
+
manager.setClientId(wrapper, "");
|
|
80
|
+
Mockito.verify(osmView, Mockito.never()).setClientId(Mockito.anyString());
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
@Test
|
|
84
|
+
public void testSetPlacementKey() {
|
|
85
|
+
manager.setPlacementKey(wrapper, "test-placement-key");
|
|
86
|
+
Mockito.verify(osmView).setPlacementKey("test-placement-key");
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@Test
|
|
90
|
+
public void testSetPlacementKeyNull() {
|
|
91
|
+
manager.setPlacementKey(wrapper, null);
|
|
92
|
+
Mockito.verify(osmView, Mockito.never()).setPlacementKey(Mockito.anyString());
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@Test
|
|
96
|
+
public void testSetPlacementKeyEmpty() {
|
|
97
|
+
manager.setPlacementKey(wrapper, "");
|
|
98
|
+
Mockito.verify(osmView, Mockito.never()).setPlacementKey(Mockito.anyString());
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
@Test
|
|
102
|
+
public void testSetLocale() {
|
|
103
|
+
manager.setLocale(wrapper, "en-US");
|
|
104
|
+
Mockito.verify(osmView).setLocale("en-US");
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
@Test
|
|
108
|
+
public void testSetLocaleNull() {
|
|
109
|
+
manager.setLocale(wrapper, null);
|
|
110
|
+
Mockito.verify(osmView, Mockito.never()).setLocale(Mockito.anyString());
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
@Test
|
|
114
|
+
public void testSetLocaleEmpty() {
|
|
115
|
+
manager.setLocale(wrapper, "");
|
|
116
|
+
Mockito.verify(osmView, Mockito.never()).setLocale(Mockito.anyString());
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// --- Prop setter: purchaseAmount ---
|
|
120
|
+
|
|
121
|
+
@Test
|
|
122
|
+
public void testSetPurchaseAmountValid() {
|
|
123
|
+
manager.setPurchaseAmount(wrapper, "9999");
|
|
124
|
+
Mockito.verify(osmView).setPurchaseAmount(9999L);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
@Test
|
|
128
|
+
public void testSetPurchaseAmountNull() {
|
|
129
|
+
manager.setPurchaseAmount(wrapper, null);
|
|
130
|
+
Mockito.verify(osmView, Mockito.never()).setPurchaseAmount(Mockito.anyLong());
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
@Test
|
|
134
|
+
public void testSetPurchaseAmountEmpty() {
|
|
135
|
+
manager.setPurchaseAmount(wrapper, "");
|
|
136
|
+
Mockito.verify(osmView, Mockito.never()).setPurchaseAmount(Mockito.anyLong());
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
@Test
|
|
140
|
+
public void testSetPurchaseAmountInvalid() {
|
|
141
|
+
// Should not throw, but should not set the value either
|
|
142
|
+
manager.setPurchaseAmount(wrapper, "not-a-number");
|
|
143
|
+
Mockito.verify(osmView, Mockito.never()).setPurchaseAmount(Mockito.anyLong());
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
@Test
|
|
147
|
+
public void testSetPurchaseAmountLargeNumber() {
|
|
148
|
+
manager.setPurchaseAmount(wrapper, "999999999999");
|
|
149
|
+
Mockito.verify(osmView).setPurchaseAmount(999999999999L);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// --- Prop setter: environment ---
|
|
153
|
+
|
|
154
|
+
@Test
|
|
155
|
+
public void testSetEnvironmentPlayground() {
|
|
156
|
+
manager.setEnvironment(wrapper, "playground");
|
|
157
|
+
Mockito.verify(osmView).setEnvironment(KlarnaEnvironment.PLAYGROUND);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
@Test
|
|
161
|
+
public void testSetEnvironmentProduction() {
|
|
162
|
+
manager.setEnvironment(wrapper, "production");
|
|
163
|
+
Mockito.verify(osmView).setEnvironment(KlarnaEnvironment.PRODUCTION);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
@Test
|
|
167
|
+
public void testSetEnvironmentStaging() {
|
|
168
|
+
manager.setEnvironment(wrapper, "staging");
|
|
169
|
+
Mockito.verify(osmView).setEnvironment(KlarnaEnvironment.STAGING);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
@Test
|
|
173
|
+
public void testSetEnvironmentUnknown() {
|
|
174
|
+
manager.setEnvironment(wrapper, "unknown");
|
|
175
|
+
Mockito.verify(osmView, Mockito.never()).setEnvironment(Mockito.any());
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
@Test
|
|
179
|
+
public void testSetEnvironmentNull() {
|
|
180
|
+
manager.setEnvironment(wrapper, null);
|
|
181
|
+
Mockito.verify(osmView, Mockito.never()).setEnvironment(Mockito.any());
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
@Test
|
|
185
|
+
public void testSetEnvironmentEmpty() {
|
|
186
|
+
manager.setEnvironment(wrapper, "");
|
|
187
|
+
Mockito.verify(osmView, Mockito.never()).setEnvironment(Mockito.any());
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// --- Prop setter: region ---
|
|
191
|
+
|
|
192
|
+
@Test
|
|
193
|
+
public void testSetRegionEu() {
|
|
194
|
+
manager.setRegion(wrapper, "eu");
|
|
195
|
+
Mockito.verify(osmView).setRegion(KlarnaRegion.EU);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
@Test
|
|
199
|
+
public void testSetRegionNa() {
|
|
200
|
+
manager.setRegion(wrapper, "na");
|
|
201
|
+
Mockito.verify(osmView).setRegion(KlarnaRegion.NA);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
@Test
|
|
205
|
+
public void testSetRegionOc() {
|
|
206
|
+
manager.setRegion(wrapper, "oc");
|
|
207
|
+
Mockito.verify(osmView).setRegion(KlarnaRegion.OC);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
@Test
|
|
211
|
+
public void testSetRegionUnknown() {
|
|
212
|
+
manager.setRegion(wrapper, "unknown");
|
|
213
|
+
Mockito.verify(osmView, Mockito.never()).setRegion(Mockito.any());
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
@Test
|
|
217
|
+
public void testSetRegionNull() {
|
|
218
|
+
manager.setRegion(wrapper, null);
|
|
219
|
+
Mockito.verify(osmView, Mockito.never()).setRegion(Mockito.any());
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// --- Prop setter: theme ---
|
|
223
|
+
|
|
224
|
+
@Test
|
|
225
|
+
public void testSetThemeLight() {
|
|
226
|
+
manager.setTheme(wrapper, "light");
|
|
227
|
+
Mockito.verify(osmView).setTheme(KlarnaTheme.LIGHT);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
@Test
|
|
231
|
+
public void testSetThemeDark() {
|
|
232
|
+
manager.setTheme(wrapper, "dark");
|
|
233
|
+
Mockito.verify(osmView).setTheme(KlarnaTheme.DARK);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
@Test
|
|
237
|
+
public void testSetThemeAutomatic() {
|
|
238
|
+
manager.setTheme(wrapper, "automatic");
|
|
239
|
+
Mockito.verify(osmView).setTheme(KlarnaTheme.AUTOMATIC);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
@Test
|
|
243
|
+
public void testSetThemeUnknown() {
|
|
244
|
+
manager.setTheme(wrapper, "unknown");
|
|
245
|
+
Mockito.verify(osmView, Mockito.never()).setTheme(Mockito.any());
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
@Test
|
|
249
|
+
public void testSetThemeNull() {
|
|
250
|
+
manager.setTheme(wrapper, null);
|
|
251
|
+
Mockito.verify(osmView, Mockito.never()).setTheme(Mockito.any());
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
// --- Prop setter: returnUrl (no-op) ---
|
|
255
|
+
|
|
256
|
+
@Test
|
|
257
|
+
public void testSetReturnUrlIsNoOp() {
|
|
258
|
+
// returnUrl is intentionally ignored for OSM
|
|
259
|
+
manager.setReturnUrl(wrapper, "https://return.example.com");
|
|
260
|
+
// Verify no interaction with osmView for returnUrl
|
|
261
|
+
Mockito.verifyNoInteractions(osmView);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
// --- Prop setter: backgroundColor / textColor ---
|
|
265
|
+
|
|
266
|
+
@Test
|
|
267
|
+
public void testSetBackgroundColor() {
|
|
268
|
+
manager.setBackgroundColor(wrapper, "#FF0000");
|
|
269
|
+
Mockito.verify(osmView).setStyleConfiguration(Mockito.any());
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
@Test
|
|
273
|
+
public void testSetTextColor() {
|
|
274
|
+
manager.setTextColor(wrapper, "#00FF00");
|
|
275
|
+
Mockito.verify(osmView).setStyleConfiguration(Mockito.any());
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
@Test
|
|
279
|
+
public void testSetBackgroundColorNull() {
|
|
280
|
+
manager.setBackgroundColor(wrapper, null);
|
|
281
|
+
// null color means null style configuration
|
|
282
|
+
Mockito.verify(osmView).setStyleConfiguration(null);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
@Test
|
|
286
|
+
public void testSetTextColorNull() {
|
|
287
|
+
manager.setTextColor(wrapper, null);
|
|
288
|
+
Mockito.verify(osmView).setStyleConfiguration(null);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
@Test
|
|
292
|
+
public void testSetBackgroundColorInvalid() {
|
|
293
|
+
manager.setBackgroundColor(wrapper, "not-a-color");
|
|
294
|
+
// Invalid color should result in null style configuration
|
|
295
|
+
Mockito.verify(osmView).setStyleConfiguration(null);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
@Test
|
|
299
|
+
public void testSetColorWithoutHash() {
|
|
300
|
+
// parseColor should auto-prefix "#"
|
|
301
|
+
manager.setBackgroundColor(wrapper, "FF0000");
|
|
302
|
+
Mockito.verify(osmView).setStyleConfiguration(Mockito.any());
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
// --- receiveCommand ---
|
|
306
|
+
|
|
307
|
+
@Test
|
|
308
|
+
public void testReceiveCommandRender() {
|
|
309
|
+
// receiveCommand with "render" requires context for render(),
|
|
310
|
+
// but we can verify the command routing by mocking the context
|
|
311
|
+
ReadableArray args = new JavaOnlyArray();
|
|
312
|
+
// render() calls view.getView() and then needs ReactContext, so this will
|
|
313
|
+
// exercise the command dispatch path; the actual render is tested separately
|
|
314
|
+
try {
|
|
315
|
+
manager.receiveCommand(wrapper, COMMAND_RENDER_OSM, args);
|
|
316
|
+
} catch (Exception e) {
|
|
317
|
+
// Expected: render() tries to cast wrapper.getContext() to ReactContext
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
@Test
|
|
322
|
+
public void testReceiveCommandUnknown() {
|
|
323
|
+
// Unknown command should be silently ignored
|
|
324
|
+
ReadableArray args = new JavaOnlyArray();
|
|
325
|
+
manager.receiveCommand(wrapper, "unknownCommand", args);
|
|
326
|
+
// No exception should be thrown
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
// --- getExportedCustomDirectEventTypeConstants ---
|
|
330
|
+
|
|
331
|
+
@Test
|
|
332
|
+
public void testExportedEvents() {
|
|
333
|
+
java.util.Map<String, Object> events = manager.getExportedCustomDirectEventTypeConstants();
|
|
334
|
+
Assert.assertNotNull(events);
|
|
335
|
+
Assert.assertEquals(3, events.size());
|
|
336
|
+
Assert.assertTrue(events.containsKey("onError"));
|
|
337
|
+
Assert.assertTrue(events.containsKey("onResized"));
|
|
338
|
+
Assert.assertTrue(events.containsKey("onOSMViewReady"));
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
// --- Null view edge case ---
|
|
342
|
+
|
|
343
|
+
@Test
|
|
344
|
+
public void testSetClientIdNullInnerView() {
|
|
345
|
+
Mockito.when(wrapper.getView()).thenReturn(null);
|
|
346
|
+
// Should not throw
|
|
347
|
+
manager.setClientId(wrapper, "test-client-id");
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
@Test
|
|
351
|
+
public void testSetPurchaseAmountNullInnerView() {
|
|
352
|
+
Mockito.when(wrapper.getView()).thenReturn(null);
|
|
353
|
+
manager.setPurchaseAmount(wrapper, "9999");
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
@Test
|
|
357
|
+
public void testSetEnvironmentNullInnerView() {
|
|
358
|
+
Mockito.when(wrapper.getView()).thenReturn(null);
|
|
359
|
+
manager.setEnvironment(wrapper, "production");
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
@Test
|
|
363
|
+
public void testSetRegionNullInnerView() {
|
|
364
|
+
Mockito.when(wrapper.getView()).thenReturn(null);
|
|
365
|
+
manager.setRegion(wrapper, "eu");
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
@Test
|
|
369
|
+
public void testSetThemeNullInnerView() {
|
|
370
|
+
Mockito.when(wrapper.getView()).thenReturn(null);
|
|
371
|
+
manager.setTheme(wrapper, "light");
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
@Test
|
|
375
|
+
public void testSetBackgroundColorNullInnerView() {
|
|
376
|
+
Mockito.when(wrapper.getView()).thenReturn(null);
|
|
377
|
+
manager.setBackgroundColor(wrapper, "#FF0000");
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
@Test
|
|
381
|
+
public void testSetTextColorNullInnerView() {
|
|
382
|
+
Mockito.when(wrapper.getView()).thenReturn(null);
|
|
383
|
+
manager.setTextColor(wrapper, "#00FF00");
|
|
384
|
+
}
|
|
385
|
+
}
|
|
@@ -7,9 +7,11 @@
|
|
|
7
7
|
objects = {
|
|
8
8
|
|
|
9
9
|
/* Begin PBXBuildFile section */
|
|
10
|
+
0DB3516A77E13682BFCA4E64 /* KlarnaExpressCheckoutViewWrapper.mm in Sources */ = {isa = PBXBuildFile; fileRef = 33C84BA7615CC01128CA31E5 /* KlarnaExpressCheckoutViewWrapper.mm */; };
|
|
10
11
|
42BC05FF2AC57E110044A9FE /* KlarnaStandaloneWebViewManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 42BC05FE2AC57E110044A9FE /* KlarnaStandaloneWebViewManager.mm */; };
|
|
11
12
|
42BC06032AC586C50044A9FE /* KlarnaStandaloneWebViewWrapper.mm in Sources */ = {isa = PBXBuildFile; fileRef = 42BC06022AC586C50044A9FE /* KlarnaStandaloneWebViewWrapper.mm */; };
|
|
12
13
|
42BC06052AC588180044A9FE /* KlarnaStandaloneWebViewWrapper.mm in Sources */ = {isa = PBXBuildFile; fileRef = 42BC06042AC588180044A9FE /* KlarnaStandaloneWebViewWrapper.mm */; };
|
|
14
|
+
5EF79F343E41AF25BCF0FB57 /* KlarnaExpressCheckoutViewManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC11876CCED1F9FF63141F96 /* KlarnaExpressCheckoutViewManager.mm */; };
|
|
13
15
|
7917D755255C45FB00E16799 /* PaymentViewWrapperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 7917D754255C45FB00E16799 /* PaymentViewWrapperTests.m */; };
|
|
14
16
|
7917D757255C45FB00E16799 /* libRNKlarnaMobileSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 134814201AA4EA6300B7C361 /* libRNKlarnaMobileSDK.a */; };
|
|
15
17
|
792F67C02AB8AD7D00675E18 /* PaymentViewWrapper.mm in Sources */ = {isa = PBXBuildFile; fileRef = 792F67BB2AB8AD7D00675E18 /* PaymentViewWrapper.mm */; };
|
|
@@ -18,9 +20,17 @@
|
|
|
18
20
|
79BD25FC2BC97B0900D2D92A /* KlarnaCheckoutViewWrapper.mm in Sources */ = {isa = PBXBuildFile; fileRef = 79BD25FB2BC97B0900D2D92A /* KlarnaCheckoutViewWrapper.mm */; };
|
|
19
21
|
79BD26002BCD4F6C00D2D92A /* KlarnaCheckoutViewWrapper.mm in Sources */ = {isa = PBXBuildFile; fileRef = 79BD25FF2BCD4F6C00D2D92A /* KlarnaCheckoutViewWrapper.mm */; };
|
|
20
22
|
79BD26042BCD572600D2D92A /* RNMobileSDKUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = 79BD26032BCD572600D2D92A /* RNMobileSDKUtils.mm */; };
|
|
23
|
+
9F9101C8D59ECF439818302A /* KlarnaExpressCheckoutButtonDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 162FB3924FC0CAB605BB10A7 /* KlarnaExpressCheckoutButtonDelegateProxy.swift */; };
|
|
24
|
+
A1B2C3D42D8600010000001A /* KlarnaOSMViewManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = A1B2C3D42D8600010000001F /* KlarnaOSMViewManager.mm */; };
|
|
25
|
+
A1B2C3D42D8600010000001B /* KlarnaOSMViewWrapper.mm in Sources */ = {isa = PBXBuildFile; fileRef = A1B2C3D42D8600010000002B /* KlarnaOSMViewWrapper.mm */; };
|
|
26
|
+
A1B2C3D42D8600010000001C /* KlarnaOSMViewWrapper.mm in Sources */ = {isa = PBXBuildFile; fileRef = A1B2C3D42D8600010000002C /* KlarnaOSMViewWrapper.mm */; };
|
|
27
|
+
A1B2C3D52602130000AABBCC /* KlarnaStandaloneWebViewWrapperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A1B2C3D42602130000AABBCC /* KlarnaStandaloneWebViewWrapperTests.m */; };
|
|
28
|
+
A1B2C3D62D8700010000003A /* KlarnaOSMViewWrapperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A1B2C3D62D8700010000003B /* KlarnaOSMViewWrapperTests.m */; };
|
|
29
|
+
AB2E3AF1EF7D600B7C2BB129 /* KlarnaExpressCheckoutViewWrapper.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9E25B2ABA81ABBC6F987AF54 /* KlarnaExpressCheckoutViewWrapper.mm */; };
|
|
21
30
|
B3E7B58A1CC2AC0600A0062D /* KlarnaPaymentViewManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3E7B5891CC2AC0600A0062D /* KlarnaPaymentViewManager.mm */; };
|
|
22
31
|
C950FFE559BF35928E94BF8D /* libPods-RNKlarnaMobileSDK-RNKlarnaMobileSDKTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F7837F2C76927FD0EC420C40 /* libPods-RNKlarnaMobileSDK-RNKlarnaMobileSDKTests.a */; };
|
|
23
32
|
DF4C69429315E34435B953E8 /* libPods-RNKlarnaMobileSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FF5062264E440DC969A15ACA /* libPods-RNKlarnaMobileSDK.a */; };
|
|
33
|
+
F3A8B9C202AB3456000DECBA /* KlarnaExpressCheckoutViewWrapperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F3A8B9C102AB3456000DECBA /* KlarnaExpressCheckoutViewWrapperTests.m */; };
|
|
24
34
|
/* End PBXBuildFile section */
|
|
25
35
|
|
|
26
36
|
/* Begin PBXContainerItemProxy section */
|
|
@@ -46,8 +56,11 @@
|
|
|
46
56
|
/* End PBXCopyFilesBuildPhase section */
|
|
47
57
|
|
|
48
58
|
/* Begin PBXFileReference section */
|
|
59
|
+
12F2DBCAAC01A760C139AA95 /* KlarnaExpressCheckoutViewWrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KlarnaExpressCheckoutViewWrapper.h; sourceTree = "<group>"; };
|
|
49
60
|
134814201AA4EA6300B7C361 /* libRNKlarnaMobileSDK.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRNKlarnaMobileSDK.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
61
|
+
162FB3924FC0CAB605BB10A7 /* KlarnaExpressCheckoutButtonDelegateProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KlarnaExpressCheckoutButtonDelegateProxy.swift; sourceTree = "<group>"; };
|
|
50
62
|
19C9876CD048B49EB4361DB8 /* Pods-RNKlarnaMobileSDK-RNKlarnaMobileSDKTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNKlarnaMobileSDK-RNKlarnaMobileSDKTests.release.xcconfig"; path = "Target Support Files/Pods-RNKlarnaMobileSDK-RNKlarnaMobileSDKTests/Pods-RNKlarnaMobileSDK-RNKlarnaMobileSDKTests.release.xcconfig"; sourceTree = "<group>"; };
|
|
63
|
+
33C84BA7615CC01128CA31E5 /* KlarnaExpressCheckoutViewWrapper.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = KlarnaExpressCheckoutViewWrapper.mm; sourceTree = "<group>"; };
|
|
51
64
|
3FC0A2F5614F1B06C1249CA3 /* Pods-RNKlarnaMobileSDK-RNKlarnaMobileSDKTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNKlarnaMobileSDK-RNKlarnaMobileSDKTests.debug.xcconfig"; path = "Target Support Files/Pods-RNKlarnaMobileSDK-RNKlarnaMobileSDKTests/Pods-RNKlarnaMobileSDK-RNKlarnaMobileSDKTests.debug.xcconfig"; sourceTree = "<group>"; };
|
|
52
65
|
42BC05FD2AC57D950044A9FE /* KlarnaStandaloneWebViewManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KlarnaStandaloneWebViewManager.h; sourceTree = "<group>"; };
|
|
53
66
|
42BC05FE2AC57E110044A9FE /* KlarnaStandaloneWebViewManager.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = KlarnaStandaloneWebViewManager.mm; sourceTree = "<group>"; };
|
|
@@ -69,9 +82,20 @@
|
|
|
69
82
|
79BD26032BCD572600D2D92A /* RNMobileSDKUtils.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RNMobileSDKUtils.mm; sourceTree = "<group>"; };
|
|
70
83
|
79E2A0B02BFBA653002923A5 /* PrefixHeader.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PrefixHeader.pch; sourceTree = "<group>"; };
|
|
71
84
|
7A4208B9D3B0F45669A2E06F /* Pods-RNKlarnaMobileSDK.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNKlarnaMobileSDK.release.xcconfig"; path = "Target Support Files/Pods-RNKlarnaMobileSDK/Pods-RNKlarnaMobileSDK.release.xcconfig"; sourceTree = "<group>"; };
|
|
85
|
+
9E25B2ABA81ABBC6F987AF54 /* KlarnaExpressCheckoutViewWrapper.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = KlarnaExpressCheckoutViewWrapper.mm; sourceTree = "<group>"; };
|
|
86
|
+
A1B2C3D42602130000AABBCC /* KlarnaStandaloneWebViewWrapperTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KlarnaStandaloneWebViewWrapperTests.m; sourceTree = "<group>"; };
|
|
87
|
+
A1B2C3D42D8600010000001E /* KlarnaOSMViewManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KlarnaOSMViewManager.h; sourceTree = "<group>"; };
|
|
88
|
+
A1B2C3D42D8600010000001F /* KlarnaOSMViewManager.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = KlarnaOSMViewManager.mm; sourceTree = "<group>"; };
|
|
89
|
+
A1B2C3D42D8600010000002A /* KlarnaOSMViewWrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KlarnaOSMViewWrapper.h; sourceTree = "<group>"; };
|
|
90
|
+
A1B2C3D42D8600010000002B /* KlarnaOSMViewWrapper.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = KlarnaOSMViewWrapper.mm; sourceTree = "<group>"; };
|
|
91
|
+
A1B2C3D42D8600010000002C /* KlarnaOSMViewWrapper.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = KlarnaOSMViewWrapper.mm; sourceTree = "<group>"; };
|
|
92
|
+
A1B2C3D62D8700010000003B /* KlarnaOSMViewWrapperTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KlarnaOSMViewWrapperTests.m; sourceTree = "<group>"; };
|
|
72
93
|
B074D4744315BBCD94D119E9 /* Pods-RNKlarnaMobileSDK.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNKlarnaMobileSDK.debug.xcconfig"; path = "Target Support Files/Pods-RNKlarnaMobileSDK/Pods-RNKlarnaMobileSDK.debug.xcconfig"; sourceTree = "<group>"; };
|
|
73
94
|
B3E7B5881CC2AC0600A0062D /* KlarnaPaymentViewManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KlarnaPaymentViewManager.h; sourceTree = "<group>"; };
|
|
74
95
|
B3E7B5891CC2AC0600A0062D /* KlarnaPaymentViewManager.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = KlarnaPaymentViewManager.mm; sourceTree = "<group>"; };
|
|
96
|
+
BC11876CCED1F9FF63141F96 /* KlarnaExpressCheckoutViewManager.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = KlarnaExpressCheckoutViewManager.mm; sourceTree = "<group>"; };
|
|
97
|
+
D18B14E1C87FBEC83B253DF6 /* KlarnaExpressCheckoutViewManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KlarnaExpressCheckoutViewManager.h; sourceTree = "<group>"; };
|
|
98
|
+
F3A8B9C102AB3456000DECBA /* KlarnaExpressCheckoutViewWrapperTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KlarnaExpressCheckoutViewWrapperTests.m; sourceTree = "<group>"; };
|
|
75
99
|
F7837F2C76927FD0EC420C40 /* libPods-RNKlarnaMobileSDK-RNKlarnaMobileSDKTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNKlarnaMobileSDK-RNKlarnaMobileSDKTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
76
100
|
FF5062264E440DC969A15ACA /* libPods-RNKlarnaMobileSDK.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNKlarnaMobileSDK.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
77
101
|
/* End PBXFileReference section */
|
|
@@ -138,8 +162,12 @@
|
|
|
138
162
|
79BD25F92BC97A3000D2D92A /* KlarnaCheckoutViewManager.mm */,
|
|
139
163
|
B3E7B5881CC2AC0600A0062D /* KlarnaPaymentViewManager.h */,
|
|
140
164
|
B3E7B5891CC2AC0600A0062D /* KlarnaPaymentViewManager.mm */,
|
|
165
|
+
D18B14E1C87FBEC83B253DF6 /* KlarnaExpressCheckoutViewManager.h */,
|
|
166
|
+
BC11876CCED1F9FF63141F96 /* KlarnaExpressCheckoutViewManager.mm */,
|
|
141
167
|
42BC05FD2AC57D950044A9FE /* KlarnaStandaloneWebViewManager.h */,
|
|
142
168
|
42BC05FE2AC57E110044A9FE /* KlarnaStandaloneWebViewManager.mm */,
|
|
169
|
+
A1B2C3D42D8600010000001E /* KlarnaOSMViewManager.h */,
|
|
170
|
+
A1B2C3D42D8600010000001F /* KlarnaOSMViewManager.mm */,
|
|
143
171
|
79E2A0B02BFBA653002923A5 /* PrefixHeader.pch */,
|
|
144
172
|
);
|
|
145
173
|
path = Sources;
|
|
@@ -148,7 +176,10 @@
|
|
|
148
176
|
7917D753255C45FB00E16799 /* Tests */ = {
|
|
149
177
|
isa = PBXGroup;
|
|
150
178
|
children = (
|
|
179
|
+
A1B2C3D62D8700010000003B /* KlarnaOSMViewWrapperTests.m */,
|
|
180
|
+
A1B2C3D42602130000AABBCC /* KlarnaStandaloneWebViewWrapperTests.m */,
|
|
151
181
|
7917D754255C45FB00E16799 /* PaymentViewWrapperTests.m */,
|
|
182
|
+
F3A8B9C102AB3456000DECBA /* KlarnaExpressCheckoutViewWrapperTests.m */,
|
|
152
183
|
);
|
|
153
184
|
path = Tests;
|
|
154
185
|
sourceTree = "<group>";
|
|
@@ -173,8 +204,10 @@
|
|
|
173
204
|
isa = PBXGroup;
|
|
174
205
|
children = (
|
|
175
206
|
79BD25FF2BCD4F6C00D2D92A /* KlarnaCheckoutViewWrapper.mm */,
|
|
207
|
+
33C84BA7615CC01128CA31E5 /* KlarnaExpressCheckoutViewWrapper.mm */,
|
|
176
208
|
792F67BB2AB8AD7D00675E18 /* PaymentViewWrapper.mm */,
|
|
177
209
|
42BC06022AC586C50044A9FE /* KlarnaStandaloneWebViewWrapper.mm */,
|
|
210
|
+
A1B2C3D42D8600010000002B /* KlarnaOSMViewWrapper.mm */,
|
|
178
211
|
);
|
|
179
212
|
path = newarch;
|
|
180
213
|
sourceTree = "<group>";
|
|
@@ -183,8 +216,10 @@
|
|
|
183
216
|
isa = PBXGroup;
|
|
184
217
|
children = (
|
|
185
218
|
79BD25FB2BC97B0900D2D92A /* KlarnaCheckoutViewWrapper.mm */,
|
|
219
|
+
9E25B2ABA81ABBC6F987AF54 /* KlarnaExpressCheckoutViewWrapper.mm */,
|
|
186
220
|
792F67BE2AB8AD7D00675E18 /* PaymentViewWrapper.mm */,
|
|
187
221
|
42BC06042AC588180044A9FE /* KlarnaStandaloneWebViewWrapper.mm */,
|
|
222
|
+
A1B2C3D42D8600010000002C /* KlarnaOSMViewWrapper.mm */,
|
|
188
223
|
);
|
|
189
224
|
path = oldarch;
|
|
190
225
|
sourceTree = "<group>";
|
|
@@ -202,8 +237,11 @@
|
|
|
202
237
|
isa = PBXGroup;
|
|
203
238
|
children = (
|
|
204
239
|
796795862C1B39E700BAB0C1 /* KlarnaCheckoutViewWrapper.h */,
|
|
240
|
+
12F2DBCAAC01A760C139AA95 /* KlarnaExpressCheckoutViewWrapper.h */,
|
|
241
|
+
162FB3924FC0CAB605BB10A7 /* KlarnaExpressCheckoutButtonDelegateProxy.swift */,
|
|
205
242
|
796795872C1B39F100BAB0C1 /* KlarnaStandaloneWebViewWrapper.h */,
|
|
206
243
|
796795882C1B39FB00BAB0C1 /* PaymentViewWrapper.h */,
|
|
244
|
+
A1B2C3D42D8600010000002A /* KlarnaOSMViewWrapper.h */,
|
|
207
245
|
792F67BA2AB8AD7D00675E18 /* newarch */,
|
|
208
246
|
792F67BD2AB8AD7D00675E18 /* oldarch */,
|
|
209
247
|
);
|
|
@@ -340,12 +378,14 @@
|
|
|
340
378
|
"${PODS_ROOT}/Target Support Files/Pods-RNKlarnaMobileSDK-RNKlarnaMobileSDKTests/Pods-RNKlarnaMobileSDK-RNKlarnaMobileSDKTests-frameworks.sh",
|
|
341
379
|
"${PODS_XCFRAMEWORKS_BUILD_DIR}/KlarnaMobileSDK/basic/KlarnaCore.framework/KlarnaCore",
|
|
342
380
|
"${PODS_XCFRAMEWORKS_BUILD_DIR}/KlarnaMobileSDK/basic/KlarnaMobileSDK.framework/KlarnaMobileSDK",
|
|
381
|
+
"${PODS_XCFRAMEWORKS_BUILD_DIR}/KlarnaMobileSDK/basic/KlarnaPayments.framework/KlarnaPayments",
|
|
343
382
|
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes",
|
|
344
383
|
);
|
|
345
384
|
name = "[CP] Embed Pods Frameworks";
|
|
346
385
|
outputPaths = (
|
|
347
386
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/KlarnaCore.framework",
|
|
348
387
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/KlarnaMobileSDK.framework",
|
|
388
|
+
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/KlarnaPayments.framework",
|
|
349
389
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
|
|
350
390
|
);
|
|
351
391
|
runOnlyForDeploymentPostprocessing = 0;
|
|
@@ -400,16 +440,23 @@
|
|
|
400
440
|
isa = PBXSourcesBuildPhase;
|
|
401
441
|
buildActionMask = 2147483647;
|
|
402
442
|
files = (
|
|
443
|
+
5EF79F343E41AF25BCF0FB57 /* KlarnaExpressCheckoutViewManager.mm in Sources */,
|
|
444
|
+
9F9101C8D59ECF439818302A /* KlarnaExpressCheckoutButtonDelegateProxy.swift in Sources */,
|
|
445
|
+
0DB3516A77E13682BFCA4E64 /* KlarnaExpressCheckoutViewWrapper.mm in Sources */,
|
|
446
|
+
AB2E3AF1EF7D600B7C2BB129 /* KlarnaExpressCheckoutViewWrapper.mm in Sources */,
|
|
403
447
|
42BC06032AC586C50044A9FE /* KlarnaStandaloneWebViewWrapper.mm in Sources */,
|
|
448
|
+
42BC06052AC588180044A9FE /* KlarnaStandaloneWebViewWrapper.mm in Sources */,
|
|
404
449
|
79BD25FC2BC97B0900D2D92A /* KlarnaCheckoutViewWrapper.mm in Sources */,
|
|
405
450
|
79BD26002BCD4F6C00D2D92A /* KlarnaCheckoutViewWrapper.mm in Sources */,
|
|
406
451
|
79BD26042BCD572600D2D92A /* RNMobileSDKUtils.mm in Sources */,
|
|
407
452
|
B3E7B58A1CC2AC0600A0062D /* KlarnaPaymentViewManager.mm in Sources */,
|
|
408
453
|
792F67C02AB8AD7D00675E18 /* PaymentViewWrapper.mm in Sources */,
|
|
409
|
-
42BC06052AC588180044A9FE /* KlarnaStandaloneWebViewWrapper.mm in Sources */,
|
|
410
454
|
79BD25FA2BC97A3000D2D92A /* KlarnaCheckoutViewManager.mm in Sources */,
|
|
411
455
|
42BC05FF2AC57E110044A9FE /* KlarnaStandaloneWebViewManager.mm in Sources */,
|
|
412
456
|
792F67C12AB8AD7D00675E18 /* PaymentViewWrapper.mm in Sources */,
|
|
457
|
+
A1B2C3D42D8600010000001A /* KlarnaOSMViewManager.mm in Sources */,
|
|
458
|
+
A1B2C3D42D8600010000001B /* KlarnaOSMViewWrapper.mm in Sources */,
|
|
459
|
+
A1B2C3D42D8600010000001C /* KlarnaOSMViewWrapper.mm in Sources */,
|
|
413
460
|
);
|
|
414
461
|
runOnlyForDeploymentPostprocessing = 0;
|
|
415
462
|
};
|
|
@@ -417,7 +464,10 @@
|
|
|
417
464
|
isa = PBXSourcesBuildPhase;
|
|
418
465
|
buildActionMask = 2147483647;
|
|
419
466
|
files = (
|
|
467
|
+
A1B2C3D62D8700010000003A /* KlarnaOSMViewWrapperTests.m in Sources */,
|
|
468
|
+
A1B2C3D52602130000AABBCC /* KlarnaStandaloneWebViewWrapperTests.m in Sources */,
|
|
420
469
|
7917D755255C45FB00E16799 /* PaymentViewWrapperTests.m in Sources */,
|
|
470
|
+
F3A8B9C202AB3456000DECBA /* KlarnaExpressCheckoutViewWrapperTests.m in Sources */,
|
|
421
471
|
);
|
|
422
472
|
runOnlyForDeploymentPostprocessing = 0;
|
|
423
473
|
};
|
|
@@ -537,6 +587,7 @@
|
|
|
537
587
|
isa = XCBuildConfiguration;
|
|
538
588
|
baseConfigurationReference = B074D4744315BBCD94D119E9 /* Pods-RNKlarnaMobileSDK.debug.xcconfig */;
|
|
539
589
|
buildSettings = {
|
|
590
|
+
DEFINES_MODULE = YES;
|
|
540
591
|
HEADER_SEARCH_PATHS = (
|
|
541
592
|
"$(inherited)",
|
|
542
593
|
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
|
@@ -547,6 +598,7 @@
|
|
|
547
598
|
OTHER_LDFLAGS = "-ObjC";
|
|
548
599
|
PRODUCT_NAME = RNKlarnaMobileSDK;
|
|
549
600
|
SKIP_INSTALL = YES;
|
|
601
|
+
SWIFT_VERSION = 5.0;
|
|
550
602
|
};
|
|
551
603
|
name = Debug;
|
|
552
604
|
};
|
|
@@ -554,6 +606,7 @@
|
|
|
554
606
|
isa = XCBuildConfiguration;
|
|
555
607
|
baseConfigurationReference = 7A4208B9D3B0F45669A2E06F /* Pods-RNKlarnaMobileSDK.release.xcconfig */;
|
|
556
608
|
buildSettings = {
|
|
609
|
+
DEFINES_MODULE = YES;
|
|
557
610
|
HEADER_SEARCH_PATHS = (
|
|
558
611
|
"$(inherited)",
|
|
559
612
|
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
|
@@ -564,6 +617,7 @@
|
|
|
564
617
|
OTHER_LDFLAGS = "-ObjC";
|
|
565
618
|
PRODUCT_NAME = RNKlarnaMobileSDK;
|
|
566
619
|
SKIP_INSTALL = YES;
|
|
620
|
+
SWIFT_VERSION = 5.0;
|
|
567
621
|
};
|
|
568
622
|
name = Release;
|
|
569
623
|
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#import <React/RCTUIManager.h>
|
|
2
|
+
#import <React/RCTLog.h>
|
|
3
|
+
#import "KlarnaExpressCheckoutViewManager.h"
|
|
4
|
+
#import "view/KlarnaExpressCheckoutViewWrapper.h"
|
|
5
|
+
|
|
6
|
+
@implementation KlarnaExpressCheckoutViewManager
|
|
7
|
+
|
|
8
|
+
RCT_EXPORT_MODULE(RNKlarnaExpressCheckoutView)
|
|
9
|
+
|
|
10
|
+
#pragma mark - View Properties
|
|
11
|
+
|
|
12
|
+
RCT_EXPORT_VIEW_PROPERTY(sessionType, NSString)
|
|
13
|
+
RCT_EXPORT_VIEW_PROPERTY(clientId, NSString)
|
|
14
|
+
RCT_EXPORT_VIEW_PROPERTY(clientToken, NSString)
|
|
15
|
+
RCT_EXPORT_VIEW_PROPERTY(locale, NSString)
|
|
16
|
+
RCT_EXPORT_VIEW_PROPERTY(environment, NSString)
|
|
17
|
+
RCT_EXPORT_VIEW_PROPERTY(region, NSString)
|
|
18
|
+
RCT_EXPORT_VIEW_PROPERTY(returnUrl, NSString)
|
|
19
|
+
RCT_EXPORT_VIEW_PROPERTY(theme, NSString)
|
|
20
|
+
RCT_EXPORT_VIEW_PROPERTY(shape, NSString)
|
|
21
|
+
RCT_EXPORT_VIEW_PROPERTY(buttonStyle, NSString)
|
|
22
|
+
RCT_EXPORT_VIEW_PROPERTY(autoFinalize, BOOL)
|
|
23
|
+
RCT_EXPORT_VIEW_PROPERTY(collectShippingAddress, BOOL)
|
|
24
|
+
RCT_EXPORT_VIEW_PROPERTY(sessionData, NSString)
|
|
25
|
+
|
|
26
|
+
RCT_EXPORT_VIEW_PROPERTY(onAuthorized, RCTDirectEventBlock)
|
|
27
|
+
RCT_EXPORT_VIEW_PROPERTY(onError, RCTDirectEventBlock)
|
|
28
|
+
RCT_EXPORT_VIEW_PROPERTY(onResized, RCTDirectEventBlock)
|
|
29
|
+
|
|
30
|
+
#pragma mark - View Creation
|
|
31
|
+
|
|
32
|
+
- (UIView *)view
|
|
33
|
+
{
|
|
34
|
+
KlarnaExpressCheckoutViewWrapper* wrapper = [KlarnaExpressCheckoutViewWrapper new];
|
|
35
|
+
wrapper.uiManager = self.bridge.uiManager;
|
|
36
|
+
return wrapper;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@end
|