mirror of
https://github.com/docmost/docmost.git
synced 2026-05-20 00:14:10 +08:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5f8a567aa0 | |||
| f6a8247c48 | |||
| 7879e1f600 |
@@ -84,9 +84,14 @@ const CommentEditor = forwardRef(
|
|||||||
autofocus: (autofocus && "end") || false,
|
autofocus: (autofocus && "end") || false,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Sync content from props for read-only editors (e.g. when updated via
|
||||||
|
// websocket on another browser). Skip for editable editors to avoid
|
||||||
|
// resetting the cursor position on every keystroke.
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
commentEditor.commands.setContent(defaultContent);
|
if (!editable && commentEditor && defaultContent) {
|
||||||
}, [defaultContent]);
|
commentEditor.commands.setContent(defaultContent);
|
||||||
|
}
|
||||||
|
}, [defaultContent, editable, commentEditor]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { Group, Text, Box, Badge } from "@mantine/core";
|
import { Group, Text, Box, Badge } from "@mantine/core";
|
||||||
import React, { useEffect, useState } from "react";
|
import React, { useEffect, useRef, useState } from "react";
|
||||||
import classes from "./comment.module.css";
|
import classes from "./comment.module.css";
|
||||||
import { useAtom, useAtomValue } from "jotai";
|
import { useAtom, useAtomValue } from "jotai";
|
||||||
import { timeAgo } from "@/lib/time";
|
import { timeAgo } from "@/lib/time";
|
||||||
@@ -40,6 +40,7 @@ function CommentListItem({
|
|||||||
const [isLoading, setIsLoading] = useState(false);
|
const [isLoading, setIsLoading] = useState(false);
|
||||||
const editor = useAtomValue(pageEditorAtom);
|
const editor = useAtomValue(pageEditorAtom);
|
||||||
const [content, setContent] = useState<string>(comment.content);
|
const [content, setContent] = useState<string>(comment.content);
|
||||||
|
const editContentRef = useRef<any>(null);
|
||||||
const updateCommentMutation = useUpdateCommentMutation();
|
const updateCommentMutation = useUpdateCommentMutation();
|
||||||
const deleteCommentMutation = useDeleteCommentMutation(comment.pageId);
|
const deleteCommentMutation = useDeleteCommentMutation(comment.pageId);
|
||||||
const resolveCommentMutation = useResolveCommentMutation();
|
const resolveCommentMutation = useResolveCommentMutation();
|
||||||
@@ -56,9 +57,13 @@ function CommentListItem({
|
|||||||
setIsLoading(true);
|
setIsLoading(true);
|
||||||
const commentToUpdate = {
|
const commentToUpdate = {
|
||||||
commentId: comment.id,
|
commentId: comment.id,
|
||||||
content: JSON.stringify(content),
|
content: JSON.stringify(editContentRef.current ?? content),
|
||||||
};
|
};
|
||||||
await updateCommentMutation.mutateAsync(commentToUpdate);
|
await updateCommentMutation.mutateAsync(commentToUpdate);
|
||||||
|
if (editContentRef.current) {
|
||||||
|
setContent(editContentRef.current);
|
||||||
|
editContentRef.current = null;
|
||||||
|
}
|
||||||
setIsEditing(false);
|
setIsEditing(false);
|
||||||
|
|
||||||
emit({
|
emit({
|
||||||
@@ -128,6 +133,7 @@ function CommentListItem({
|
|||||||
setIsEditing(true);
|
setIsEditing(true);
|
||||||
}
|
}
|
||||||
function cancelEdit() {
|
function cancelEdit() {
|
||||||
|
editContentRef.current = null;
|
||||||
setIsEditing(false);
|
setIsEditing(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -194,7 +200,7 @@ function CommentListItem({
|
|||||||
<CommentEditor
|
<CommentEditor
|
||||||
defaultContent={content}
|
defaultContent={content}
|
||||||
editable={true}
|
editable={true}
|
||||||
onUpdate={(newContent: any) => setContent(newContent)}
|
onUpdate={(newContent: any) => { editContentRef.current = newContent; }}
|
||||||
onSave={handleUpdateComment}
|
onSave={handleUpdateComment}
|
||||||
autofocus={true}
|
autofocus={true}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -464,7 +464,8 @@ export class AttachmentController {
|
|||||||
'Cache-Control': `${cacheScope}, max-age=3600`,
|
'Cache-Control': `${cacheScope}, max-age=3600`,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (fileSize) {
|
const isSvg = attachment.fileExt === '.svg';
|
||||||
|
if (fileSize && !isSvg) {
|
||||||
res.header('Content-Length', fileSize);
|
res.header('Content-Length', fileSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -99,6 +99,7 @@ export class AttachmentService {
|
|||||||
if (isUpdate) {
|
if (isUpdate) {
|
||||||
attachment = await this.attachmentRepo.updateAttachment(
|
attachment = await this.attachmentRepo.updateAttachment(
|
||||||
{
|
{
|
||||||
|
fileSize: preparedFile.fileSize,
|
||||||
updatedAt: new Date(),
|
updatedAt: new Date(),
|
||||||
},
|
},
|
||||||
attachmentId,
|
attachmentId,
|
||||||
|
|||||||
Reference in New Issue
Block a user