@@ -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