Cleanup - unused files / unused exports / duplicate exports
[ProtonMail-WebClient.git] / packages / utils / isLastWeek.ts
blob659b59d311bc78c8f6d7879a10d743ad59f54a90
1 /* This helper is inspired from https://github.com/date-fns/date-fns/blob/main/src/isSameWeek/index.ts helper */
2 import { startOfWeek, subDays } from 'date-fns';
4 /**
5  * The {@link isLastWeek} function options.
6  */
8 /**
9  * @name isLastWeek
10  * @category Week Helpers
11  * @summary Is the given date in the last week?
12  *
13  * @description
14  * Is the given date in the last week?
15  *
16  * @param dirtyDate - the date to check
17  * @param options - an object with options.
18  * @returns the date is in the last week
19  *
20  * @example
21  * // If Current date is 03/27/2023
22  * // Is 20 March 2023 in the last week?
23  * const result = isLastWeek(new Date(2023, 2, 20))
24  * //=> true
25  *
26  * @example
27  * // If Current date is 03/27/2023 and if week starts with Monday,
28  * // Is 20 March 2023 in the last week?
29  * const result = isLastWeek(new Date(2023, 2, 20), {
30  *   weekStartsOn: 1
31  * })
32  * //=> true
33  *
34  * @example
35  * // If Current date is 03/27/2023
36  * // Is 27 March 2023 in the last week?
37  * const result = isLastWeek(new Date(2023, 2, 27))
38  * //=> false
39  */
41 export default function isLastWeek(
42     dirtyDate: Date | number,
43     options?: { locale?: Locale; weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 }
44 ): boolean {
45     const currentDate = new Date();
46     const dateStartOfWeek = startOfWeek(currentDate, options);
48     const lastWeekStart = subDays(dateStartOfWeek, 7);
49     const lastWeekEnd = subDays(lastWeekStart, -6);
51     const dateToCheck = new Date(dirtyDate);
52     return dateToCheck >= lastWeekStart && dateToCheck <= lastWeekEnd;