From 4dd12ed7feb51dd54353c5b012fdb53240090b1c Mon Sep 17 00:00:00 2001
From: Paul Biron <paul@sparrowhawkcomputing.com>
Date: Thu, 27 Feb 2020 18:07:08 -0700
Subject: [PATCH] no message

---
 src/js/_enqueues/admin/privacy-tools.js | 21 +++++++++++++++++----
 src/wp-admin/css/forms.css              |  4 ++++
 2 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/src/js/_enqueues/admin/privacy-tools.js b/src/js/_enqueues/admin/privacy-tools.js
index 5d5a2067a4..507e8e4ef8 100644
--- a/src/js/_enqueues/admin/privacy-tools.js
+++ b/src/js/_enqueues/admin/privacy-tools.js
@@ -60,6 +60,7 @@ jQuery( document ).ready( function( $ ) {
 			$action        = $this.parents( '.export-personal-data' ),
 			$requestRow    = $this.parents( 'tr' ),
 			$progress      = $requestRow.find( '.export-progress' ),
+			$rowActions    = $this.parents( '.row-actions' ),
 			requestID      = $action.data( 'request-id' ),
 			nonce          = $action.data( 'nonce' ),
 			exportersCount = $action.data( 'exporters-count' ),
@@ -68,6 +69,8 @@ jQuery( document ).ready( function( $ ) {
 		event.preventDefault();
 		event.stopPropagation();
 
+		$rowActions.addClass( 'processing' );
+
 		$action.blur();
 		clearResultsAfterRow( $requestRow );
 		setExportProgress( 0 );
@@ -78,13 +81,14 @@ jQuery( document ).ready( function( $ ) {
 			setActionState( $action, 'export-personal-data-success' );
 
 			appendResultsAfterRow( $requestRow, 'notice-success', summaryMessage, [] );
-			$this.hide();
 
 			if ( 'undefined' !== typeof zipUrl ) {
 				window.location = zipUrl;
 			} else if ( ! sendAsEmail ) {
 				onExportFailure( strings.noExportFile );
 			}
+
+			setTimeout( function(){ $rowActions.removeClass( 'processing' ); }, 500 );
 		}
 
 		function onExportFailure( errorMessage ) {
@@ -92,6 +96,8 @@ jQuery( document ).ready( function( $ ) {
 			if ( errorMessage ) {
 				appendResultsAfterRow( $requestRow, 'notice-error', strings.exportError, [ errorMessage ] );
 			}
+
+			setTimeout( function(){ $rowActions.removeClass( 'processing' ); }, 500 );
 		}
 
 		function setExportProgress( exporterIndex ) {
@@ -127,8 +133,8 @@ jQuery( document ).ready( function( $ ) {
 				if ( ! responseData.done ) {
 					setTimeout( doNextExport( exporterIndex, pageIndex + 1 ) );
 				} else {
+					setExportProgress( exporterIndex );
 					if ( exporterIndex < exportersCount ) {
-						setExportProgress( exporterIndex );
 						setTimeout( doNextExport( exporterIndex + 1, 1 ) );
 					} else {
 						onExportDoneSuccess( responseData.url );
@@ -151,6 +157,7 @@ jQuery( document ).ready( function( $ ) {
 			$action       = $this.parents( '.remove-personal-data' ),
 			$requestRow   = $this.parents( 'tr' ),
 			$progress     = $requestRow.find( '.erasure-progress' ),
+			$rowActions    = $this.parents( '.row-actions' ),
 			requestID     = $action.data( 'request-id' ),
 			nonce         = $action.data( 'nonce' ),
 			erasersCount  = $action.data( 'erasers-count' ),
@@ -158,8 +165,11 @@ jQuery( document ).ready( function( $ ) {
 			hasRetained   = false,
 			messages      = [];
 
+		event.preventDefault();
 		event.stopPropagation();
 
+		$rowActions.addClass( 'processing' );
+
 		$action.blur();
 		clearResultsAfterRow( $requestRow );
 		setErasureProgress( 0 );
@@ -186,12 +196,15 @@ jQuery( document ).ready( function( $ ) {
 				}
 			}
 			appendResultsAfterRow( $requestRow, classes, summaryMessage, messages );
-			$this.hide();
+
+			setTimeout( function(){ $rowActions.removeClass( 'processing' ); }, 500 );
 		}
 
 		function onErasureFailure() {
 			setActionState( $action, 'remove-personal-data-failed' );
 			appendResultsAfterRow( $requestRow, 'notice-error', strings.removalError, [] );
+
+			setTimeout( function(){ $rowActions.removeClass( 'processing' ); }, 500 );
 		}
 
 		function setErasureProgress( eraserIndex ) {
@@ -230,8 +243,8 @@ jQuery( document ).ready( function( $ ) {
 				if ( ! responseData.done ) {
 					setTimeout( doNextErasure( eraserIndex, pageIndex + 1 ) );
 				} else {
+					setErasureProgress( eraserIndex );
 					if ( eraserIndex < erasersCount ) {
-						setErasureProgress( eraserIndex );
 						setTimeout( doNextErasure( eraserIndex + 1, 1 ) );
 					} else {
 						onErasureDoneSuccess();
diff --git a/src/wp-admin/css/forms.css b/src/wp-admin/css/forms.css
index 86c576686c..c8de29148b 100644
--- a/src/wp-admin/css/forms.css
+++ b/src/wp-admin/css/forms.css
@@ -1206,6 +1206,10 @@ table.form-table td .updated p {
 	color: #72777c;
 }
 
+.privacy_requests .row-actions.processing {
+	position: static;
+}
+
 .privacy_requests tbody .has-request-results th {
 	box-shadow: none;
 }
-- 
2.19.0.windows.1

