mirror of
https://github.com/Radarr/Radarr.git
synced 2026-04-18 21:35:51 -04:00
(cherry picked from commit 811eb36c7b1a5124270ff93d18d16944e654de81) Co-authored-by: Mark McDowall <mark@mcdowall.ca> Closes #10764 Closes #10776 Closes #10781
61 lines
1.8 KiB
TypeScript
61 lines
1.8 KiB
TypeScript
import moment from 'moment';
|
|
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
import { useSelector } from 'react-redux';
|
|
import AppState from 'App/State/AppState';
|
|
import * as calendarViews from 'Calendar/calendarViews';
|
|
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
|
|
import DayOfWeek from './DayOfWeek';
|
|
import styles from './DaysOfWeek.css';
|
|
|
|
function DaysOfWeek() {
|
|
const { dates, view } = useSelector((state: AppState) => state.calendar);
|
|
const { calendarWeekColumnHeader, shortDateFormat, showRelativeDates } =
|
|
useSelector(createUISettingsSelector());
|
|
|
|
const updateTimeout = useRef<ReturnType<typeof setTimeout>>();
|
|
const [todaysDate, setTodaysDate] = useState(
|
|
moment().startOf('day').toISOString()
|
|
);
|
|
|
|
const scheduleUpdate = useCallback(() => {
|
|
clearTimeout(updateTimeout.current);
|
|
|
|
const todaysDate = moment().startOf('day');
|
|
const diff = moment().diff(todaysDate.clone().add(1, 'day'));
|
|
|
|
setTodaysDate(todaysDate.toISOString());
|
|
|
|
updateTimeout.current = setTimeout(scheduleUpdate, diff);
|
|
}, []);
|
|
|
|
useEffect(() => {
|
|
if (view !== calendarViews.AGENDA && view !== calendarViews.MONTH) {
|
|
scheduleUpdate();
|
|
}
|
|
}, [view, scheduleUpdate]);
|
|
|
|
if (view === calendarViews.AGENDA) {
|
|
return null;
|
|
}
|
|
|
|
return (
|
|
<div className={styles.daysOfWeek}>
|
|
{dates.map((date) => {
|
|
return (
|
|
<DayOfWeek
|
|
key={date}
|
|
date={date}
|
|
view={view}
|
|
isTodaysDate={date === todaysDate}
|
|
calendarWeekColumnHeader={calendarWeekColumnHeader}
|
|
shortDateFormat={shortDateFormat}
|
|
showRelativeDates={showRelativeDates}
|
|
/>
|
|
);
|
|
})}
|
|
</div>
|
|
);
|
|
}
|
|
|
|
export default DaysOfWeek;
|