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 @@
-->
-
+