chore: traverse nodes to upsert tags

This commit is contained in:
Steven
2024-01-02 08:56:30 +08:00
parent c797099950
commit f74fa97b4a
7 changed files with 71 additions and 65 deletions

View File

@ -281,6 +281,7 @@ const MemoEditor = (props: Props) => {
id: memo.id,
relations: state.relationList,
});
await memoStore.getOrFetchMemoById(memo.id, { skipCache: true });
if (onConfirm) {
onConfirm(memo.id);
}
@ -310,6 +311,7 @@ const MemoEditor = (props: Props) => {
id: memo.id,
relations: state.relationList,
});
await memoStore.getOrFetchMemoById(memo.id, { skipCache: true });
if (onConfirm) {
onConfirm(memo.id);
}
@ -319,57 +321,15 @@ const MemoEditor = (props: Props) => {
console.error(error);
toast.error(error.response.data.message);
}
setState((state) => {
return {
...state,
isRequesting: false,
resourceList: [],
relationList: [],
};
});
setState((prevState) => ({
...prevState,
resourceList: [],
}));
};
const handleCheckBoxBtnClick = () => {
if (!editorRef.current) {
return;
}
const currentPosition = editorRef.current?.getCursorPosition();
const currentLineNumber = editorRef.current?.getCursorLineNumber();
const currentLine = editorRef.current?.getLine(currentLineNumber);
let newLine = "";
let cursorChange = 0;
if (/^- \[( |x|X)\] /.test(currentLine)) {
newLine = currentLine.replace(/^- \[( |x|X)\] /, "");
cursorChange = -6;
} else if (/^\d+\. |- /.test(currentLine)) {
const match = currentLine.match(/^\d+\. |- /) ?? [""];
newLine = currentLine.replace(/^\d+\. |- /, "- [ ] ");
cursorChange = -match[0].length + 6;
} else {
newLine = "- [ ] " + currentLine;
cursorChange = 6;
}
editorRef.current?.setLine(currentLineNumber, newLine);
editorRef.current.setCursorPosition(currentPosition + cursorChange);
editorRef.current?.scrollToCursor();
};
const handleCodeBlockBtnClick = () => {
if (!editorRef.current) {
return;
}
const cursorPosition = editorRef.current.getCursorPosition();
const prevValue = editorRef.current.getContent().slice(0, cursorPosition);
if (prevValue === "" || prevValue.endsWith("\n")) {
editorRef.current?.insertText("", "```\n", "\n```");
} else {
editorRef.current?.insertText("", "\n```\n", "\n```");
}
editorRef.current?.scrollToCursor();
};
const handleTagSelectorClick = useCallback((tag: string) => {
@ -419,18 +379,6 @@ const MemoEditor = (props: Props) => {
>
<Icon.Link className="w-5 h-5 mx-auto" />
</IconButton>
<IconButton
className="flex flex-row justify-center items-center p-1 w-auto h-auto mr-1 select-none rounded cursor-pointer text-gray-600 dark:text-gray-400 hover:bg-gray-300 dark:hover:bg-zinc-800 hover:shadow"
onClick={handleCheckBoxBtnClick}
>
<Icon.CheckSquare className="w-5 h-5 mx-auto" />
</IconButton>
<IconButton
className="flex flex-row justify-center items-center p-1 w-auto h-auto mr-1 select-none rounded cursor-pointer text-gray-600 dark:text-gray-400 hover:bg-gray-300 dark:hover:bg-zinc-800 hover:shadow"
onClick={handleCodeBlockBtnClick}
>
<Icon.Code className="w-5 h-5 mx-auto" />
</IconButton>
</div>
</div>
<ResourceListView resourceList={state.resourceList} setResourceList={handleSetResourceList} />
@ -456,7 +404,7 @@ const MemoEditor = (props: Props) => {
</Select>
</div>
<div className="shrink-0 flex flex-row justify-end items-center">
<Button color="success" disabled={!allowSave} onClick={handleSaveBtnClick}>
<Button color="success" disabled={!allowSave} loading={state.isRequesting} onClick={handleSaveBtnClick}>
{t("editor.save")}
</Button>
</div>