feat(multiboards): expand time filters in place

This commit is contained in:
Tommaso Casaburi
2026-04-18 16:47:04 +07:00
parent df01cbfb49
commit 70d8c37222
8 changed files with 186 additions and 25 deletions
+39
View File
@@ -0,0 +1,39 @@
import { useCallback, useState } from 'react';
import { getTimeFilterSeconds, type TimeFilterSuggestion } from '../lib/utils/time-filter-utils';
interface UseExpandedTimeFilterOptions {
timeFilterName: string;
timeFilterSeconds: number | undefined;
expandTimeWindow: (newerThan?: number) => Promise<void>;
}
const useExpandedTimeFilter = ({ timeFilterName, timeFilterSeconds, expandTimeWindow }: UseExpandedTimeFilterOptions) => {
const [currentTimeFilterName, setCurrentTimeFilterName] = useState(timeFilterName);
const [currentTimeFilterSeconds, setCurrentTimeFilterSeconds] = useState(timeFilterSeconds);
const expandSuggestionTimeWindow = useCallback(
async (suggestion: TimeFilterSuggestion | null) => {
if (!suggestion) {
return;
}
const nextTimeFilterSeconds = getTimeFilterSeconds(suggestion.timeFilterName);
if (typeof nextTimeFilterSeconds !== 'number') {
return;
}
await expandTimeWindow(nextTimeFilterSeconds);
setCurrentTimeFilterName(suggestion.timeFilterName);
setCurrentTimeFilterSeconds(nextTimeFilterSeconds);
},
[expandTimeWindow],
);
return {
currentTimeFilterName,
currentTimeFilterSeconds,
expandSuggestionTimeWindow,
};
};
export default useExpandedTimeFilter;