mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 19:38:23 +00:00 
			
		
		
		
	Update notification table with only latest data (#16445)
When marking notifications read the results may be returned out of order or be delayed. This PR sends a sequence number to gitea so that the browser can ensure that only the results of the latest notification change are shown. Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: 6543 <6543@obermui.de>
This commit is contained in:
		| @@ -1,5 +1,7 @@ | ||||
| const {AppSubUrl, csrf, NotificationSettings} = window.config; | ||||
|  | ||||
| let notificationSequenceNumber = 0; | ||||
|  | ||||
| export function initNotificationsTable() { | ||||
|   $('#notification_table .button').on('click', async function () { | ||||
|     const data = await updateNotification( | ||||
| @@ -10,8 +12,10 @@ export function initNotificationsTable() { | ||||
|       $(this).data('notification-id'), | ||||
|     ); | ||||
|  | ||||
|     $('#notification_div').replaceWith(data); | ||||
|     initNotificationsTable(); | ||||
|     if ($(data).data('sequence-number') === notificationSequenceNumber) { | ||||
|       $('#notification_div').replaceWith(data); | ||||
|       initNotificationsTable(); | ||||
|     } | ||||
|     await updateNotificationCount(); | ||||
|  | ||||
|     return false; | ||||
| @@ -139,10 +143,13 @@ async function updateNotificationTable() { | ||||
|       url: `${AppSubUrl}/notifications?${notificationDiv.data('params')}`, | ||||
|       data: { | ||||
|         'div-only': true, | ||||
|         'sequence-number': ++notificationSequenceNumber, | ||||
|       } | ||||
|     }); | ||||
|     notificationDiv.replaceWith(data); | ||||
|     initNotificationsTable(); | ||||
|     if ($(data).data('sequence-number') === notificationSequenceNumber) { | ||||
|       notificationDiv.replaceWith(data); | ||||
|       initNotificationsTable(); | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| @@ -182,6 +189,7 @@ async function updateNotification(url, status, page, q, notificationID) { | ||||
|       page, | ||||
|       q, | ||||
|       noredirect: true, | ||||
|       'sequence-number': ++notificationSequenceNumber, | ||||
|     }, | ||||
|   }); | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user