Page MenuHomePhorge

D8036.1765146188.diff
No OneTemporary

Size
4 KB
Referenced Files
None
Subscribers
None

D8036.1765146188.diff

diff --git a/native/chat/chat-input-bar.react.js b/native/chat/chat-input-bar.react.js
--- a/native/chat/chat-input-bar.react.js
+++ b/native/chat/chat-input-bar.react.js
@@ -734,6 +734,7 @@
updateText = (text: string) => {
this.setState({ text, textEdited: true });
+ this.props.inputState?.setEditedMessageChanged(this.isMessageEdited(text));
if (this.isEditMode() || this.state.isExitingEditMode) {
return;
}
@@ -843,8 +844,8 @@
return editState && editState.editedMessage !== null && isThisThread;
};
- isMessageEdited = () => {
- let text = this.state.text;
+ isMessageEdited = newText => {
+ let text = newText ?? this.state.text;
text = trimMessage(text);
const originalText = this.props.editedMessageInfo?.text;
return text !== originalText;
diff --git a/native/chat/text-message-tooltip-modal.react.js b/native/chat/text-message-tooltip-modal.react.js
--- a/native/chat/text-message-tooltip-modal.react.js
+++ b/native/chat/text-message-tooltip-modal.react.js
@@ -81,7 +81,8 @@
const enterEditMode = () => {
inputState.setEditedMessage(messageInfo, updateInputBar);
};
- if (inputState.editState.editedMessage) {
+ const { editedMessage, isEditedMessageChanged } = inputState.editState;
+ if (isEditedMessageChanged && editedMessage) {
exitEditAlert(enterEditMode);
} else {
enterEditMode();
diff --git a/native/chat/text-message.react.js b/native/chat/text-message.react.js
--- a/native/chat/text-message.react.js
+++ b/native/chat/text-message.react.js
@@ -22,6 +22,7 @@
import textMessageSendFailed from './text-message-send-failed.js';
import { getMessageTooltipKey } from './utils.js';
import { ChatContext, type ChatContextType } from '../chat/chat-context.js';
+import { InputStateContext } from '../input/input-state.js';
import { MarkdownContext } from '../markdown/markdown-context.js';
import type { AppNavigationProp } from '../navigation/app-navigator.react';
import {
@@ -248,6 +249,7 @@
const overlayContext = React.useContext(OverlayContext);
const chatContext = React.useContext(ChatContext);
const markdownContext = React.useContext(MarkdownContext);
+ const inputContext = React.useContext(InputStateContext);
invariant(markdownContext, 'markdownContext should be set');
const { linkModalActive, clearMarkdownContextData } = markdownContext;
@@ -264,10 +266,12 @@
props.item.messageInfo,
);
- const canEditMessage = useCanEditMessage(
- props.item.threadInfo,
- props.item.messageInfo,
- );
+ const isThisMessageEdited =
+ inputContext?.editState.editedMessage?.id === props.item.messageInfo.id;
+
+ const canEditMessage =
+ useCanEditMessage(props.item.threadInfo, props.item.messageInfo) &&
+ !isThisMessageEdited;
const canTogglePins = threadHasPermission(
props.item.threadInfo,
diff --git a/native/input/input-state-container.react.js b/native/input/input-state-container.react.js
--- a/native/input/input-state-container.react.js
+++ b/native/input/input-state-container.react.js
@@ -175,6 +175,7 @@
pendingUploads: {},
editState: {
editedMessage: null,
+ isEditedMessageChanged: false,
},
};
sendCallbacks: Array<() => void> = [];
@@ -423,6 +424,7 @@
setPendingThreadUpdateHandler: this.setPendingThreadUpdateHandler,
editState,
setEditedMessage: this.setEditedMessage,
+ setEditedMessageChanged: this.setEditedMessageChanged,
scrollToMessage: this.scrollToMessage,
addScrollToMessageListener: this.addScrollToMessageListener,
removeScrollToMessageListener: this.removeScrollToMessageListener,
@@ -1427,12 +1429,18 @@
setEditedMessage = (editedMessage: ?MessageInfo, callback?: () => void) => {
this.setState(
{
- editState: { editedMessage },
+ editState: { editedMessage, isEditedMessageChanged: false },
},
callback,
);
};
+ setEditedMessageChanged = (isEditedMessageChanged: boolean) => {
+ this.setState(prevState => ({
+ editState: { ...prevState.editState, isEditedMessageChanged },
+ }));
+ };
+
removeEditInputMessageListener = (
callbackEditInputBar: (params: EditInputBarMessageParameters) => void,
) => {
diff --git a/native/input/input-state.js b/native/input/input-state.js
--- a/native/input/input-state.js
+++ b/native/input/input-state.js
@@ -25,6 +25,7 @@
export type EditState = {
+editedMessage: ?MessageInfo,
+ +isEditedMessageChanged: boolean,
};
export type EditInputBarMessageParameters = {
@@ -69,6 +70,7 @@
editedMessage: ?MessageInfo,
callback?: () => void,
) => void,
+ +setEditedMessageChanged: (isEditedMessageChanged: boolean) => void,
+scrollToMessage: (messageKey: string) => void,
+addScrollToMessageListener: ((messageKey: string) => void) => void,
+removeScrollToMessageListener: ((messageKey: string) => void) => void,

File Metadata

Mime Type
text/plain
Expires
Sun, Dec 7, 10:23 PM (14 h, 33 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5842293
Default Alt Text
D8036.1765146188.diff (4 KB)

Event Timeline