refactor: date utils and all calls

This commit is contained in:
Julien Froidefond
2025-09-21 11:41:17 +02:00
parent 799a21df5c
commit 557cdebc13
23 changed files with 300 additions and 117 deletions

View File

@@ -1,5 +1,6 @@
import { NextResponse } from 'next/server';
import { dailyService } from '@/services/daily';
import { getToday, parseDate, isValidAPIDate } from '@/lib/date-utils';
/**
* API route pour récupérer la vue daily (hier + aujourd'hui)
@@ -32,13 +33,18 @@ export async function GET(request: Request) {
}
// Vue daily pour une date donnée (ou aujourd'hui par défaut)
const targetDate = date ? new Date(date) : new Date();
let targetDate: Date;
if (date && isNaN(targetDate.getTime())) {
return NextResponse.json(
{ error: 'Format de date invalide. Utilisez YYYY-MM-DD' },
{ status: 400 }
);
if (date) {
if (!isValidAPIDate(date)) {
return NextResponse.json(
{ error: 'Format de date invalide. Utilisez YYYY-MM-DD' },
{ status: 400 }
);
}
targetDate = parseDate(date);
} else {
targetDate = getToday();
}
const dailyView = await dailyService.getDailyView(targetDate);

View File

@@ -10,7 +10,7 @@ import { DailyCalendar } from '@/components/daily/DailyCalendar';
import { DailySection } from '@/components/daily/DailySection';
import { dailyClient } from '@/clients/daily-client';
import { Header } from '@/components/ui/Header';
import { getPreviousWorkday } from '@/lib/workday-utils';
import { getPreviousWorkday, formatDateLong, isToday, generateDateTitle, formatDateShort, isYesterday } from '@/lib/date-utils';
interface DailyPageClientProps {
initialDailyView?: DailyView;
@@ -112,37 +112,23 @@ export function DailyPageClient({
};
const formatCurrentDate = () => {
return currentDate.toLocaleDateString('fr-FR', {
weekday: 'long',
year: 'numeric',
month: 'long',
day: 'numeric'
});
return formatDateLong(currentDate);
};
const isToday = () => {
const today = new Date();
return currentDate.toDateString() === today.toDateString();
const isTodayDate = () => {
return isToday(currentDate);
};
const getTodayTitle = () => {
const today = new Date();
if (currentDate.toDateString() === today.toDateString()) {
return "🎯 Aujourd'hui";
}
return `🎯 ${currentDate.toLocaleDateString('fr-FR', { day: '2-digit', month: '2-digit', year: '2-digit' })}`;
return generateDateTitle(currentDate, '🎯');
};
const getYesterdayTitle = () => {
const today = new Date();
const yesterday = new Date(today);
yesterday.setDate(yesterday.getDate() - 1);
const yesterdayDate = getYesterdayDate();
if (yesterdayDate.toDateString() === yesterday.toDateString()) {
if (isYesterday(yesterdayDate)) {
return "📋 Hier";
}
return `📋 ${yesterdayDate.toLocaleDateString('fr-FR', { day: '2-digit', month: '2-digit', year: '2-digit' })}`;
return `📋 ${formatDateShort(yesterdayDate)}`;
};
if (loading) {
@@ -198,7 +184,7 @@ export function DailyPageClient({
<div className="text-sm font-bold text-[var(--foreground)] font-mono">
{formatCurrentDate()}
</div>
{!isToday() && (
{!isTodayDate() && (
<button
onClick={goToToday}
className="text-xs text-[var(--primary)] hover:text-[var(--primary)]/80 font-mono"