diff --git a/app/components/dashboard/header.tsx b/app/components/dashboard/header.tsx index d8e350f..b458b6b 100644 --- a/app/components/dashboard/header.tsx +++ b/app/components/dashboard/header.tsx @@ -104,31 +104,26 @@ export function Header({ } }; - const nextFromYearHandler = () => { - if (currentYear && (currentYear.since ?? 0) < (currentYear.until ?? 0)) { - const data = { - ...currentYear, - since: currentYear.since! + 1, - }; - setCurrentYear(data); - EventBus.emit("dateSelected", { - ...selectedDate, - start: `${data.since}/${selectedDate.start?.split("/").slice(1).join("/")}`, - }); - } + const changeSinceYear = (delta: number) => { + if (!currentYear) return; + + const newSince = (currentYear.since ?? 0) + delta; + + if (newSince > (currentYear.until ?? Infinity) || newSince < 0) return; + + const updatedYear = { ...currentYear, since: newSince }; + setCurrentYear(updatedYear); + + const updatedDate = { + ...selectedDate, + start: `${newSince}/${selectedDate.start?.split("/").slice(1).join("/")}`, + }; + setSelectedDate(updatedDate); + EventBus.emit("dateSelected", updatedDate); }; - const prevFromYearHandler = () => { - const data = { - ...currentYear, - since: currentYear.since! - 1, - }; - setCurrentYear(data); - EventBus.emit("dateSelected", { - ...selectedDate, - start: `${data.since}/${selectedDate.start?.split("/").slice(1).join("/")}`, - }); - }; + const nextFromYearHandler = () => changeSinceYear(1); + const prevFromYearHandler = () => changeSinceYear(-1); const selectFromDateHandler = (val: MonthItem) => { const data = { @@ -140,31 +135,26 @@ export function Header({ EventBus.emit("dateSelected", data); }; - const nextUntilYearHandler = () => { - const data = { - ...currentYear, - until: currentYear.until! + 1, - }; - setCurrentYear(data); - EventBus.emit("dateSelected", { + const changeUntilYear = (delta: number) => { + if (!currentYear) return; + + const newUntil = (currentYear.until ?? 0) + delta; + + if (newUntil < (currentYear.since ?? 0)) return; + + const updatedYear = { ...currentYear, until: newUntil }; + setCurrentYear(updatedYear); + + const updatedDate = { ...selectedDate, - end: `${data.until}/${selectedDate?.end?.split("/").slice(1).join("/")}`, - }); + end: `${newUntil}/${selectedDate.end?.split("/").slice(1).join("/")}`, + }; + setSelectedDate(updatedDate); + EventBus.emit("dateSelected", updatedDate); }; - const prevUntilYearHandler = () => { - if (currentYear && (currentYear.since ?? 0) < (currentYear.until ?? 0)) { - const data = { - ...currentYear, - until: currentYear.until! - 1, - }; - setCurrentYear(data); - EventBus.emit("dateSelected", { - ...selectedDate, - end: `${data.until}/${selectedDate.end?.split("/").slice(1).join("/")}`, - }); - } - }; + const nextUntilYearHandler = () => changeUntilYear(1); + const prevUntilYearHandler = () => changeUntilYear(-1); const selectUntilDateHandler = (val: MonthItem) => { const data = {