Created new hook to handle visits filtering via query string

This commit is contained in:
Alejandro Celaya
2022-12-03 12:15:36 +01:00
parent 165afa436d
commit d2ebc880a0
9 changed files with 96 additions and 24 deletions

View File

@@ -2,6 +2,8 @@ import { subDays, startOfDay, endOfDay } from 'date-fns';
import { cond, filter, isEmpty, T } from 'ramda';
import { dateOrNull, DateOrString, formatInternational, isBeforeOrEqual, parseISO } from '../../helpers/date';
// TODO Rename this to src/utils/helpers/dateIntervals.ts
export interface DateRange {
startDate?: Date | null;
endDate?: Date | null;
@@ -12,8 +14,7 @@ export type DateInterval = 'all' | 'today' | 'yesterday' | 'last7Days' | 'last30
export const dateRangeIsEmpty = (dateRange?: DateRange): boolean => dateRange === undefined
|| isEmpty(filter(Boolean, dateRange as any));
export const rangeIsInterval = (range?: DateRange | DateInterval): range is DateInterval =>
typeof range === 'string';
export const rangeIsInterval = (range?: DateRange | DateInterval): range is DateInterval => typeof range === 'string';
const INTERVAL_TO_STRING_MAP: Record<DateInterval, string | undefined> = {
today: 'Today',
@@ -103,3 +104,11 @@ export const dateToMatchingInterval = (date: DateOrString): DateInterval => {
[T, () => 'all'],
])();
};
export const toDateRange = (rangeOrInterval: DateRange | DateInterval): DateRange => {
if (rangeIsInterval(rangeOrInterval)) {
return intervalToDateRange(rangeOrInterval);
}
return rangeOrInterval;
};