Files
starr-philproperties/lib/bs/src/modules/client/hooks/rescript/useAnnotation.js
T
kennethobsequio fbef7cb6e6 ready to test
Testing

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

54 lines
1.2 KiB
JavaScript

// Generated by ReScript, PLEASE EDIT WITH CARE
import * as React from "react";
import * as AnnotationTypes from "./AnnotationTypes.js";
import * as AnnotationStorage from "./AnnotationStorage.js";
function use(courseId) {
let match = React.useState(() => AnnotationTypes.initialState);
let setState = match[1];
let state = match[0];
let selectLesson = lesson => {
let savedNote = AnnotationStorage.loadNote(courseId, lesson.id);
let notes = {};
if (savedNote !== undefined) {
notes[lesson.id] = savedNote;
}
setState(param => ({
selectedLesson: lesson,
isPenOpen: true,
notes: notes
}));
};
let updateNote = (lessonId, note) => {
AnnotationStorage.saveNote(courseId, lessonId, note);
setState(prev => {
let notes = {};
notes[lessonId] = note;
return {
selectedLesson: prev.selectedLesson,
isPenOpen: prev.isPenOpen,
notes: notes
};
});
};
let closePen = () => setState(prev => ({
selectedLesson: undefined,
isPenOpen: false,
notes: prev.notes
}));
let getNote = lessonId => state.notes[lessonId];
return [
state,
selectLesson,
updateNote,
closePen,
getNote
];
}
export {
use,
}
/* react Not a pure module */