feat: cache editing memo id (#388)

* feat: cache editing memo id

* chore: update
This commit is contained in:
boojack
2022-10-31 21:39:22 +08:00
committed by GitHub
parent ef5492074e
commit 9d8c9609c3
6 changed files with 46 additions and 27 deletions

View File

@ -47,6 +47,13 @@ const MemoEditor: React.FC = () => {
const editorFontStyle = user?.setting.editorFontStyle || "normal";
const mobileEditorStyle = user?.setting.mobileEditorStyle || "normal";
useEffect(() => {
const { editingMemoIdCache } = storage.get(["editingMemoIdCache"]);
if (editingMemoIdCache) {
editorStateService.setEditMemoWithId(editingMemoIdCache);
}
}, []);
useEffect(() => {
if (editorState.markMemoId && editorState.markMemoId !== UNKNOWN_ID) {
const editorCurrentValue = editorRef.current?.getContent();
@ -62,18 +69,26 @@ const MemoEditor: React.FC = () => {
editorState.editMemoId !== UNKNOWN_ID &&
editorState.editMemoId !== prevGlobalStateRef.current.editMemoId
) {
const memo = memoService.getMemoById(editorState.editMemoId ?? UNKNOWN_ID);
if (memo) {
setState({
...state,
resourceList: memo.resourceList,
});
editorRef.current?.setContent(memo.content ?? "");
editorRef.current?.focus();
}
memoService.getMemoById(editorState.editMemoId ?? UNKNOWN_ID).then((memo) => {
if (memo) {
setState({
...state,
resourceList: memo.resourceList,
});
editorRef.current?.setContent(memo.content ?? "");
editorRef.current?.focus();
}
});
}
prevGlobalStateRef.current = editorState;
if (editorState.editMemoId) {
storage.set({
editingMemoIdCache: editorState.editMemoId,
});
} else {
storage.remove(["editingMemoIdCache"]);
}
}, [state, editorState.editMemoId]);
const handleKeyDown = (event: React.KeyboardEvent) => {
@ -175,7 +190,7 @@ const MemoEditor: React.FC = () => {
try {
const { editMemoId } = editorStateService.getState();
if (editMemoId && editMemoId !== UNKNOWN_ID) {
const prevMemo = memoService.getMemoById(editMemoId ?? UNKNOWN_ID);
const prevMemo = await memoService.getMemoById(editMemoId ?? UNKNOWN_ID);
if (prevMemo) {
await memoService.patchMemo({
@ -206,7 +221,7 @@ const MemoEditor: React.FC = () => {
editorRef.current?.setContent("");
};
const handleCancelEditing = () => {
const handleCancelEdit = () => {
setState({
...state,
resourceList: [],
@ -348,7 +363,7 @@ const MemoEditor: React.FC = () => {
>
<div className={`tip-container ${isEditing ? "" : "!hidden"}`}>
<span className="tip-text">{t("editor.editing")}</span>
<button className="cancel-btn" onClick={handleCancelEditing}>
<button className="cancel-btn" onClick={handleCancelEdit}>
{t("common.cancel")}
</button>
</div>