Update reset to default functionality
This commit is contained in:
parent
46cba23313
commit
66073a6b8f
|
@ -9,42 +9,42 @@ import { apiFetch } from '@wordpress/data-controls';
|
||||||
import TYPES from './action-types';
|
import TYPES from './action-types';
|
||||||
import { EXPERIMENT_NAME_PREFIX, TRANSIENT_NAME_PREFIX } from './constants';
|
import { EXPERIMENT_NAME_PREFIX, TRANSIENT_NAME_PREFIX } from './constants';
|
||||||
|
|
||||||
function toggleFrontendExperiment( experimentName, newVariation ) {
|
function toggleFrontendExperiment(experimentName, newVariation) {
|
||||||
const storageItem = JSON.parse(
|
const storageItem = JSON.parse(
|
||||||
window.localStorage.getItem( EXPERIMENT_NAME_PREFIX + experimentName )
|
window.localStorage.getItem(EXPERIMENT_NAME_PREFIX + experimentName)
|
||||||
);
|
);
|
||||||
|
|
||||||
storageItem.variationName = newVariation;
|
storageItem.variationName = newVariation;
|
||||||
|
|
||||||
window.localStorage.setItem(
|
window.localStorage.setItem(
|
||||||
EXPERIMENT_NAME_PREFIX + experimentName,
|
EXPERIMENT_NAME_PREFIX + experimentName,
|
||||||
JSON.stringify( storageItem )
|
JSON.stringify(storageItem)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function* toggleBackendExperiment( experimentName, newVariation ) {
|
function* toggleBackendExperiment(experimentName, newVariation) {
|
||||||
try {
|
try {
|
||||||
const payload = {};
|
const payload = {};
|
||||||
payload[ TRANSIENT_NAME_PREFIX + experimentName ] = newVariation;
|
payload[TRANSIENT_NAME_PREFIX + experimentName] = newVariation;
|
||||||
yield apiFetch( {
|
yield apiFetch({
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
path: '/wc-admin/options',
|
path: '/wc-admin/options',
|
||||||
headers: { 'content-type': 'application/json' },
|
headers: { 'content-type': 'application/json' },
|
||||||
body: JSON.stringify( payload ),
|
body: JSON.stringify(payload),
|
||||||
} );
|
});
|
||||||
} catch ( error ) {
|
} catch (error) {
|
||||||
throw new Error();
|
throw new Error();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function* toggleExperiment( experimentName, currentVariation, source ) {
|
export function* toggleExperiment(experimentName, currentVariation, source) {
|
||||||
const newVariation =
|
const newVariation =
|
||||||
currentVariation === 'control' ? 'treatment' : 'control';
|
currentVariation === 'control' ? 'treatment' : 'control';
|
||||||
|
|
||||||
if ( source === 'frontend' ) {
|
if (source === 'frontend') {
|
||||||
toggleFrontendExperiment( experimentName, newVariation );
|
toggleFrontendExperiment(experimentName, newVariation);
|
||||||
} else {
|
} else {
|
||||||
yield toggleBackendExperiment( experimentName, newVariation );
|
yield toggleBackendExperiment(experimentName, newVariation);
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -55,7 +55,7 @@ export function* toggleExperiment( experimentName, currentVariation, source ) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function setExperiments( experiments ) {
|
export function setExperiments(experiments) {
|
||||||
return {
|
return {
|
||||||
type: TYPES.SET_EXPERIMENTS,
|
type: TYPES.SET_EXPERIMENTS,
|
||||||
experiments,
|
experiments,
|
||||||
|
|
|
@ -2,12 +2,13 @@
|
||||||
* External dependencies
|
* External dependencies
|
||||||
*/
|
*/
|
||||||
import { apiFetch } from '@wordpress/data-controls';
|
import { apiFetch } from '@wordpress/data-controls';
|
||||||
|
import { controls } from '@wordpress/data';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Internal dependencies
|
* Internal dependencies
|
||||||
*/
|
*/
|
||||||
import TYPES from './action-types';
|
import TYPES from './action-types';
|
||||||
import { API_NAMESPACE } from './constants';
|
import { API_NAMESPACE, STORE_KEY } from './constants';
|
||||||
|
|
||||||
export function* resetModifiedFeatures() {
|
export function* resetModifiedFeatures() {
|
||||||
try {
|
try {
|
||||||
|
@ -30,7 +31,12 @@ export function* toggleFeature(featureName) {
|
||||||
path: API_NAMESPACE + '/features/' + featureName + '/toggle',
|
path: API_NAMESPACE + '/features/' + featureName + '/toggle',
|
||||||
headers: { 'content-type': 'application/json' },
|
headers: { 'content-type': 'application/json' },
|
||||||
});
|
});
|
||||||
return yield setFeatures(response);
|
yield setFeatures(response);
|
||||||
|
yield controls.dispatch(
|
||||||
|
STORE_KEY,
|
||||||
|
'invalidateResolutionForStoreSelector',
|
||||||
|
'getModifiedFeatures'
|
||||||
|
);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
throw new Error();
|
throw new Error();
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,10 +12,14 @@ import { API_NAMESPACE, OPTION_NAME_PREFIX } from './constants';
|
||||||
export function* getModifiedFeatures() {
|
export function* getModifiedFeatures() {
|
||||||
try {
|
try {
|
||||||
const response = yield apiFetch({
|
const response = yield apiFetch({
|
||||||
path: `${API_NAMESPACE}/options?search=` + OPTION_NAME_PREFIX,
|
path: `wc-admin/options?options=` + OPTION_NAME_PREFIX,
|
||||||
});
|
});
|
||||||
|
|
||||||
yield setModifiedFeatures(Object.keys(response));
|
yield setModifiedFeatures(
|
||||||
|
response && response[OPTION_NAME_PREFIX]
|
||||||
|
? Object.keys(response[OPTION_NAME_PREFIX])
|
||||||
|
: []
|
||||||
|
);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
throw new Error();
|
throw new Error();
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,13 +23,17 @@ function Features() {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div id="wc-admin-test-helper-features">
|
<div id="wc-admin-test-helper-features">
|
||||||
<h2>Features</h2>
|
<h2>
|
||||||
|
Features
|
||||||
<Button
|
<Button
|
||||||
disabled={modifiedFeatures.length === 0}
|
disabled={modifiedFeatures.length === 0}
|
||||||
onClick={() => resetModifiedFeatures()}
|
onClick={() => resetModifiedFeatures()}
|
||||||
|
isSecondary
|
||||||
|
style={{ marginLeft: '24px' }}
|
||||||
>
|
>
|
||||||
Reset to defaults
|
Reset to defaults
|
||||||
</Button>
|
</Button>
|
||||||
|
</h2>
|
||||||
<table className="features wp-list-table striped table-view-list widefat">
|
<table className="features wp-list-table striped table-view-list widefat">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
|
Loading…
Reference in New Issue