Fix: Correct shipment resolving
This commit is contained in:
@@ -17,7 +17,7 @@ const POLL_TIMEOUT = 30000
|
||||
// poll /order-status until the webhook places it
|
||||
// { status:'failed'|'invalid'|'stale', message } -> show inline, re-enable
|
||||
export default class extends Controller {
|
||||
static targets = ['element', 'terms', 'error', 'submit', 'processing', 'processingText']
|
||||
static targets = ['element', 'terms', 'error', 'submit', 'processing', 'processingText', 'methods']
|
||||
|
||||
static values = {
|
||||
selectUrl: String,
|
||||
@@ -56,11 +56,26 @@ export default class extends Controller {
|
||||
}
|
||||
window.addEventListener('bbk-cart:updated', this.onSummaryUpdate)
|
||||
|
||||
// Fired by bbk-checkout-form after a shipping-option change —
|
||||
// getPaymentMethods() filters by fulfillment type, so the offered
|
||||
// methods (and which one, if any, is still validly selected) can
|
||||
// change without this controller's own element ever reconnecting.
|
||||
this.onPaymentMethodsChanged = (event) => {
|
||||
const html = event.detail?.html
|
||||
if (html == null || !this.hasMethodsTarget) return
|
||||
|
||||
this.methodsTarget.innerHTML = html
|
||||
|
||||
if (!this.selectedIsStripe()) this.unmountStripe()
|
||||
}
|
||||
window.addEventListener('bbk-checkout:payment-methods-changed', this.onPaymentMethodsChanged)
|
||||
|
||||
if (this.selectedIsStripe()) this.mountStripe()
|
||||
}
|
||||
|
||||
disconnect() {
|
||||
window.removeEventListener('bbk-cart:updated', this.onSummaryUpdate)
|
||||
window.removeEventListener('bbk-checkout:payment-methods-changed', this.onPaymentMethodsChanged)
|
||||
this.unmountStripe()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user