From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <c.heiss@proxmox.com>
Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by lists.proxmox.com (Postfix) with ESMTPS id E99B7955EE
 for <pve-devel@lists.proxmox.com>; Wed, 18 Jan 2023 14:02:13 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
 by firstgate.proxmox.com (Proxmox) with ESMTP id CAA0F20183
 for <pve-devel@lists.proxmox.com>; Wed, 18 Jan 2023 14:01:43 +0100 (CET)
Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com
 [94.136.29.106])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by firstgate.proxmox.com (Proxmox) with ESMTPS
 for <pve-devel@lists.proxmox.com>; Wed, 18 Jan 2023 14:01:43 +0100 (CET)
Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1])
 by proxmox-new.maurer-it.com (Proxmox) with ESMTP id E636D450E7
 for <pve-devel@lists.proxmox.com>; Wed, 18 Jan 2023 14:01:42 +0100 (CET)
From: Christoph Heiss <c.heiss@proxmox.com>
To: pve-devel@lists.proxmox.com
Date: Wed, 18 Jan 2023 14:01:35 +0100
Message-Id: <20230118130135.631553-1-c.heiss@proxmox.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-SPAM-LEVEL: Spam detection results:  0
 AWL 0.011 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment
 SPF_HELO_NONE           0.001 SPF: HELO does not publish an SPF Record
 SPF_PASS               -0.001 SPF: sender matches SPF record
Subject: [pve-devel] [PATCH manager] ui: storage backup view: Update remove
 button on protection change
X-BeenThere: pve-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/>
List-Post: <mailto:pve-devel@lists.proxmox.com>
List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe>
X-List-Received-Date: Wed, 18 Jan 2023 13:02:14 -0000

Currently this works in the backup view for containers/VMs, but not in
the storage backup view. Implement that for the latter part too.

Uses the callback functionality of the load() method of the store to
properly update the UI as soon as loading is finished.
While at it, clean up the same thing in grid/BackupView.js to remove the
current hack.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
---
 FWIW, using me.store.load({..}) directly in grid/BackupView.js works
 perfectly fine too (as I would expect). But I reused reload() for now,
 to keep consistency with the rest of the file. Thus the added `args`.

 www/manager6/grid/BackupView.js    | 16 +++++++---------
 www/manager6/storage/BackupView.js |  6 +++++-
 2 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/www/manager6/grid/BackupView.js b/www/manager6/grid/BackupView.js
index 7f7e1b62..dda8a363 100644
--- a/www/manager6/grid/BackupView.js
+++ b/www/manager6/grid/BackupView.js
@@ -79,9 +79,9 @@ Ext.define('PVE.grid.BackupView', {
 	    ]);
 	};

-	var reload = Ext.Function.createBuffered(function() {
+	var reload = Ext.Function.createBuffered(function(args) {
 	    if (me.store) {
-		me.store.load();
+		me.store.load(args);
 	    }
 	}, 100);

@@ -300,20 +300,18 @@ Ext.define('PVE.grid.BackupView', {
 			handler: function(button, event, record) {
 			    let volid = record.data.volid, storage = storagesel.getValue();
 			    let url = `/api2/extjs/nodes/${nodename}/storage/${storage}/content/${volid}`;
-			    let newProtection = record.data.protected ? 0 : 1;
 			    Proxmox.Utils.API2Request({
 				url: url,
 				method: 'PUT',
 				waitMsgTarget: me,
 				params: {
-				    'protected': newProtection,
+				    'protected': record.data.protected ? 0 : 1,
 				},
 				failure: (response) => Ext.Msg.alert('Error', response.htmlStatus),
-				success: (response) => {
-				    reload();
-				    // propagate to remove button, fake for event as reload is to slow
-				    record.data.protected = newProtection; // TODO: check if writing is OK!
-				    sm.fireEvent('selectionchange', sm, [record]);
+				success: () => {
+				    reload({
+					callback: () => sm.fireEvent('selectionchange', sm, [record]),
+				    });
 				},
 			    });
 			},
diff --git a/www/manager6/storage/BackupView.js b/www/manager6/storage/BackupView.js
index b8dc8f11..fbdf573d 100644
--- a/www/manager6/storage/BackupView.js
+++ b/www/manager6/storage/BackupView.js
@@ -183,7 +183,11 @@ Ext.define('PVE.storage.BackupView', {
 			waitMsgTarget: me,
 			params: { 'protected': record.data.protected ? 0 : 1 },
 			failure: response => Ext.Msg.alert('Error', response.htmlStatus),
-			success: () => me.store.load(),
+			success: () => {
+			    me.store.load({
+				callback: () => sm.fireEvent('selectionchange', sm, [record]),
+			    });
+			},
 		    });
 		},
 	    },
--
2.34.1