From b0194e10a87e16797a568d8a30d53ebecd27d8a4 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sat, 18 Oct 2025 15:04:51 +0000
Subject: [PATCH] =DataStore.js and UploaderManager.js overhaul
---
assets/js/dash/SquareCheckout.js | 61 ++++++++----------------------
1 files changed, 17 insertions(+), 44 deletions(-)
diff --git a/assets/js/dash/SquareCheckout.js b/assets/js/dash/SquareCheckout.js
index d7adab8..3fc9a3c 100644
--- a/assets/js/dash/SquareCheckout.js
+++ b/assets/js/dash/SquareCheckout.js
@@ -15,7 +15,6 @@
}, config);
-
this.stepMultiplier = 1;
this.cache = new window.jvbCache('cart', {TTL: 8.64e+7});
@@ -36,6 +35,13 @@
this.initElements();
this.bindEvents();
+
+ this.popup = new window.jvbPopup({
+ popup: this.checkout,
+ toggle: this.toggle,
+ name: 'Cart',
+ onOpen: this.maybeAddEmptyState.bind(this),
+ });
this.init();
this.toggle.hidden = false;
@@ -49,11 +55,7 @@
}
}
handleClick(e) {
- if (window.targetCheck(e, '.toggle-cart')) {
- let toggle = window.targetCheck(e, '.toggle-cart');
- console.log('Toggle found. Toggling cart');
- this.toggleCart();
- } else if (window.targetCheck(e, 'button') && window.targetCheck(e, 'div.quantity')) {
+ if (window.targetCheck(e, 'button') && window.targetCheck(e, 'div.quantity')) {
let quantity = window.targetCheck(e, 'div.quantity');
this.handleNumberClick(e, quantity);
}else if (window.targetCheck(e, '[data-add-to-cart]')) {
@@ -64,10 +66,6 @@
this.handleRemoveFromCart(remove);
} else if (window.targetCheck(e, '[data-clear-cart]')) {
this.clearCart();
- } else if (this.checkout.classList.contains('expanded') &&
- !this.checkout.contains(e.target) &&
- e.target !== this.toggle) {
- this.closeCart();
}
}
@@ -150,22 +148,6 @@
}
}
- toggleCart() {
- if (!this.checkout.classList.contains('expanded')) {
- this.openCart();
- } else {
- this.closeCart();
- }
- }
- openCart(message = 'Opened Cart') {
- this.checkout.classList.add('expanded');
- this.toggle.title = 'Hide cart';
- this.toggle.ariaExpanded = true;
- this.toggle.querySelector('span').textContent = 'Close Cart';
- this.a11y.announce(message);
- this.maybeAddEmptyState();
- document.addEventListener('keydown', this.keyHandler);
- }
maybeAddEmptyState() {
let empty = this.itemsList.querySelector('.empty');
if(empty) {
@@ -187,18 +169,8 @@
this.checkoutPanel.title = 'Checkout';
}
}
- closeCart(message = 'Closed Cart') {
- this.checkout.classList.remove('expanded');
- this.toggle.title = 'Show Cart';
- this.toggle.ariaExpanded = false;
-
- this.toggle.querySelector('span').textContent = '';
- this.a11y.announce(message);
- document.removeEventListener('keydown', this.keyHandler);
- }
handleEscape(e) {
if (e.key === 'Escape') {
- this.closeCart('Closed Cart with escape key');
this.stepMultiplier = 1;
} else if (e.ctrlKey && e.shiftKey) {
this.stepMultiplier = Math.max(parseInt(this.stepMultiplier) * 100, 1000);
@@ -507,29 +479,30 @@
if (squareConfig.isOpen !== '1') {
return;
}
- const response = await fetch(this.config.api_url + 'checkout', {
+
+ // Square Web Payments SDK handles EVERYTHING
+ // We just need to track the order for status updates
+ const response = await fetch(this.config.api_url + 'save-order', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-WP-Nonce': this.config.nonce
},
body: JSON.stringify({
- source_id: token,
- amount: orderData.total,
- items: orderData.items,
+ order_id: token.orderId, // From Square SDK response
+ payment_id: token.paymentId, // From Square SDK response
customer: orderData.customer,
- note: orderData.note,
- currency: this.config.currency,
+ items: orderData.items,
action: 'jvb_integration_action',
service: 'square',
- integration_action: 'process_order'
+ integration_action: 'save_order'
})
});
const result = await response.json();
if (!response.ok) {
- throw new Error(result.message || 'Payment failed');
+ throw new Error(result.message || 'Failed to save order');
}
return result;
--
Gitblit v1.10.0