Skip to content

Commit 31ee36b

Browse files
committed
handle unknown checkout info errors
1 parent 09a306c commit 31ee36b

File tree

5 files changed

+40
-15
lines changed

5 files changed

+40
-15
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
# Changelog
22
All notable changes to this project will be documented in this file.
33

4+
## [0.14.16]
5+
6+
### Fixed
7+
- Properly handle unknown checkout info errors
8+
49
## [0.14.15]
510

611
### Fixed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ allprojects {
2323
}
2424

2525
project.ext {
26-
sdkVersion='0.14.15'
26+
sdkVersion='0.14.16'
2727
versionCode=1
2828

2929
compileSdkVersion=28

core/src/main/java/io/snabble/sdk/Checkout.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,12 @@ public void noAvailablePaymentMethod() {
248248
}
249249

250250
@Override
251-
public void error() {
251+
public void unknownError() {
252+
notifyStateChanged(State.CONNECTION_ERROR);
253+
}
254+
255+
@Override
256+
public void connectionError() {
252257
PaymentMethod fallback = getFallbackPaymentMethod();
253258
if(fallback != null) {
254259
paymentMethod = fallback;
@@ -448,7 +453,12 @@ public void noAvailablePaymentMethod() {
448453
}
449454

450455
@Override
451-
public void error() {
456+
public void unknownError() {
457+
458+
}
459+
460+
@Override
461+
public void connectionError() {
452462

453463
}
454464
});

core/src/main/java/io/snabble/sdk/CheckoutApi.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,8 @@ public interface CheckoutInfoResult {
159159
void noShop();
160160
void invalidProducts(List<Product> products);
161161
void noAvailablePaymentMethod();
162-
void error();
162+
void unknownError();
163+
void connectionError();
163164
}
164165

165166
public interface PaymentProcessResult {
@@ -214,7 +215,7 @@ public void createCheckoutInfo(final Shop shop,
214215
String checkoutUrl = project.getCheckoutUrl();
215216
if (checkoutUrl == null) {
216217
Logger.e("Could not checkout, no checkout url provided in metadata");
217-
checkoutInfoResult.error();
218+
checkoutInfoResult.connectionError();
218219
return;
219220
}
220221

@@ -257,19 +258,20 @@ public void success(SignedCheckoutInfo signedCheckoutInfo) {
257258
if (availablePaymentMethods != null && availablePaymentMethods.length > 0) {
258259
checkoutInfoResult.success(signedCheckoutInfo, price, availablePaymentMethods);
259260
} else {
260-
checkoutInfoResult.error();
261+
checkoutInfoResult.connectionError();
261262
}
262263
}
263264

264265
@Override
265266
public void failure(JsonObject obj) {
266267
try {
267-
switch (obj.get("error").getAsJsonObject().get("type").getAsString()) {
268+
JsonObject error = obj.get("error").getAsJsonObject();
269+
String type = error.get("type").getAsString();
270+
271+
switch (type) {
268272
case "invalid_cart_item":
269273
List<String> invalidSkus = new ArrayList<>();
270-
JsonArray arr = obj
271-
.get("error").getAsJsonObject()
272-
.get("details").getAsJsonArray();
274+
JsonArray arr = error.get("details").getAsJsonArray();
273275

274276
for (int i=0; i<arr.size(); i++) {
275277
String sku = arr.get(0).getAsJsonObject().get("sku").getAsString();
@@ -295,6 +297,9 @@ public void failure(JsonObject obj) {
295297
case "shop_not_found":
296298
checkoutInfoResult.noShop();
297299
break;
300+
default:
301+
checkoutInfoResult.unknownError();
302+
break;
298303
}
299304
} catch (Exception e) {
300305
error(e);
@@ -304,7 +309,7 @@ public void failure(JsonObject obj) {
304309
@Override
305310
public void error(Throwable t) {
306311
Logger.e("Error creating checkout info: " + t.getMessage());
307-
checkoutInfoResult.error();
312+
checkoutInfoResult.connectionError();
308313
}
309314
});
310315
}

core/src/main/java/io/snabble/sdk/ShoppingCartUpdater.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public void success(final CheckoutApi.SignedCheckoutInfo signedCheckoutInfo, int
4848
public void run() {
4949
// ignore when cart was modified mid request
5050
if (cart.getModCount() != modCount) {
51-
error();
51+
unknownError();
5252
return;
5353
}
5454

@@ -73,7 +73,7 @@ public void run() {
7373
// error out when items are missing
7474
if (requiredSkus.size() > 0) {
7575
Logger.e("Missing products in price update: " + requiredSkus.toString());
76-
error();
76+
unknownError();
7777
return;
7878
}
7979

@@ -96,7 +96,7 @@ public void run() {
9696
Logger.d("Successfully updated prices");
9797
} catch (Exception e) {
9898
Logger.e("Could not update price: %s", e.getMessage());
99-
error();
99+
unknownError();
100100
return;
101101
}
102102

@@ -122,7 +122,12 @@ public void noAvailablePaymentMethod() {
122122
}
123123

124124
@Override
125-
public void error() {
125+
public void unknownError() {
126+
cart.notifyPriceUpdate(cart);
127+
}
128+
129+
@Override
130+
public void connectionError() {
126131
cart.notifyPriceUpdate(cart);
127132
}
128133
});

0 commit comments

Comments
 (0)