mirror of
https://github.com/rgrgogu/new_starr.git
synced 2026-09-27 00:12:54 +08:00
54 lines
1.2 KiB
JavaScript
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 */
|