From 5263a96a4c9d0ffbfe87b40525ef29bad3c013a0 Mon Sep 17 00:00:00 2001 From: Andrew Ozz Date: Mon, 1 Jun 2020 20:51:10 +0000 Subject: [PATCH] Plugins and Themes Auto-Updates: update the state of the auto-update link on the themes screen after successfully saving the setting. Props desrosj, pbiron, azaozz. Fixes #50291. git-svn-id: https://develop.svn.wordpress.org/trunk@47883 602fd350-edb4-49c9-b593-d223f7449a82 --- src/js/_enqueues/wp/theme.js | 20 +++++++++++++++++++- src/js/_enqueues/wp/updates.js | 2 ++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/js/_enqueues/wp/theme.js b/src/js/_enqueues/wp/theme.js index 7f7f0ce1fb..d5618c4028 100644 --- a/src/js/_enqueues/wp/theme.js +++ b/src/js/_enqueues/wp/theme.js @@ -666,7 +666,8 @@ themes.view.Details = wp.Backbone.View.extend({ 'click .delete-theme': 'deleteTheme', 'click .left': 'previousTheme', 'click .right': 'nextTheme', - 'click #update-theme': 'updateTheme' + 'click #update-theme': 'updateTheme', + 'click .toggle-auto-update': 'autoupdateState' }, // The HTML template for the theme overlay. @@ -787,6 +788,23 @@ themes.view.Details = wp.Backbone.View.extend({ this.trigger( 'theme:collapse' ); }, + // Set state of the auto-update settings link after it has been changed and saved. + autoupdateState: function() { + var callback, + _this = this; + + // Support concurrent clicks in different Theme Details overlays. + callback = function( event, data ) { + if ( _this.model.get( 'id' ) === data.asset ) { + _this.model.set( { autoupdate: 'enable' === data.state } ); + $( document ).off( 'wp-auto-update-setting-changed', callback ); + } + } + + // Triggered in updates.js + $( document ).on( 'wp-auto-update-setting-changed', callback ); + }, + updateTheme: function( event ) { var _this = this; event.preventDefault(); diff --git a/src/js/_enqueues/wp/updates.js b/src/js/_enqueues/wp/updates.js index 8b52bfcdd6..222809500a 100644 --- a/src/js/_enqueues/wp/updates.js +++ b/src/js/_enqueues/wp/updates.js @@ -2599,6 +2599,8 @@ $parent.find( '.auto-update-time' ).addClass( 'hidden' ); wp.a11y.speak( wp.updates.l10n.autoUpdatesDisabled, 'polite' ); } + + $document.trigger( 'wp-auto-update-setting-changed', { state: action, type: type, asset: asset } ); } ) .fail( function() { $parent.find( '.notice.error' ).removeClass( 'hidden' ).find( 'p' ).text( wp.updates.l10n.autoUpdatesError );