feat: implement multiple saved addresses with modal selector in checkout

- Add AddressController with full CRUD API for saved addresses
- Implement address management UI in My Account > Addresses
- Add modal-based address selector in checkout (Tokopedia-style)
- Hide checkout forms when saved address is selected
- Add search functionality in address modal
- Auto-select default addresses on page load
- Fix variable products to show 'Select Options' instead of 'Add to Cart'
- Add admin toggle for multiple addresses feature
- Clean up debug logs and fix TypeScript errors
This commit is contained in:
Dwindi Ramadhana
2025-12-26 01:16:11 +07:00
parent 9ac09582d2
commit 100f9cce55
27 changed files with 2492 additions and 205 deletions

View File

@@ -25,7 +25,6 @@ class CartController {
// Check if this is a cart endpoint
$request_uri = $_SERVER['REQUEST_URI'] ?? '';
if (strpos($request_uri, '/woonoow/v1/cart') !== false) {
error_log('WooNooW Cart: Bypassing authentication for cart endpoint');
return true; // Allow access
}
@@ -37,7 +36,6 @@ class CartController {
* Register REST API routes
*/
public static function register_routes() {
error_log('WooNooW CartController::register_routes() START');
$namespace = 'woonoow/v1';
// Get cart
@@ -46,7 +44,6 @@ class CartController {
'callback' => [__CLASS__, 'get_cart'],
'permission_callback' => '__return_true',
]);
error_log('WooNooW CartController: GET /cart registered: ' . ($result ? 'SUCCESS' : 'FAILED'));
// Add to cart
$result = register_rest_route($namespace, '/cart/add', [
@@ -73,7 +70,6 @@ class CartController {
],
],
]);
error_log('WooNooW CartController: POST /cart/add registered: ' . ($result ? 'SUCCESS' : 'FAILED'));
// Update cart item
register_rest_route($namespace, '/cart/update', [