-
Notifications
You must be signed in to change notification settings - Fork 22
/
hook.ts
39 lines (33 loc) · 1.11 KB
/
hook.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import { useEffect } from "react"
import { useRecoilState } from "recoil"
import { studyDetailsState, studySummariesState } from "./state"
import { Action } from "./action"
export const useStudySummaries = (action: Action): StudySummary[] => {
const [studySummaries, setStudySummaries] = useRecoilState<StudySummary[]>(
studySummariesState
)
useEffect(() => {
action.updateStudySummaries(setStudySummaries)
const intervalId = setInterval(function () {
action.updateStudySummaries(setStudySummaries)
}, 10 * 1000)
return () => clearInterval(intervalId)
}, [])
return studySummaries
}
export const useStudyDetail = (
action: Action,
studyId: number
): StudyDetail | null => {
const [studyDetails, setStudyDetails] = useRecoilState<StudyDetails>(
studyDetailsState
)
useEffect(() => {
action.updateStudyDetail(studyId, studyDetails, setStudyDetails)
const intervalId = setInterval(function () {
action.updateStudyDetail(studyId, studyDetails, setStudyDetails)
}, 10 * 1000)
return () => clearInterval(intervalId)
}, [])
return studyDetails[studyId] || null
}