Fixed Group assignment sync
This commit is contained in:
@@ -307,9 +307,29 @@ async function pollAssignments() {
|
|||||||
const assignments = await fetchAssignments();
|
const assignments = await fetchAssignments();
|
||||||
if (!assignments) return;
|
if (!assignments) return;
|
||||||
|
|
||||||
|
// Check if we need to load members that are referenced in assignments
|
||||||
|
let needLoadFriendly = false;
|
||||||
|
let needLoadEnemy = false;
|
||||||
|
|
||||||
|
Object.values(assignments).forEach(group => {
|
||||||
|
(group.friendly || []).forEach(id => {
|
||||||
|
if (!friendlyMembers.has(id)) needLoadFriendly = true;
|
||||||
|
});
|
||||||
|
(group.enemy || []).forEach(id => {
|
||||||
|
if (!enemyMembers.has(id)) needLoadEnemy = true;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Load members if needed
|
||||||
|
if (needLoadFriendly) await loadMembers("friendly");
|
||||||
|
if (needLoadEnemy) await loadMembers("enemy");
|
||||||
|
|
||||||
// quick shallow compare to avoid full DOM updates if nothing changed
|
// quick shallow compare to avoid full DOM updates if nothing changed
|
||||||
const snapshot = JSON.stringify(assignments);
|
const snapshot = JSON.stringify(assignments);
|
||||||
if (snapshot !== lastAssignmentsSnapshot) {
|
const assignmentsChanged = snapshot !== lastAssignmentsSnapshot;
|
||||||
|
const membersLoaded = needLoadFriendly || needLoadEnemy;
|
||||||
|
|
||||||
|
if (assignmentsChanged || membersLoaded) {
|
||||||
lastAssignmentsSnapshot = snapshot;
|
lastAssignmentsSnapshot = snapshot;
|
||||||
applyAssignmentsToDOM(assignments);
|
applyAssignmentsToDOM(assignments);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user