mirror of
https://github.com/rgrgogu/new_starr.git
synced 2026-09-27 00:12:54 +08:00
git-subtree-dir: apps/web git-subtree-mainline:eaa6d2276agit-subtree-split:459af9d46a
38 lines
988 B
Plaintext
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)
|
|
} |