From 5288cbd937a7646bd6f343ae4fe613ae3446f5db Mon Sep 17 00:00:00 2001 From: Aryan Date: Sun, 16 Aug 2026 14:29:30 +0530 Subject: [PATCH] fix: validate inverted reporting date range on contributor profile Show a clear error when start date is after end date instead of treating the inverted window as an empty contribution period. --- src/pages/ContributorProfilePage.jsx | 81 ++++++++++++++++++++++++---- src/utils/reportingDateRange.js | 11 ++++ src/utils/reportingDateRange.test.js | 30 +++++++++++ 3 files changed, 111 insertions(+), 11 deletions(-) create mode 100644 src/utils/reportingDateRange.js create mode 100644 src/utils/reportingDateRange.test.js diff --git a/src/pages/ContributorProfilePage.jsx b/src/pages/ContributorProfilePage.jsx index 3cafec8..9340dee 100644 --- a/src/pages/ContributorProfilePage.jsx +++ b/src/pages/ContributorProfilePage.jsx @@ -4,14 +4,18 @@ import { FiArrowLeft, FiDownload, FiExternalLink, FiCalendar, FiBriefcase, FiAle import { useApp } from '../context/AppContext' import { C, PageTitle, Spinner, StatCard } from '../components/UI' import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from 'recharts' +import { + isInvalidReportingRange, + INVALID_REPORTING_RANGE_MESSAGE, +} from '../utils/reportingDateRange' // Reusable ContributionTable component -function ContributionTable({ items, dateHeader, resolveStatus }) { +function ContributionTable({ items, dateHeader, resolveStatus, emptyMessage }) { if (!items.length) { return (
-
No items found for this reporting period.
+
{emptyMessage || 'No items found for this reporting period.'}
) } @@ -245,8 +249,11 @@ export default function ContributorProfilePage() { } } - // Filter contributions by UTC date range limits + const invalidDateRange = isInvalidReportingRange(startDate, endDate) + + // Filter contributions by UTC date range limits (skip when range is invalid) const filteredContribs = useMemo(() => { + if (isInvalidReportingRange(startDate, endDate)) return [] return rawContributions.filter(item => { const itemTime = new Date(item.created_at).getTime() if (startDate) { @@ -424,7 +431,7 @@ export default function ContributorProfilePage() { right={