Fix topic messages offset filter bug (#1849)

* fix topic messages offset filter bug

* refactor function to improve readability

* fix infinite fetching bug

Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
This commit is contained in:
Arsen Simonyan 2022-04-22 10:41:40 +04:00 committed by GitHub
parent 3a9e1d12f4
commit f6e98ec5f5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -182,48 +182,37 @@ const Filters: React.FC<FiltersProps> = ({
);
};
const handleFiltersSubmit = React.useCallback(() => {
setAttempt(attempt + 1);
const handleFiltersSubmit = React.useCallback(
(currentOffset: string) => {
setAttempt(attempt + 1);
if (isSeekTypeControlVisible) {
props.seekType = isLive ? SeekType.LATEST : currentSeekType;
props.seekTo = selectedPartitions.map(({ value }) => {
let seekToOffset;
if (isSeekTypeControlVisible) {
props.seekType = isLive ? SeekType.LATEST : currentSeekType;
props.seekTo = selectedPartitions.map(({ value }) => {
const offsetProperty =
seekDirection === SeekDirection.FORWARD ? 'offsetMin' : 'offsetMax';
const offsetBasedSeekTo =
currentOffset || partitionMap[value][offsetProperty];
const seekToOffset =
currentSeekType === SeekType.OFFSET
? offsetBasedSeekTo
: timestamp?.getTime();
if (currentSeekType === SeekType.OFFSET) {
if (offset) {
seekToOffset = offset;
} else {
seekToOffset =
seekDirection === SeekDirection.FORWARD
? partitionMap[value].offsetMin
: partitionMap[value].offsetMax;
}
} else if (timestamp) {
seekToOffset = timestamp.getTime();
}
return `${value}::${seekToOffset || '0'}`;
});
}
return `${value}::${seekToOffset || '0'}`;
const newProps = omitBy(props, (v) => v === undefined || v === '');
const qs = Object.keys(newProps)
.map((key) => `${key}=${newProps[key]}`)
.join('&');
history.push({
search: `?${qs}`,
});
}
const newProps = omitBy(props, (v) => v === undefined || v === '');
const qs = Object.keys(newProps)
.map((key) => `${key}=${newProps[key]}`)
.join('&');
history.push({
search: `?${qs}`,
});
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [
seekDirection,
queryType,
activeFilter,
currentSeekType,
timestamp,
query,
]);
},
[seekDirection, queryType, activeFilter, currentSeekType, timestamp, query]
);
const handleSSECancel = () => {
if (!source.current) return;
@ -313,7 +302,10 @@ const Filters: React.FC<FiltersProps> = ({
}
break;
case TopicMessageEventTypeEnum.PHASE:
if (phase?.name) updatePhase(phase.name);
if (phase?.name) {
updatePhase(phase.name);
setIsFetching(false);
}
break;
case TopicMessageEventTypeEnum.CONSUMING:
if (consuming) updateMeta(consuming);
@ -345,11 +337,11 @@ const Filters: React.FC<FiltersProps> = ({
]);
React.useEffect(() => {
if (location.search?.length === 0) {
handleFiltersSubmit();
handleFiltersSubmit(offset);
}
}, [handleFiltersSubmit, location]);
React.useEffect(() => {
handleFiltersSubmit();
handleFiltersSubmit(offset);
}, [handleFiltersSubmit, seekDirection]);
return (
@ -429,7 +421,7 @@ const Filters: React.FC<FiltersProps> = ({
buttonType="secondary"
buttonSize="M"
disabled={isSubmitDisabled}
onClick={handleFiltersSubmit}
onClick={() => handleFiltersSubmit(offset)}
style={{ fontWeight: 500 }}
>
Submit