UNPKG

@woocommerce/data

Version:
102 lines (101 loc) 3.11 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createProductFromTemplate = exports.updateProductStock = exports.setError = exports.setItemsTotalCount = exports.setItems = exports.setItem = void 0; /** * External dependencies */ const data_controls_1 = require("@wordpress/data-controls"); const url_1 = require("@wordpress/url"); /** * Internal dependencies */ const action_types_1 = __importDefault(require("./action-types")); const constants_1 = require("../constants"); function setItem(itemType, id, item) { return { type: action_types_1.default.SET_ITEM, id, item, itemType, }; } exports.setItem = setItem; function setItems(itemType, query, items, totalCount) { return { type: action_types_1.default.SET_ITEMS, items, itemType, query, totalCount, }; } exports.setItems = setItems; function setItemsTotalCount(itemType, query, totalCount) { return { type: action_types_1.default.SET_ITEMS_TOTAL_COUNT, itemType, query, totalCount, }; } exports.setItemsTotalCount = setItemsTotalCount; function setError(itemType, query, error) { return { type: action_types_1.default.SET_ERROR, itemType, query, error, }; } exports.setError = setError; function* updateProductStock(product, quantity) { const updatedProduct = { ...product, stock_quantity: quantity }; const { id, parent_id: parentId, type } = updatedProduct; // Optimistically update product stock. yield setItem('products', id, updatedProduct); let url = constants_1.NAMESPACE; switch (type) { case 'variation': url += `/products/${parentId}/variations/${id}`; break; case 'variable': case 'simple': default: url += `/products/${id}`; } try { yield (0, data_controls_1.apiFetch)({ path: url, method: 'PUT', data: updatedProduct, }); return true; } catch (error) { // Update failed, return product back to original state. yield setItem('products', id, product); yield setError('products', { id }, error); return false; } } exports.updateProductStock = updateProductStock; function* createProductFromTemplate(itemFields, query) { try { const url = (0, url_1.addQueryArgs)(`${constants_1.WC_ADMIN_NAMESPACE}/onboarding/tasks/create_product_from_template`, query || {}); const newItem = yield (0, data_controls_1.apiFetch)({ path: url, method: 'POST', data: itemFields, }); yield setItem('products', newItem.id, newItem); return newItem; } catch (error) { yield setError('createProductFromTemplate', query, error); throw error; } } exports.createProductFromTemplate = createProductFromTemplate;