Skip to content

Commit 8c9d8db

Browse files
fix: rollback issue
1 parent 6b030bd commit 8c9d8db

File tree

1 file changed

+28
-9
lines changed

1 file changed

+28
-9
lines changed

assets/src/dashboard/parts/connected/settings/OffloadMedia.js

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ const OffloadMedia = ({ settings, canSave, setSettings, setCanSave }) => {
8080
} = useDispatch( 'optimole' );
8181

8282
const [ modal, setModal ] = useState( null );
83+
const [ initialRadioValue, setInitialRadioValue ] = useState( null );
8384

8485
const isOffloadingInProgress = 'disabled' !== settings['offloading_status'];
8586
const isRollbackInProgress = 'disabled' !== settings['rollback_status'];
@@ -108,6 +109,7 @@ const OffloadMedia = ({ settings, canSave, setSettings, setCanSave }) => {
108109
const nextSettings = { ...settings };
109110
nextSettings['show_offload_finish_notice'] = '';
110111
nextSettings['offloading_status'] = 'enabled';
112+
nextSettings['offload_media'] = 'enabled';
111113
setSettings( nextSettings );
112114
saveSettings( nextSettings, false, true, () => {
113115
setErrorMedia( false );
@@ -131,6 +133,7 @@ const OffloadMedia = ({ settings, canSave, setSettings, setCanSave }) => {
131133
const nextSettings = { ...settings };
132134
nextSettings['show_offload_finish_notice'] = '';
133135
nextSettings['rollback_status'] = 'enabled';
136+
nextSettings['offload_media'] = 'disabled';
134137
saveSettings( nextSettings, false, true, () => {
135138
setErrorMedia( false );
136139
setProcessedImages( 0 );
@@ -161,25 +164,30 @@ const OffloadMedia = ({ settings, canSave, setSettings, setCanSave }) => {
161164
const radioBoxValue = 'enabled' === settings['offload_media'] ? 'offload' : 'rollback';
162165

163166
const updateRadioBoxValue = value => {
167+
setInitialRadioValue( radioBoxValue );
168+
164169
const offloadEnabled = 'offload' === value;
165170

166171
if ( offloadEnabled ) {
167-
setModal( show_exceed_plan_quota_notice ? MODAL_STATE_EXCEED_PLAN_QUOTA_NOTICE : MODAL_STATE_OFFLOAD );
172+
setModal({
173+
type: show_exceed_plan_quota_notice ? MODAL_STATE_EXCEED_PLAN_QUOTA_NOTICE : MODAL_STATE_OFFLOAD,
174+
optionValue: value
175+
});
168176

169177
return;
170178
}
171179

172-
setModal( MODAL_STATE_ROLLBACK );
180+
setModal({ type: MODAL_STATE_ROLLBACK, optionValue: value });
173181
};
174182

175-
const getModalProps = ( type ) => {
183+
const getModalProps = ({ type, optionValue }) => {
176184
const nextSettings = { ...settings };
177185

178186
const props = {
179187
[MODAL_STATE_OFFLOAD]: {
180188
icon: offload,
181189
onConfirm: () => {
182-
nextSettings['offload_media'] = 'enabled';
190+
nextSettings['offload_media'] = 'offload' === optionValue ? 'enabled' : 'disabled';
183191
setSettings( nextSettings );
184192
setCanSave( true );
185193

@@ -195,7 +203,7 @@ const OffloadMedia = ({ settings, canSave, setSettings, setCanSave }) => {
195203
[MODAL_STATE_ROLLBACK]: {
196204
icon: rollbackIcon,
197205
onConfirm: () => {
198-
nextSettings['offload_media'] = 'disabled';
206+
nextSettings['offload_media'] = 'offload' === optionValue ? 'enabled' : 'disabled';
199207
setSettings( nextSettings );
200208
setCanSave( true );
201209

@@ -216,7 +224,9 @@ const OffloadMedia = ({ settings, canSave, setSettings, setCanSave }) => {
216224
setModal( null );
217225
const options = settings;
218226
options.offloading_status = 'disabled';
227+
options.offload_media = 'offload' === initialRadioValue ? 'enabled' : 'disabled';
219228
saveSettings( options );
229+
setInitialRadioValue( null );
220230
},
221231
labels: {
222232
title: options_strings.offloading_stop_title,
@@ -231,7 +241,9 @@ const OffloadMedia = ({ settings, canSave, setSettings, setCanSave }) => {
231241
setModal( null );
232242
const options = settings;
233243
options.rollback_status = 'disabled';
244+
options.offload_media = 'offload' === initialRadioValue ? 'enabled' : 'disabled';
234245
saveSettings( options );
246+
setInitialRadioValue( null );
235247
},
236248
labels: {
237249
title: options_strings.rollback_stop_title,
@@ -243,6 +255,10 @@ const OffloadMedia = ({ settings, canSave, setSettings, setCanSave }) => {
243255
variant: 'warning',
244256
icon: warningAlt,
245257
onConfirm: () => {
258+
nextSettings['offload_media'] = 'offload' === optionValue ? 'enabled' : 'disabled';
259+
setSettings( nextSettings );
260+
setCanSave( true );
261+
246262
onOffloadMedia();
247263
setModal( null );
248264
},
@@ -274,23 +290,26 @@ const OffloadMedia = ({ settings, canSave, setSettings, setCanSave }) => {
274290

275291
const onCancelProgress = () => {
276292
if ( loadingSync ) {
277-
setModal( MODAL_STATE_STOP_OFFLOAD );
293+
setModal({ type: MODAL_STATE_STOP_OFFLOAD, optionValue: initialRadioValue });
278294
}
279295

280296
if ( loadingRollback ) {
281-
setModal( MODAL_STATE_STOP_ROLLBACK );
297+
setModal({ type: MODAL_STATE_STOP_ROLLBACK, optionValue: initialRadioValue });
282298
}
283299
};
284300

285301
const handleForceSync = ( e ) => {
286302
e.preventDefault();
287303

288304
if ( 'offload' === radioBoxValue ) {
289-
setModal( show_exceed_plan_quota_notice ? MODAL_STATE_EXCEED_PLAN_QUOTA_NOTICE : MODAL_STATE_OFFLOAD );
305+
setModal({
306+
type: show_exceed_plan_quota_notice ? MODAL_STATE_EXCEED_PLAN_QUOTA_NOTICE : MODAL_STATE_OFFLOAD,
307+
optionValue: radioBoxValue
308+
});
290309
}
291310

292311
if ( 'rollback' === radioBoxValue ) {
293-
setModal( MODAL_STATE_ROLLBACK );
312+
setModal({ type: MODAL_STATE_ROLLBACK, optionValue: radioBoxValue });
294313
}
295314
};
296315

0 commit comments

Comments
 (0)