(options: { ignoreOffset?: boolean; timezone?: string } = {})
| 6 | import { getItem } from '@/lib/storage'; |
| 7 | |
| 8 | export function useDateRange(options: { ignoreOffset?: boolean; timezone?: string } = {}) { |
| 9 | const { |
| 10 | query: { date = '', unit = '', offset = 0, compare = 'prev' }, |
| 11 | } = useNavigation(); |
| 12 | const { locale } = useLocale(); |
| 13 | const dateRange = useMemo(() => { |
| 14 | const dateRangeObject = parseDateRange( |
| 15 | date || getItem(DATE_RANGE_CONFIG) || DEFAULT_DATE_RANGE_VALUE, |
| 16 | unit, |
| 17 | locale, |
| 18 | options.timezone, |
| 19 | ); |
| 20 | |
| 21 | return !options.ignoreOffset && offset |
| 22 | ? getOffsetDateRange(dateRangeObject, +offset) |
| 23 | : dateRangeObject; |
| 24 | }, [date, unit, offset, options]); |
| 25 | |
| 26 | const dateCompare = getCompareDate(compare, dateRange.startDate, dateRange.endDate); |
| 27 | |
| 28 | return { |
| 29 | date, |
| 30 | unit, |
| 31 | offset, |
| 32 | compare, |
| 33 | isAllTime: date.endsWith(`:all`), |
| 34 | isCustomRange: date.startsWith('range:'), |
| 35 | dateRange, |
| 36 | dateCompare, |
| 37 | }; |
| 38 | } |
no test coverage detected