[hub][publish] in_progress/empty state
diff --git a/erpnext/hub_node/__init__.py b/erpnext/hub_node/__init__.py
index f913239..7d846d1 100644
--- a/erpnext/hub_node/__init__.py
+++ b/erpnext/hub_node/__init__.py
@@ -55,13 +55,15 @@
 
 @frappe.whitelist()
 def publish_selected_items(items_to_publish):
-	# for item_code in json.loads(items_to_publish):
-	# 	frappe.db.set_value('Item', item_code, 'publish_in_hub', 1)
+	for item_code in json.loads(items_to_publish):
+		frappe.db.set_value('Item', item_code, 'publish_in_hub', 1)
 
-	time.sleep(3)
+	# frappe.db.set_value("Hub Settings", "Hub Settings", "sync_in_progress", 1)
+	# time.sleep(10)
+	# frappe.db.set_value("Hub Settings", "Hub Settings", "sync_in_progress", 0)
 
-	# hub_settings = frappe.get_doc('Hub Settings')
-	# hub_settings.sync()
+	hub_settings = frappe.get_doc('Hub Settings')
+	hub_settings.sync()
 
 	return
 
diff --git a/erpnext/hub_node/doctype/hub_settings/hub_settings.py b/erpnext/hub_node/doctype/hub_settings/hub_settings.py
index 551423c..52fdb8c 100644
--- a/erpnext/hub_node/doctype/hub_settings/hub_settings.py
+++ b/erpnext/hub_node/doctype/hub_settings/hub_settings.py
@@ -46,10 +46,12 @@
 		doc = frappe.get_doc({
 			'doctype': 'Data Migration Run',
 			'data_migration_plan': 'Hub Sync',
-			'data_migration_connector': 'Hub Connector'
+			'data_migration_connector': 'Hub Connector',
 		}).insert()
 
+		self.sync_in_progress = 1
 		doc.run()
+		self.sync_in_progress = 0
 
 	def pre_reg(self):
 		site_name = frappe.local.site + ':' + str(frappe.conf.webserver_port)
@@ -86,9 +88,9 @@
 		post_url = hub_url + '/api/method/hub.hub.api.register'
 
 		response = requests.post(post_url, data=data, headers = {'accept': 'application/json'})
-		
+
 		response.raise_for_status()
-		
+
 		if response.ok:
 			message = response.json().get('message')
 		else:
diff --git a/erpnext/public/js/hub/hub_listing.js b/erpnext/public/js/hub/hub_listing.js
index 7a71c11..bde1e8f 100644
--- a/erpnext/public/js/hub/hub_listing.js
+++ b/erpnext/public/js/hub/hub_listing.js
@@ -670,9 +670,9 @@
 
 	setup_events() {
 		this.$wrapper.find('.publish-items').on('click', () => {
+			this.load_publishing_state();
 			this.publish_selected_items()
 				.then(r => {
-					this.load_publishing_state();
 					frappe.msgprint('check');
 				});
 		});
@@ -716,12 +716,6 @@
 			const more_than_one = total_items > 1;
 			this.$wrapper.find('.publish-items')
 				.html(__('Publish ' + total_items + ' item' + (more_than_one ? 's' : '')));
-
-			// if($target.hasClass('active')) {
-			// 	$target.addClass('active');
-			// } else {
-			// 	$target.removeClass('active');
-			// }
 		});
 
 		this.$wrapper.append(items_container);
@@ -737,9 +731,9 @@
 	}
 
 	load_publishing_state() {
-		this.$wrapper.html(`<div>
-			<b>Publishing</b>
-		</div>`);
+		this.$wrapper.html(get_empty_state(
+			'Publishing items ... You will be notified once published.'
+		));
 	}
 
 	publish_selected_items() {
@@ -757,6 +751,12 @@
 	}
 }
 
+function get_empty_state(message) {
+	return `<div class="empty-state flex">
+		<p class="text-muted">${message}</p>
+	</div>`
+}
+
 function get_item_card_container_html(items, title='') {
 	const items_html = (items || []).map(item => get_item_card_html(item)).join('');
 
diff --git a/erpnext/public/less/hub.less b/erpnext/public/less/hub.less
index 8c7392a..bd503fe 100644
--- a/erpnext/public/less/hub.less
+++ b/erpnext/public/less/hub.less
@@ -156,6 +156,11 @@
 		padding: 15px 25px;
 	}
 
+	.empty-state {
+		justify-content: center;
+		padding-top: 159px;
+	}
+
 	.form-container {
 		.frappe-control {
 			max-width: 100% !important;