diff --git a/app/src/main/java/io/xeres/app/xrs/service/forum/ForumRsService.java b/app/src/main/java/io/xeres/app/xrs/service/forum/ForumRsService.java index 39e37090e..1381fcfa4 100644 --- a/app/src/main/java/io/xeres/app/xrs/service/forum/ForumRsService.java +++ b/app/src/main/java/io/xeres/app/xrs/service/forum/ForumRsService.java @@ -111,8 +111,8 @@ private void syncMessages(PeerConnection peerConnection) { // Request new messages for all subscribed groups findAllSubscribedGroups().forEach(forumGroupItem -> { - var gxsSyncMessageRequestItem = new GxsSyncMessageRequestItem(forumGroupItem.getGxsId(), gxsUpdateService.getLastPeerMessagesUpdate(peerConnection.getLocation(), forumGroupItem.getGxsId(), getServiceType())); - log.debug("Asking {} for new messages in {} since {} for {}", peerConnection, gxsSyncMessageRequestItem.getGroupId(), log.isDebugEnabled() ? Instant.ofEpochSecond(gxsSyncMessageRequestItem.getLastUpdated()) : null, getServiceType()); + var gxsSyncMessageRequestItem = new GxsSyncMessageRequestItem(forumGroupItem.getGxsId(), gxsUpdateService.getLastPeerMessagesUpdate(peerConnection.getLocation(), forumGroupItem.getGxsId(), getServiceType()), ChronoUnit.YEARS.getDuration()); + log.debug("Asking {} for new messages in {} since {} for {}", peerConnection, gxsSyncMessageRequestItem.getGroupId(), log.isDebugEnabled() ? Instant.ofEpochSecond(gxsSyncMessageRequestItem.getCreateSince()) : null, getServiceType()); peerConnectionManager.writeItem(peerConnection, gxsSyncMessageRequestItem, this); }); } diff --git a/app/src/main/java/io/xeres/app/xrs/service/gxs/GxsRsService.java b/app/src/main/java/io/xeres/app/xrs/service/gxs/GxsRsService.java index c5041ef8a..f55c9f411 100644 --- a/app/src/main/java/io/xeres/app/xrs/service/gxs/GxsRsService.java +++ b/app/src/main/java/io/xeres/app/xrs/service/gxs/GxsRsService.java @@ -455,7 +455,7 @@ private boolean areMessageUpdatesAvailableForPeer(GxsId groupId, Instant lastPee return false; } - var group = groupList.get(0); + var group = groupList.getFirst(); return group.isSubscribed() && group.getLastPosted() != null && lastPeerUpdate.isBefore(group.getLastPosted()) && diff --git a/app/src/main/java/io/xeres/app/xrs/service/gxs/item/GxsSyncMessageRequestItem.java b/app/src/main/java/io/xeres/app/xrs/service/gxs/item/GxsSyncMessageRequestItem.java index b99aa5766..f7ccbc23f 100644 --- a/app/src/main/java/io/xeres/app/xrs/service/gxs/item/GxsSyncMessageRequestItem.java +++ b/app/src/main/java/io/xeres/app/xrs/service/gxs/item/GxsSyncMessageRequestItem.java @@ -3,7 +3,9 @@ import io.xeres.app.xrs.serialization.RsSerialized; import io.xeres.common.id.GxsId; +import java.time.Duration; import java.time.Instant; +import java.util.stream.Stream; import static io.xeres.app.xrs.serialization.TlvType.STR_HASH_SHA1; @@ -34,10 +36,18 @@ public GxsSyncMessageRequestItem() { } - public GxsSyncMessageRequestItem(GxsId groupId, Instant lastUpdated) + public GxsSyncMessageRequestItem(GxsId groupId, Instant lastUpdated, Duration limit) { this.groupId = groupId; this.lastUpdated = (int) lastUpdated.getEpochSecond(); + createSince = (int) getMostRecent(lastUpdated, limit).getEpochSecond(); + } + + private Instant getMostRecent(Instant last, Duration limit) + { + return Stream.of(Instant.now().minus(limit), last) + .max(Instant::compareTo) + .get(); } @Override diff --git a/ui/src/main/resources/view/forum/forumview.fxml b/ui/src/main/resources/view/forum/forumview.fxml index 839089512..b764d9cde 100644 --- a/ui/src/main/resources/view/forum/forumview.fxml +++ b/ui/src/main/resources/view/forum/forumview.fxml @@ -64,7 +64,7 @@ --> - +