refactor(schedule): dedup formatSendAt into shared formatFriendlyDateTime
ScheduleMessageModal had a local formatSendAt(Date) byte-equivalent to the tested formatFriendlyDateTime (utils/datetimeInput). Reuse the shared, unit- tested helper instead of a second copy — identical output. (Also prettier-clean.) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -21,7 +21,13 @@ import { useMatrixClient } from '../../hooks/useMatrixClient';
|
|||||||
import { stopPropagation } from '../../utils/keyboard';
|
import { stopPropagation } from '../../utils/keyboard';
|
||||||
import { scheduleMessage } from '../../utils/scheduledMessages';
|
import { scheduleMessage } from '../../utils/scheduledMessages';
|
||||||
import { useModalStyle } from '../../hooks/useModalStyle';
|
import { useModalStyle } from '../../hooks/useModalStyle';
|
||||||
import { toLocalDate, toLocalTime, parseLocalDateTime, pickerInputStyle } from '../../utils/datetimeInput';
|
import {
|
||||||
|
toLocalDate,
|
||||||
|
toLocalTime,
|
||||||
|
parseLocalDateTime,
|
||||||
|
pickerInputStyle,
|
||||||
|
formatFriendlyDateTime,
|
||||||
|
} from '../../utils/datetimeInput';
|
||||||
|
|
||||||
interface ScheduleMessageModalProps {
|
interface ScheduleMessageModalProps {
|
||||||
roomId: string;
|
roomId: string;
|
||||||
@@ -47,25 +53,6 @@ function formatRelativeTime(ms: number): string {
|
|||||||
return 'in less than a minute';
|
return 'in less than a minute';
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatSendAt(sendAt: Date): string {
|
|
||||||
const now = new Date();
|
|
||||||
const isToday =
|
|
||||||
sendAt.getFullYear() === now.getFullYear() &&
|
|
||||||
sendAt.getMonth() === now.getMonth() &&
|
|
||||||
sendAt.getDate() === now.getDate();
|
|
||||||
const tomorrow = new Date(now);
|
|
||||||
tomorrow.setDate(tomorrow.getDate() + 1);
|
|
||||||
const isTomorrow =
|
|
||||||
sendAt.getFullYear() === tomorrow.getFullYear() &&
|
|
||||||
sendAt.getMonth() === tomorrow.getMonth() &&
|
|
||||||
sendAt.getDate() === tomorrow.getDate();
|
|
||||||
|
|
||||||
const timeStr = sendAt.toLocaleTimeString(undefined, { hour: '2-digit', minute: '2-digit' });
|
|
||||||
if (isToday) return `Today at ${timeStr}`;
|
|
||||||
if (isTomorrow) return `Tomorrow at ${timeStr}`;
|
|
||||||
return `${sendAt.toLocaleDateString()} at ${timeStr}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function ScheduleMessageModal({
|
export function ScheduleMessageModal({
|
||||||
roomId,
|
roomId,
|
||||||
initialBody,
|
initialBody,
|
||||||
@@ -112,7 +99,10 @@ export function ScheduleMessageModal({
|
|||||||
setPreview(null);
|
setPreview(null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
setPreview({ label: formatSendAt(sendAt), relative: formatRelativeTime(diffMs) });
|
setPreview({
|
||||||
|
label: formatFriendlyDateTime(sendAt.getTime()),
|
||||||
|
relative: formatRelativeTime(diffMs),
|
||||||
|
});
|
||||||
}, [getSendAt]);
|
}, [getSendAt]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|||||||
Reference in New Issue
Block a user