diff --git a/web/chat/chat-input-text-area.react.js b/web/chat/chat-input-text-area.react.js --- a/web/chat/chat-input-text-area.react.js +++ b/web/chat/chat-input-text-area.react.js @@ -10,11 +10,12 @@ +escape?: () => void, +focus: boolean, +currentText: string, + +setCurrentText: (text: string) => void, }; const ChatInputTextArea: React.ComponentType = React.memo( function ChatInputTextArea(props: Props) { - const { currentText, focus, escape, send } = props; + const { currentText, focus, escape, send, setCurrentText } = props; const textareaRef = React.useRef(null); const focusAndUpdateText = React.useCallback(() => { @@ -71,7 +72,10 @@ } }; - const onChangeMessageText = () => { + const onChangeMessageText = ( + event: SyntheticEvent, + ) => { + setCurrentText(event.currentTarget.value); updateHeight(); }; diff --git a/web/chat/edit-message-provider.js b/web/chat/edit-message-provider.js --- a/web/chat/edit-message-provider.js +++ b/web/chat/edit-message-provider.js @@ -18,6 +18,7 @@ +renderEditModal: (params: EditState) => void, +clearEditModal: () => void, +editState: ?EditState, + +setDraft: string => void, }; const EditModalContext: React.Context = @@ -25,6 +26,7 @@ renderEditModal: () => {}, clearEditModal: () => {}, editState: null, + setDraft: () => {}, }); type Props = { @@ -48,13 +50,27 @@ return null; }, []); + const setDraft = React.useCallback( + (draft: ?string) => { + if (!editState) { + return; + } + setEditState({ + ...editState, + editedMessageDraft: draft, + }); + }, + [editState, setEditState], + ); + const value = React.useMemo( () => ({ renderEditModal, clearEditModal: clearEditModal, editState, + setDraft, }), - [renderEditModal, clearEditModal, editState], + [renderEditModal, clearEditModal, editState, setDraft], ); const modalOverlay = React.useMemo(() => { diff --git a/web/chat/edit-text-message.react.js b/web/chat/edit-text-message.react.js --- a/web/chat/edit-text-message.react.js +++ b/web/chat/edit-text-message.react.js @@ -27,7 +27,7 @@ function EditTextMessage(props: Props): React.Node { const { background, threadInfo } = props; - const { editState, clearEditModal } = useEditModalContext(); + const { editState, clearEditModal, setDraft } = useEditModalContext(); const editedMessageDraft = editState?.editedMessageDraft ?? ''; const threadColor = threadInfo.color; @@ -58,6 +58,7 @@