カートを更新した際に付与予定ポイントを更新するには、以下のカスタムイベントを設定することで、カートの変更を反映させることが可能です。
※高度な設定で、エラーが発生するとカートページが適切に動作しなくなる可能性がございます。もし実施される場合は、Javascriptに知見のある開発者に依頼されることをお勧めします。
【パターンA:カートのデータを取得済みの場合】
document.dispatchEvent(new CustomEvent("mrpoint:update-award-point", {
detail: {
cartItems: event?.cartData?.items
}
}));
【パターンB:カートのデータが存在しない場合】
document.dispatchEvent(new CustomEvent("mrpoint:update-award-point"));
※上記のどちらのパターンでも動作しますが、Bの場合カートデータを取得する処理が走るため、パフォーマンス的にはAをお勧めしています。
以下がDawn(ver13.0.0)の場合の追加例です。
対象ファイル:assets/cart.js
【パターンA】
class CartItems extends HTMLElement {
~~ 省略 ~~
connectedCallback() {
this.cartUpdateUnsubscriber = subscribe(PUB_SUB_EVENTS.cartUpdate, (event) => {
document.dispatchEvent(new CustomEvent("mrpoint:update-award-point", {
detail: {
cartItems: event?.cartData?.items
}
}));
if (event.source === 'cart-items') {
return;
}
this.onCartUpdate();
});
}
~~ 省略 ~~
}
【パターンB】
class CartItems extends HTMLElement {
~~ 省略 ~~
connectedCallback() {
this.cartUpdateUnsubscriber = subscribe(PUB_SUB_EVENTS.cartUpdate, (event) => {
document.dispatchEvent(new CustomEvent("mrpoint:update-award-point"));
if (event.source === 'cart-items') {
return;
}
this.onCartUpdate();
});
}
~~ 省略 ~~
}