Skip to content

Commit 04ecb02

Browse files
committed
refactoring the date utils
1 parent 94c457b commit 04ecb02

File tree

2 files changed

+30
-29
lines changed

2 files changed

+30
-29
lines changed

apps/desktop-v2/components/start-time-widget.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
import moment from "moment";
22
import { ClockCyanIcon } from "./icons";
3-
import { getEnglishDay, getUsefulDateBooleans } from "@/utils/date";
3+
import { getEnglishDay, isOverdue } from "@/utils/date";
44

55
export const StartTimeWidget = (props: { startTime: Date }) => {
6-
const { isOverdue } = getUsefulDateBooleans(props.startTime);
76
const dateSection = getEnglishDay(props.startTime);
87

98
return (
109
<div className="px-[5px] rounded-[5px] justify-center items-center gap-1 inline-flex">
1110
<ClockCyanIcon />
1211
<p
1312
className={`text-center text-xs font-normal ${
14-
isOverdue
13+
isOverdue(props.startTime)
1514
? "text-red-600 dark:text-red-400"
1615
: "text-cyan-600 dark:text-cyan-400"
1716
}`}

apps/desktop-v2/utils/date.ts

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,31 @@
11
import moment from "moment";
22

3-
/**
4-
* Gets some useful date booleans for a given date
5-
* @param date the date
6-
* @returns some useful date booleans like isTomorrow, isNextWeek, etc.
7-
*/
8-
export function getUsefulDateBooleans(date: Date) {
9-
const isOverdue = moment().isAfter(date);
10-
const isToday = moment(date).isBetween(
11-
moment().startOf("day"),
12-
moment().endOf("day")
13-
);
3+
export function isTomorrow(date: Date) {
4+
const beginningOfTmr = moment().add(1, "day").startOf("day");
5+
const endOfTmr = moment().add(1, "day").endOf("day");
6+
return moment(date).isBetween(beginningOfTmr, endOfTmr);
7+
}
8+
9+
export function isToday(date: Date) {
10+
return moment(date).isBetween(moment().startOf("day"), moment().endOf("day"));
11+
}
12+
13+
export function isOverdue(date: Date) {
14+
return moment().isAfter(date);
15+
}
16+
17+
export function isThisWeek(date: Date) {
18+
const lastDayOfWeek = moment().endOf("isoWeek");
19+
return moment(date).isBefore(lastDayOfWeek);
20+
}
21+
22+
export function isNextWeek(date: Date) {
1423
const lastDayOfWeek = moment().endOf("isoWeek");
1524
const lastDayOfNextWeek = moment().add(1, "week").endOf("isoWeek");
16-
const isThisWeek = moment(date).isBefore(lastDayOfWeek);
17-
const isNextWeek =
25+
return (
1826
moment(date).isAfter(lastDayOfWeek) &&
19-
moment(date).isBefore(lastDayOfNextWeek);
20-
const beginningOfTmr = moment().add(1, "day").startOf("day");
21-
const endOfTmr = moment().add(1, "day").endOf("day");
22-
const isTomorrow = moment(date).isBetween(beginningOfTmr, endOfTmr);
23-
return { isOverdue, isToday, isThisWeek, isNextWeek, isTomorrow };
27+
moment(date).isBefore(lastDayOfNextWeek)
28+
);
2429
}
2530

2631
/**
@@ -29,18 +34,15 @@ export function getUsefulDateBooleans(date: Date) {
2934
* @returns string of the relative time
3035
*/
3136
export function getEnglishDay(date: Date): string {
32-
const { isThisWeek, isToday, isOverdue, isTomorrow, isNextWeek } =
33-
getUsefulDateBooleans(date);
34-
35-
const dateSection = isToday
37+
const dateSection = isToday(date)
3638
? "Today"
37-
: isOverdue
39+
: isOverdue(date)
3840
? moment(date).fromNow()
39-
: isTomorrow
41+
: isTomorrow(date)
4042
? "Tomorrow"
41-
: isThisWeek
43+
: isThisWeek(date)
4244
? moment(date).format("dddd")
43-
: isNextWeek
45+
: isNextWeek(date)
4446
? "Next " + moment(date).format("dddd")
4547
: moment(date).format("MMM D");
4648
return dateSection;

0 commit comments

Comments
 (0)