@@ -17,6 +17,7 @@ import type { CalendarEvent } from '../../utils/calendarUtils';
1717import type { ScheduleEntityReturnModel } from '../../api/types' ;
1818import { useTheme } from '../../contexts/ThemeContext' ;
1919import { useCalendarDate } from '../../contexts/CalendarDateContext' ;
20+ import type { CalendarView } from '../../contexts/CalendarDateContext' ;
2021import { useSettings } from '../../contexts/SettingsContext' ;
2122import { useIsMobile } from '../../hooks/useIsMobile' ;
2223import ThreeDayView from './ThreeDayView' ;
@@ -28,8 +29,6 @@ import EventDetailModal from './components/EventDetailModal';
2829
2930dayjs . extend ( updateLocale ) ;
3031
31- type ExtendedView = View | '3day' ;
32-
3332const calendarViews = {
3433 month : true ,
3534 week : true ,
@@ -43,9 +42,7 @@ const CalendarPage: FC = () => {
4342 const { t, i18n } = useTranslation ( ) ;
4443 const { timeDisplayFormat, weekStart : weekStartSetting } = useSettings ( ) ;
4544 const initialViewSet = useRef ( false ) ;
46- const { selectedDate, setSelectedDate } = useCalendarDate ( ) ;
47-
48- const [ view , setView ] = useState < ExtendedView > ( 'week' ) ;
45+ const { selectedDate, setSelectedDate, calendarView, setCalendarView } = useCalendarDate ( ) ;
4946 const [ events , setEvents ] = useState < CalendarEvent [ ] > ( [ ] ) ;
5047 const [ loading , setLoading ] = useState ( false ) ;
5148 const [ error , setError ] = useState < string | null > ( null ) ;
@@ -65,7 +62,7 @@ const CalendarPage: FC = () => {
6562 useEffect ( ( ) => {
6663 if ( ! initialViewSet . current && screens . md !== undefined ) {
6764 initialViewSet . current = true ;
68- setView ( isMobile ? 'day' : 'week' ) ;
65+ setCalendarView ( isMobile ? 'day' : 'week' ) ;
6966 }
7067 } , [ isMobile , screens . md ] ) ;
7168
@@ -112,7 +109,7 @@ const CalendarPage: FC = () => {
112109 ) ;
113110
114111 const getDatesForView = useCallback (
115- ( v : ExtendedView ) : Date [ ] => {
112+ ( v : CalendarView ) : Date [ ] => {
116113 switch ( v ) {
117114 case 'month' : return monthDays ;
118115 case 'week' : return weekDays ;
@@ -154,14 +151,14 @@ const CalendarPage: FC = () => {
154151 ) ;
155152
156153 useEffect ( ( ) => {
157- fetchTasks ( getDatesForView ( view ) ) ;
158- } , [ view , selectedDate , fetchTasks , getDatesForView ] ) ;
154+ fetchTasks ( getDatesForView ( calendarView ) ) ;
155+ } , [ calendarView , selectedDate , fetchTasks , getDatesForView ] ) ;
159156
160157 const refresh = useCallback ( async ( ) => {
161158 setLoading ( true ) ;
162159 setError ( null ) ;
163160 try {
164- const dates = getDatesForView ( view ) ;
161+ const dates = getDatesForView ( calendarView ) ;
165162 await refreshTasksForDays ( dates ) ;
166163 await fetchTasks ( dates ) ;
167164 } catch ( err : unknown ) {
@@ -173,7 +170,7 @@ const CalendarPage: FC = () => {
173170 } finally {
174171 setLoading ( false ) ;
175172 }
176- } , [ view , getDatesForView , fetchTasks , t ] ) ;
173+ } , [ calendarView , getDatesForView , fetchTasks , t ] ) ;
177174
178175 // --- Event handlers ---
179176
@@ -215,12 +212,12 @@ const CalendarPage: FC = () => {
215212 }
216213 setTaskModalOpen ( false ) ;
217214 notification . success ( { message : t ( 'tasks.success' ) , description : t ( 'tasks.fixedTaskAdded' ) } ) ;
218- await fetchTasks ( getDatesForView ( view ) ) ;
215+ await fetchTasks ( getDatesForView ( calendarView ) ) ;
219216 } catch {
220217 notification . error ( { message : t ( 'tasks.error' ) , description : t ( 'tasks.fixedTaskSaveFailed' ) } ) ;
221218 }
222219 } ,
223- [ fetchTasks , getDatesForView , view , t ]
220+ [ fetchTasks , getDatesForView , calendarView , t ]
224221 ) ;
225222
226223 const handleSaveDynamic = useCallback (
@@ -229,12 +226,12 @@ const CalendarPage: FC = () => {
229226 await createDynamicTask ( data ) ;
230227 setTaskModalOpen ( false ) ;
231228 notification . success ( { message : t ( 'tasks.success' ) , description : t ( 'tasks.dynamicTaskAdded' ) } ) ;
232- await fetchTasks ( getDatesForView ( view ) ) ;
229+ await fetchTasks ( getDatesForView ( calendarView ) ) ;
233230 } catch {
234231 notification . error ( { message : t ( 'tasks.error' ) , description : t ( 'tasks.dynamicTaskSaveFailed' ) } ) ;
235232 }
236233 } ,
237- [ fetchTasks , getDatesForView , view , t ]
234+ [ fetchTasks , getDatesForView , calendarView , t ]
238235 ) ;
239236
240237 const eventStyleGetter = useCallback (
@@ -304,13 +301,13 @@ const CalendarPage: FC = () => {
304301 startAccessor = "start"
305302 endAccessor = "end"
306303 style = { { flex : 1 } }
307- view = { view as View }
308- onView = { ( v ) => setView ( v as ExtendedView ) }
304+ view = { calendarView as View }
305+ onView = { ( v ) => setCalendarView ( v as CalendarView ) }
309306 date = { selectedDate }
310307 onNavigate = { setSelectedDate }
311308 views = { calendarViews }
312309 onSelectEvent = { handleSelectEvent }
313- onDrillDown = { ( date ) => { setSelectedDate ( date ) ; setView ( 'day' ) ; } }
310+ onDrillDown = { ( date ) => { setSelectedDate ( date ) ; setCalendarView ( 'day' ) ; } }
314311 eventPropGetter = { eventStyleGetter }
315312 culture = { i18n . language ?. startsWith ( 'ru' ) ? 'ru' : 'en' }
316313 messages = { calendarMessages as Record < string , string > }
0 commit comments