Fixes @mention draft changes
This commit is contained in:
parent
fa938e8c7d
commit
e3d9e6b906
3 changed files with 23 additions and 9 deletions
|
@ -369,7 +369,7 @@ export function CompositionArea({
|
|||
const previousConversationId = usePrevious(conversationId, conversationId);
|
||||
useEffect(() => {
|
||||
if (!draftText) {
|
||||
inputApiRef.current?.setText('');
|
||||
inputApiRef.current?.setContents('');
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -377,8 +377,8 @@ export function CompositionArea({
|
|||
return;
|
||||
}
|
||||
|
||||
inputApiRef.current?.setText(draftText, true);
|
||||
}, [conversationId, draftText, previousConversationId]);
|
||||
inputApiRef.current?.setContents(draftText, draftBodyRanges, true);
|
||||
}, [conversationId, draftBodyRanges, draftText, previousConversationId]);
|
||||
|
||||
const handleToggleLarge = useCallback(() => {
|
||||
setLarge(l => !l);
|
||||
|
|
|
@ -7,7 +7,7 @@ import Delta from 'quill-delta';
|
|||
import ReactQuill from 'react-quill';
|
||||
import classNames from 'classnames';
|
||||
import { Manager, Reference } from 'react-popper';
|
||||
import type { KeyboardStatic, RangeStatic } from 'quill';
|
||||
import type { DeltaStatic, KeyboardStatic, RangeStatic } from 'quill';
|
||||
import Quill from 'quill';
|
||||
|
||||
import { MentionCompletion } from '../quill/mentions/completion';
|
||||
|
@ -60,7 +60,11 @@ type HistoryStatic = {
|
|||
export type InputApi = {
|
||||
focus: () => void;
|
||||
insertEmoji: (e: EmojiPickDataType) => void;
|
||||
setText: (text: string, cursorToEnd?: boolean) => void;
|
||||
setContents: (
|
||||
text: string,
|
||||
draftBodyRanges?: DraftBodyRangesType,
|
||||
cursorToEnd?: boolean
|
||||
) => void;
|
||||
reset: () => void;
|
||||
submit: () => void;
|
||||
};
|
||||
|
@ -234,15 +238,25 @@ export function CompositionInput(props: Props): React.ReactElement {
|
|||
historyModule.clear();
|
||||
};
|
||||
|
||||
const setText = (text: string, cursorToEnd?: boolean) => {
|
||||
const setContents = (
|
||||
text: string,
|
||||
bodyRanges?: DraftBodyRangesType,
|
||||
cursorToEnd?: boolean
|
||||
) => {
|
||||
const quill = quillRef.current;
|
||||
|
||||
if (quill === undefined) {
|
||||
return;
|
||||
}
|
||||
|
||||
const delta = generateDelta(text || '', bodyRanges || []);
|
||||
|
||||
canSendRef.current = true;
|
||||
quill.setText(text);
|
||||
// We need to cast here because we use @types/quill@1.3.10 which has types
|
||||
// for quill-delta even though quill-delta is written in TS and has its own
|
||||
// types. @types/quill@2.0.0 fixes the issue but react-quill has a peer-dep
|
||||
// on the older quill types.
|
||||
quill.setContents(delta as unknown as DeltaStatic);
|
||||
if (cursorToEnd) {
|
||||
quill.setSelection(quill.getLength(), 0);
|
||||
}
|
||||
|
@ -276,7 +290,7 @@ export function CompositionInput(props: Props): React.ReactElement {
|
|||
inputApi.current = {
|
||||
focus,
|
||||
insertEmoji,
|
||||
setText,
|
||||
setContents,
|
||||
reset,
|
||||
submit,
|
||||
};
|
||||
|
|
|
@ -112,7 +112,7 @@ export function CompositionTextArea({
|
|||
// was modifying text in the middle of the editor
|
||||
// a better solution would be to prevent the change to begin with, but
|
||||
// quill makes this VERY difficult
|
||||
inputEl.setText(newValueSized, true);
|
||||
inputEl.setContents(newValueSized, bodyRanges, true);
|
||||
}
|
||||
}
|
||||
setCharacterCount(newCharacterCount);
|
||||
|
|
Loading…
Reference in a new issue