Skip to content

Commit 5435f89

Browse files
authored
Report cart change events only on user interactions (#67)
Cart events should only be reported on actual user interactions and not on cart changes triggered by updates from background tasks or on SDK initialization.
1 parent 4060985 commit 5435f89

File tree

2 files changed

+37
-13
lines changed

2 files changed

+37
-13
lines changed

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

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,27 +50,52 @@ public class Events {
5050
this.shoppingCart = shoppingCart;
5151

5252
project.getShoppingCart().addListener(new ShoppingCart.SimpleShoppingCartListener() {
53+
5354
@Override
5455
public void onChanged(ShoppingCart cart) {
55-
if (cartId != null && !cart.getId().equals(cartId)) {
56-
PayloadSessionEnd payloadSessionEnd = new PayloadSessionEnd();
57-
payloadSessionEnd.session = cartId;
58-
post(payloadSessionEnd, false);
59-
cartId = cart.getId();
60-
hasSentSessionStart = false;
61-
return;
62-
}
56+
updateShop(Snabble.getInstance().getCheckedInShop());
6357

6458
if (shop != null) {
6559
if (!hasSentSessionStart) {
6660
PayloadSessionStart payloadSessionStart = new PayloadSessionStart();
6761
payloadSessionStart.session = cartId;
6862
post(payloadSessionStart, false);
6963
}
70-
7164
post(Events.this.project.getShoppingCart().toBackendCart(), true);
7265
}
7366
}
67+
68+
@Override
69+
public void onCleared(ShoppingCart cart) {
70+
final boolean isSameCartWithNewId = shoppingCart == cart && !cart.getId().equals(cartId);
71+
if (isSameCartWithNewId) {
72+
PayloadSessionEnd payloadSessionEnd = new PayloadSessionEnd();
73+
payloadSessionEnd.session = cartId;
74+
post(payloadSessionEnd, false);
75+
cartId = cart.getId();
76+
hasSentSessionStart = false;
77+
}
78+
}
79+
80+
@Override
81+
public void onProductsUpdated(ShoppingCart list) {
82+
// Override because it shouldn't trigger onChanged(Cart)
83+
}
84+
85+
@Override
86+
public void onPricesUpdated(ShoppingCart list) {
87+
// Override because it shouldn't trigger onChanged(Cart)
88+
}
89+
90+
@Override
91+
public void onTaxationChanged(ShoppingCart list, ShoppingCart.Taxation taxation) {
92+
// Override because it shouldn't trigger onChanged(Cart)
93+
}
94+
95+
@Override
96+
public void onCartDataChanged(ShoppingCart list) {
97+
// Override because it shouldn't trigger onChanged(Cart)
98+
}
7499
});
75100
}
76101

@@ -83,6 +108,7 @@ public void updateShop(Shop newShop) {
83108
shop = newShop;
84109
} else {
85110
shop = null;
111+
cartId = null;
86112
hasSentSessionStart = false;
87113
}
88114
}

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1560,10 +1560,8 @@ private void notifyItemRemoved(final ShoppingCart list, final Item item, final i
15601560
updateTimestamp();
15611561

15621562
Dispatch.mainThread(() -> {
1563-
if (list.data.items.contains(item)) {
1564-
for (ShoppingCartListener listener : listeners) {
1565-
listener.onItemRemoved(list, item, pos);
1566-
}
1563+
for (ShoppingCartListener listener : listeners) {
1564+
listener.onItemRemoved(list, item, pos);
15671565
}
15681566
});
15691567
}

0 commit comments

Comments
 (0)