diff --git a/src/utils/EventUtils.ts b/src/utils/EventUtils.ts index 1fdc3a5156..7ad323ea1d 100644 --- a/src/utils/EventUtils.ts +++ b/src/utils/EventUtils.ts @@ -14,13 +14,13 @@ See the License for the specific language governing permissions and limitations under the License. */ -import { MatrixEvent, EventStatus } from 'matrix-js-sdk/src/models/event'; +import { EventStatus, MatrixEvent } from 'matrix-js-sdk/src/models/event'; import { MatrixClientPeg } from '../MatrixClientPeg'; import shouldHideEvent from "../shouldHideEvent"; import { getHandlerTile, haveTileForEvent } from "../components/views/rooms/EventTile"; import SettingsStore from "../settings/SettingsStore"; -import { EventType } from "matrix-js-sdk/src/@types/event"; +import { EventType, MsgType, RelationType } from "matrix-js-sdk/src/@types/event"; import { MatrixClient } from 'matrix-js-sdk/src/client'; import { Thread } from 'matrix-js-sdk/src/models/thread'; import { logger } from 'matrix-js-sdk/src/logger'; @@ -55,14 +55,17 @@ export function isContentActionable(mxEvent: MatrixEvent): boolean { } export function canEditContent(mxEvent: MatrixEvent): boolean { - if (mxEvent.status === EventStatus.CANCELLED || mxEvent.getType() !== "m.room.message" || mxEvent.isRedacted()) { + if (mxEvent.status === EventStatus.CANCELLED || + mxEvent.getType() !== EventType.RoomMessage || + mxEvent.isRedacted() || + mxEvent.isRelation(RelationType.Replace) || + mxEvent.getSender() !== MatrixClientPeg.get().getUserId() + ) { return false; } - const content = mxEvent.getOriginalContent(); - const { msgtype } = content; - return (msgtype === "m.text" || msgtype === "m.emote") && - content.body && typeof content.body === 'string' && - mxEvent.getSender() === MatrixClientPeg.get().getUserId(); + + const { msgtype, body } = mxEvent.getOriginalContent(); + return (msgtype === MsgType.Text || msgtype === MsgType.Emote) && body && typeof body === 'string'; } export function canEditOwnEvent(mxEvent: MatrixEvent): boolean {