I'm trying to combine these 2 functions in an elegant way. I already reduce the complexity by using switch statement and const variable for repeating value
This functions subtracts day values by given day, week or 2week
const handleLeft = (
active: any,
setActiveDate: any,
setParagonActiveDate: any
) => {
const time = (prevDay: any, length: number) =>
moment(prevDay)
.subtract(length, 'd')
.format('YYYY/MM/DD');
switch (active) {
case 'day':
setActiveDate((prevDay: any) => time(prevDay, 1));
setParagonActiveDate &&
setParagonActiveDate((prevDay: any) => time(prevDay, 1));
break;
case 'week':
setActiveDate((prevDay: any) => time(prevDay, 6));
setParagonActiveDate &&
setParagonActiveDate((prevDay: any) => time(prevDay, 6));
break;
case '2weeks':
setActiveDate((prevDay: any) => time(prevDay, 13));
setParagonActiveDate &&
setParagonActiveDate((prevDay: any) => time(prevDay, 13));
}
};
This functions adds day values by given day, week or 2week
const handleRight = (
active: any,
setActiveDate: any,
setParagonActiveDate?: any
) => {
const time = (prevDay: any, length: number) =>
moment(prevDay)
.add(length, 'd')
.format('YYYY/MM/DD');
switch (active) {
case 'day':
setActiveDate((prevDay: any) => time(prevDay, 1));
setParagonActiveDate &&
setParagonActiveDate((prevDay: any) => time(prevDay, 1));
break;
case 'week':
setActiveDate((prevDay: any) => time(prevDay, 6));
setParagonActiveDate &&
setParagonActiveDate((prevDay: any) => time(prevDay, 6));
break;
case '2weeks':
setActiveDate((prevDay: any) => time(prevDay, 13));
setParagonActiveDate &&
setParagonActiveDate((prevDay: any) => time(prevDay, 13));
}
};