From 4e5331f3bb510a11dcda107b2a5a3bc549afd005 Mon Sep 17 00:00:00 2001 From: AlexisSouquiere Date: Wed, 26 Apr 2023 13:55:31 +0200 Subject: [PATCH] Fix after parameter on topic data pagination --- .../src/containers/Topic/Topic/TopicData/TopicData.jsx | 9 +++++---- .../java/org/akhq/repositories/RecordRepository.java | 8 ++++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/client/src/containers/Topic/Topic/TopicData/TopicData.jsx b/client/src/containers/Topic/Topic/TopicData/TopicData.jsx index 2127377b0..ca45b0d41 100644 --- a/client/src/containers/Topic/Topic/TopicData/TopicData.jsx +++ b/client/src/containers/Topic/Topic/TopicData/TopicData.jsx @@ -183,7 +183,6 @@ class TopicData extends Root { this.eventSource.addEventListener('searchBody', function (e) { const res = JSON.parse(e.data); const records = res.records || []; - const nextPage = res.after ? res.after : self.state.nextPage; const percentDiff = res.percent - lastPercentVal; @@ -191,7 +190,6 @@ class TopicData extends Root { if (percentDiff >= percentUpdateDelta) { lastPercentVal = res.percent; self.setState({ - nextPage, recordCount: self.state.recordCount + records.length, percent: res.percent.toFixed(2) }); @@ -207,9 +205,12 @@ class TopicData extends Root { } }); - this.eventSource.addEventListener('searchEnd', function () { + this.eventSource.addEventListener('searchEnd', function (e) { + const res = JSON.parse(e.data); + const nextPage = res.after ? res.after : self.state.nextPage; + self.setState({ percent: 100, nextPage, isSearching: false, loading: false }); + self.eventSource.close(); - self.setState({ percent: 100, isSearching: false, loading: false }); }); } ); diff --git a/src/main/java/org/akhq/repositories/RecordRepository.java b/src/main/java/org/akhq/repositories/RecordRepository.java index 6c1eedd43..88004c1c6 100644 --- a/src/main/java/org/akhq/repositories/RecordRepository.java +++ b/src/main/java/org/akhq/repositories/RecordRepository.java @@ -683,8 +683,7 @@ public Flowable> search(Topic topic, Options options) throws // end if (searchEvent == null || searchEvent.emptyPoll == 666) { - - emitter.onNext(new SearchEvent(topic).end()); + emitter.onNext(new SearchEvent(topic).end(searchEvent != null ? searchEvent.after: null)); emitter.onComplete(); consumer.close(); @@ -725,7 +724,7 @@ public Flowable> search(Topic topic, Options options) throws if (currentEvent.emptyPoll >= 1) { currentEvent.emptyPoll = 666; - emitter.onNext(currentEvent.end()); + emitter.onNext(currentEvent.end(searchEvent.getAfter())); } else if (matchesCount.get() >= options.getSize()) { currentEvent.emptyPoll = 666; emitter.onNext(currentEvent.progress(options)); @@ -860,8 +859,9 @@ private SearchEvent(Topic topic) { }); } - public Event end() { + public Event end(String after) { this.percent = 100; + this.after = after; return Event.of(this).name("searchEnd"); }