11'use client'
22
3- import { useQueryState } from 'nuqs'
4- import useSWR from 'swr'
5- import { format , isSameMonth , startOfMonth , endOfMonth } from 'date-fns'
6-
7- import { useReadExerciseRange } from '@/hooks/api/useExerciseApi'
8- import { useReadMemberExerciseRange } from '@/hooks/api/useMemberApi'
9- import { ExerciseRange } from '@/types/exercise'
3+ import { useExerciseCalendarData } from '@/hooks/useExerciseCalendar'
104
115import MonthView from './monthView'
126import styles from './monthViewWithData.module.css'
@@ -20,6 +14,7 @@ type Props = {
2014 isReadOnly : boolean
2115 isOthers : boolean
2216 showStamps : boolean
17+ memberId ?: string
2318}
2419
2520const MonthViewWithData = ( {
@@ -31,38 +26,16 @@ const MonthViewWithData = ({
3126 isReadOnly,
3227 isOthers,
3328 showStamps,
29+ memberId,
3430} : Props ) => {
35- const isFutureMonth = monthToShow . getTime ( ) > startOfMonth ( today ) . getTime ( )
36- const shouldFetch = ! isFutureMonth && isActive && showStamps
37- const startDate = format ( startOfMonth ( monthToShow ) , 'yyyy-MM-dd' )
38- const endDate = isSameMonth ( monthToShow , today )
39- ? format ( today , 'yyyy-MM-dd' )
40- : format ( endOfMonth ( monthToShow ) , 'yyyy-MM-dd' )
41- const [ memberId ] = useQueryState ( 'memberId' )
42- const { data : myData } = useReadExerciseRange (
43- startDate ,
44- endDate ,
45- shouldFetch && ! isOthers ,
46- )
47- const { data : othersData } = useReadMemberExerciseRange (
48- memberId ! ,
49- startDate ,
50- endDate ,
51- shouldFetch && isOthers ,
52- )
53- const fetchedData = isOthers ? othersData : myData
54- const swrKey = isOthers
55- ? [ 'member/exerciseRange' , memberId , startDate . substring ( 0 , 7 ) ]
56- : [ 'exercise/range' , startDate . substring ( 0 , 7 ) ]
57- const { data : cachedData } = useSWR < ExerciseRange [ ] > ( swrKey , null )
58- const data = fetchedData || cachedData
59- const counts : Record < string , number > = { }
60-
61- if ( data ) {
62- data . forEach ( ( { date, record } ) => {
63- counts [ date ] = record
64- } )
65- }
31+ const { counts } = useExerciseCalendarData ( {
32+ monthToShow,
33+ today,
34+ isOthers,
35+ memberId,
36+ isActive,
37+ showStamps,
38+ } )
6639
6740 const handleDateClick = ( date : Date ) => {
6841 if ( onDateSelect ) {
0 commit comments