@woocommerce/data
Version:
WooCommerce Admin data store and utilities
154 lines (153 loc) • 6.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getRecommendedPlugins = exports.getPaypalOnboardingStatus = exports.getJetpackConnectUrl = exports.getJetpackConnectionData = exports.isJetpackConnected = exports.getInstalledPlugins = exports.getActivePlugins = void 0;
/**
* External dependencies
*/
const data_controls_1 = require("@wordpress/data-controls");
const data_1 = require("@wordpress/data");
const url_1 = require("@wordpress/url");
/**
* Internal dependencies
*/
const constants_1 = require("../constants");
const options_1 = require("../options");
const constants_2 = require("./constants");
const actions_1 = require("./actions");
// Can be removed in WP 5.9, wp.data is supported in >5.7.
const resolveSelect = data_1.controls && data_1.controls.resolveSelect ? data_1.controls.resolveSelect : data_controls_1.select;
function* getActivePlugins() {
yield (0, actions_1.setIsRequesting)('getActivePlugins', true);
try {
const url = constants_1.WC_ADMIN_NAMESPACE + '/plugins/active';
const results = yield (0, data_controls_1.apiFetch)({
path: url,
method: 'GET',
});
yield (0, actions_1.updateActivePlugins)(results.plugins, true);
}
catch (error) {
yield (0, actions_1.setError)('getActivePlugins', error);
}
}
exports.getActivePlugins = getActivePlugins;
function* getInstalledPlugins() {
yield (0, actions_1.setIsRequesting)('getInstalledPlugins', true);
try {
const url = constants_1.WC_ADMIN_NAMESPACE + '/plugins/installed';
const results = yield (0, data_controls_1.apiFetch)({
path: url,
method: 'GET',
});
yield (0, actions_1.updateInstalledPlugins)(results.plugins, true);
}
catch (error) {
yield (0, actions_1.setError)('getInstalledPlugins', error);
}
}
exports.getInstalledPlugins = getInstalledPlugins;
function* isJetpackConnected() {
yield (0, actions_1.setIsRequesting)('isJetpackConnected', true);
try {
const url = constants_1.JETPACK_NAMESPACE + '/connection';
const results = yield (0, data_controls_1.apiFetch)({
path: url,
method: 'GET',
});
yield (0, actions_1.updateIsJetpackConnected)(results.isActive);
}
catch (error) {
yield (0, actions_1.setError)('isJetpackConnected', error);
}
yield (0, actions_1.setIsRequesting)('isJetpackConnected', false);
}
exports.isJetpackConnected = isJetpackConnected;
function* getJetpackConnectionData() {
yield (0, actions_1.setIsRequesting)('getJetpackConnectionData', true);
try {
const url = constants_1.JETPACK_NAMESPACE + '/connection/data';
const results = yield (0, data_controls_1.apiFetch)({
path: url,
method: 'GET',
});
yield (0, actions_1.updateJetpackConnectionData)(results);
}
catch (error) {
yield (0, actions_1.setError)('getJetpackConnectionData', error);
}
yield (0, actions_1.setIsRequesting)('getJetpackConnectionData', false);
}
exports.getJetpackConnectionData = getJetpackConnectionData;
function* getJetpackConnectUrl(query) {
yield (0, actions_1.setIsRequesting)('getJetpackConnectUrl', true);
try {
const url = (0, url_1.addQueryArgs)(constants_1.WC_ADMIN_NAMESPACE + '/plugins/connect-jetpack', query);
const results = yield (0, data_controls_1.apiFetch)({
path: url,
method: 'GET',
});
yield (0, actions_1.updateJetpackConnectUrl)(query.redirect_url, results.connectAction);
}
catch (error) {
yield (0, actions_1.setError)('getJetpackConnectUrl', error);
}
yield (0, actions_1.setIsRequesting)('getJetpackConnectUrl', false);
}
exports.getJetpackConnectUrl = getJetpackConnectUrl;
function* setOnboardingStatusWithOptions() {
const options = yield resolveSelect(options_1.OPTIONS_STORE_NAME, 'getOption', 'woocommerce-ppcp-settings');
const onboarded = options.merchant_email_production &&
options.merchant_id_production &&
options.client_id_production &&
options.client_secret_production;
yield (0, actions_1.setPaypalOnboardingStatus)({
production: {
state: onboarded ? 'onboarded' : 'unknown',
onboarded: onboarded ? true : false,
},
});
}
function* getPaypalOnboardingStatus() {
yield (0, actions_1.setIsRequesting)('getPaypalOnboardingStatus', true);
const errorData = yield resolveSelect(constants_2.STORE_NAME, 'getPluginsError', 'getPaypalOnboardingStatus');
if (errorData && errorData.data && errorData.data.status === 404) {
// The get-status request doesn't exist fall back to using options.
yield setOnboardingStatusWithOptions();
}
else {
try {
const url = constants_2.PAYPAL_NAMESPACE + '/onboarding/get-status';
const results = yield (0, data_controls_1.apiFetch)({
path: url,
method: 'GET',
});
yield (0, actions_1.setPaypalOnboardingStatus)(results);
}
catch (error) {
yield setOnboardingStatusWithOptions();
yield (0, actions_1.setError)('getPaypalOnboardingStatus', error);
}
}
yield (0, actions_1.setIsRequesting)('getPaypalOnboardingStatus', false);
}
exports.getPaypalOnboardingStatus = getPaypalOnboardingStatus;
const SUPPORTED_TYPES = ['payments'];
function* getRecommendedPlugins(type) {
if (!SUPPORTED_TYPES.includes(type)) {
return [];
}
yield (0, actions_1.setIsRequesting)('getRecommendedPlugins', true);
try {
const url = constants_1.WC_ADMIN_NAMESPACE + '/payment-gateway-suggestions';
const results = yield (0, data_controls_1.apiFetch)({
path: url,
method: 'GET',
});
yield (0, actions_1.setRecommendedPlugins)(type, results);
}
catch (error) {
yield (0, actions_1.setError)('getRecommendedPlugins', error);
}
yield (0, actions_1.setIsRequesting)('getRecommendedPlugins', false);
}
exports.getRecommendedPlugins = getRecommendedPlugins;