From 6f920cd6a4c0460d8870c1431213258040b6ed17 Mon Sep 17 00:00:00 2001
From: Paul Biron <paul@sparrowhawkcomputing.com>
Date: Mon, 1 Jun 2020 12:09:10 -0600
Subject: [PATCH] same as 50291.diff, but uses a yoda condition in the
 `wp-auto-update-setting-changed` callback

---
 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 );
-- 
2.26.2.windows.1

