mirror of https://github.com/zlatinb/muwire
only refresh feeds table if something changes. This prevents the hover menu from flickering
parent
bb69535874
commit
83cd5e57a2
|
@ -24,6 +24,7 @@ public class FeedManager {
|
|||
private final Core core;
|
||||
private final FileManager fileManager;
|
||||
private final Map<Persona, RemoteFeed> remoteFeeds = new ConcurrentHashMap<>();
|
||||
private volatile long revision;
|
||||
|
||||
public FeedManager(Core core, FileManager fileManager) {
|
||||
this.core = core;
|
||||
|
@ -34,14 +35,20 @@ public class FeedManager {
|
|||
return remoteFeeds;
|
||||
}
|
||||
|
||||
long getRevision() {
|
||||
return revision;
|
||||
}
|
||||
|
||||
public void onFeedLoadedEvent(FeedLoadedEvent e) {
|
||||
remoteFeeds.put(e.getFeed().getPublisher(), new RemoteFeed(e.getFeed()));
|
||||
revision++;
|
||||
}
|
||||
|
||||
public void onUIFeedConfigurationEvent(UIFeedConfigurationEvent e) {
|
||||
if (!e.isNewFeed())
|
||||
return;
|
||||
remoteFeeds.put(e.getFeed().getPublisher(), new RemoteFeed(e.getFeed()));
|
||||
revision++;
|
||||
}
|
||||
|
||||
public void onFeedFetchEvent(FeedFetchEvent e) {
|
||||
|
@ -50,6 +57,7 @@ public class FeedManager {
|
|||
return; // hmm
|
||||
feed.getFeed().setStatus(e.getStatus());
|
||||
feed.revision++;
|
||||
revision++;
|
||||
}
|
||||
|
||||
public void onFeedItemFetchedEvent(FeedItemFetchedEvent e) {
|
||||
|
|
|
@ -43,7 +43,9 @@ public class FeedServlet extends HttpServlet {
|
|||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("<?xml version='1.0' encoding='UTF-8'?>");
|
||||
|
||||
if (section.equals("feeds")) {
|
||||
if (section.equals("revision")) {
|
||||
sb.append("<Revision>").append(feedManager.getRevision()).append("</Revision>");
|
||||
} else if (section.equals("feeds")) {
|
||||
List<WrappedFeed> feeds = feedManager.getRemoteFeeds().values().stream().
|
||||
map(rf -> new WrappedFeed(rf, core.getFeedManager().getFeedItems(rf.getFeed().getPublisher()).size())).
|
||||
collect(Collectors.toList());
|
||||
|
|
|
@ -116,10 +116,24 @@ class Item {
|
|||
|
||||
|
||||
function initFeeds() {
|
||||
setTimeout(refreshFeeds, 1)
|
||||
setInterval(refreshFeeds, 3000)
|
||||
setTimeout(fetchRevision, 1)
|
||||
setInterval(fetchRevision, 3000)
|
||||
}
|
||||
|
||||
function fetchRevision() {
|
||||
var xmlhttp = new XMLHttpRequest()
|
||||
xmlhttp.onreadystatechange = function() {
|
||||
if (this.readyState == 4 && this.status == 200) {
|
||||
var newRevision = parseInt(this.responseXML.getElementsByTagName("Revision")[0].childNodes[0].nodeValue)
|
||||
if (newRevision > revision) {
|
||||
revision = newRevision
|
||||
refreshFeeds()
|
||||
}
|
||||
}
|
||||
}
|
||||
xmlhttp.open("GET", "/MuWire/Feed?section=revision", true)
|
||||
xmlhttp.send()
|
||||
}
|
||||
|
||||
function refreshFeeds() {
|
||||
var xmlhttp = new XMLHttpRequest()
|
||||
|
@ -375,6 +389,7 @@ function download(infoHash) {
|
|||
xmlhttp.send("action=download&host=" + hostB64 + "&infoHash=" + infoHash)
|
||||
}
|
||||
|
||||
var revision = 0
|
||||
var feeds = new Map()
|
||||
var currentFeed = null
|
||||
|
||||
|
|
Loading…
Reference in New Issue