Files
starr-philproperties/lib/ocaml/useAnnotation.res
T
kennethobsequio fbef7cb6e6 ready to test
Testing

Signed-off-by: Kenneth Obsequio <k80308392@gmail.com>
2026-06-22 10:07:20 +08:00

38 lines
988 B
Plaintext

@val external window: {..} = "window"
let use = (courseId: string) => {
let (state, setState) = React.useState(() => AnnotationTypes.initialState)
let selectLesson = (lesson: AnnotationTypes.lesson) => {
let savedNote = AnnotationStorage.loadNote(courseId, lesson.id)
let notes = Dict.make()
switch savedNote {
| Some(note) => Dict.set(notes, lesson.id, note)
| None => ()
}
setState(_ => {
selectedLesson: Some(lesson),
isPenOpen: true,
notes,
})
}
let updateNote = (lessonId: string, note: string) => {
AnnotationStorage.saveNote(courseId, lessonId, note)
setState(prev => {
let notes = Dict.make()
Dict.set(notes, lessonId, note)
{...prev, notes}
})
}
let closePen = () => {
setState(prev => {...prev, isPenOpen: false, selectedLesson: None})
}
let getNote = (lessonId: string) => {
Dict.get(state.notes, lessonId)
}
(state, selectLesson, updateNote, closePen, getNote)
}