import { format, parseISO } from "date-fns" import type { AssetResponse } from "./types" export interface DateGroup { date: string label: string assets: AssetResponse[] } export function getPhotoDate(asset: AssetResponse): Date { const dto = asset.metadata?.DateTimeOriginal as string | undefined if (dto) { const parsed = new Date(dto.replace(" ", "T")) if (!isNaN(parsed.getTime())) return parsed } return parseISO(asset.created_at) } export function groupByDate(assets: AssetResponse[]): DateGroup[] { const map = new Map() for (const asset of assets) { const d = getPhotoDate(asset) const key = format(d, "yyyy-MM-dd") const group = map.get(key) if (group) group.push(asset) else map.set(key, [asset]) } return Array.from(map.entries()).map(([date, assets]) => ({ date, label: format(parseISO(date), "MMMM d, yyyy"), assets, })) }