From f5ea938ab4a29c345b5938b81e861b3889892501 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Wed, 23 Jul 2014 18:33:52 +0100 Subject: [PATCH] uniques plugin: better syncing between the data and the state of the highlighters. sync case included, but not tested yet... --- plugins/uniques.user.js | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/plugins/uniques.user.js b/plugins/uniques.user.js index 7488161d..666d93bd 100644 --- a/plugins/uniques.user.js +++ b/plugins/uniques.user.js @@ -65,7 +65,7 @@ window.plugin.uniques.onPortalDetailsUpdated = function() { } $('#portaldetails > .imgpreview').after(plugin.uniques.contentHTML); - plugin.uniques.updateChecked(); + plugin.uniques.updateCheckedAndHighlight(guid); } window.plugin.uniques.onPublicChatDataAvailable = function(data) { @@ -143,13 +143,16 @@ window.plugin.uniques.onPublicChatDataAvailable = function(data) { }); } -window.plugin.uniques.updateChecked = function() { - var guid = window.selectedPortal, - uniqueInfo = plugin.uniques.uniques[guid]; - visited = (uniqueInfo && uniqueInfo.visited) || false, - captured = (uniqueInfo && uniqueInfo.captured) || false; - $('#visited').prop('checked', visited); - $('#captured').prop('checked', captured); +window.plugin.uniques.updateCheckedAndHighlight = function(guid) { + if (guid == window.selectedPortal) { + + var uniqueInfo = plugin.uniques.uniques[guid]; + visited = (uniqueInfo && uniqueInfo.visited) || false, + captured = (uniqueInfo && uniqueInfo.captured) || false; + $('#visited').prop('checked', visited); + $('#captured').prop('checked', captured); + } + if (window.plugin.uniques.isHighlightActive) { if (portals[guid]) { plugin.uniques.highlight({portal: portals[guid]}); @@ -157,6 +160,7 @@ window.plugin.uniques.updateChecked = function() { } } + window.plugin.uniques.setPortalVisited = function(guid) { var uniqueInfo = plugin.uniques.uniques[guid]; if (uniqueInfo) { @@ -168,7 +172,7 @@ window.plugin.uniques.setPortalVisited = function(guid) { }; } - plugin.uniques.updateChecked(); + plugin.uniques.updateCheckedAndHighlight(guid); plugin.uniques.storeLocal(plugin.uniques.KEY); plugin.uniques.storeLocal(plugin.uniques.UPDATE_QUEUE); plugin.uniques.delaySync(); @@ -186,7 +190,7 @@ window.plugin.uniques.setPortalCaptured = function(guid) { }; } - plugin.uniques.updateChecked(); + plugin.uniques.updateCheckedAndHighlight(guid); plugin.uniques.storeLocal(plugin.uniques.KEY); plugin.uniques.storeLocal(plugin.uniques.UPDATE_QUEUE); plugin.uniques.delaySync(); @@ -209,7 +213,7 @@ window.plugin.uniques.updateVisited = function(visited) { uniqueInfo.captured = false; } - plugin.uniques.updateChecked(); + plugin.uniques.updateCheckedAndHighlight(guid); plugin.uniques.storeLocal(plugin.uniques.KEY); plugin.uniques.storeLocal(plugin.uniques.UPDATE_QUEUE); plugin.uniques.delaySync(); @@ -232,7 +236,7 @@ window.plugin.uniques.updateCaptured = function(captured) { uniqueInfo.captured = false; } - plugin.uniques.updateChecked(); + plugin.uniques.updateCheckedAndHighlight(guid); plugin.uniques.storeLocal(plugin.uniques.KEY); plugin.uniques.storeLocal(plugin.uniques.UPDATE_QUEUE); plugin.uniques.delaySync(); @@ -273,7 +277,15 @@ window.plugin.uniques.syncCallback = function(pluginName, fieldName, e, fullUpda // offline, // fire 'pluginUniquesRefreshAll' to notify a full update if(fullUpdated) { - plugin.uniques.updateChecked(); + // a full update - update the selected portal sidebar + if (window.selectedPortal) { + plugin.uniques.updateCheckedAndHighlight(window.selectedPortal); + } + // and also update all highlights, if needed + if (window.plugin.uniques.isHighlightActive) { + resetHighlightedPortals(); + } + window.runHooks('pluginUniquesRefreshAll'); return; } @@ -286,7 +298,7 @@ window.plugin.uniques.syncCallback = function(pluginName, fieldName, e, fullUpda // Remote update delete plugin.uniques.updateQueue[e.property]; plugin.uniques.storeLocal(plugin.uniques.UPDATE_QUEUE); - plugin.uniques.updateChecked(); + plugin.uniques.updateCheckedAndHighlight(e.property); window.runHooks('pluginUniquesUpdateUniques', {guid: e.property}); } }