From 9b6495903cb25f3f32051948af2061bf27b8c6b6 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 13 Jul 2021 18:35:56 -0600 Subject: [PATCH] Use TileShape enum more universally --- src/components/views/elements/ReplyThread.js | 6 ++--- src/components/views/messages/MFileBody.js | 5 +++-- src/components/views/messages/MessageEvent.js | 2 +- src/components/views/rooms/EventTile.tsx | 22 +++++++++++-------- src/components/views/rooms/ReplyPreview.js | 5 +++-- 5 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/components/views/elements/ReplyThread.js b/src/components/views/elements/ReplyThread.js index 2047de6c58..4dcdf70845 100644 --- a/src/components/views/elements/ReplyThread.js +++ b/src/components/views/elements/ReplyThread.js @@ -1,7 +1,6 @@ /* -Copyright 2017 New Vector Ltd +Copyright 2017 - 2021 The Matrix.org Foundation C.I.C. Copyright 2019 Michael Telatynski <7t3chguy@gmail.com> -Copyright 2019 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -32,6 +31,7 @@ import sanitizeHtml from "sanitize-html"; import { UIFeature } from "../../../settings/UIFeature"; import { PERMITTED_URL_SCHEMES } from "../../../HtmlUtils"; import { replaceableComponent } from "../../../utils/replaceableComponent"; +import { TileShape } from "../rooms/EventTile"; // This component does no cycle detection, simply because the only way to make such a cycle would be to // craft event_id's, using a homeserver that generates predictable event IDs; even then the impact would @@ -384,7 +384,7 @@ export default class ReplyThread extends React.Component { { dateSep } {placeholder} diff --git a/src/components/views/messages/MessageEvent.js b/src/components/views/messages/MessageEvent.js index 52a0b9ad08..4168744d42 100644 --- a/src/components/views/messages/MessageEvent.js +++ b/src/components/views/messages/MessageEvent.js @@ -42,7 +42,7 @@ export default class MessageEvent extends React.Component { onHeightChanged: PropTypes.func, /* the shape of the tile, used */ - tileShape: PropTypes.string, + tileShape: PropTypes.string, // TODO: Use TileShape enum /* the maximum image height to use, if the event is an image */ maxImageHeight: PropTypes.number, diff --git a/src/components/views/rooms/EventTile.tsx b/src/components/views/rooms/EventTile.tsx index 7cceef4a86..1deb1c6a14 100644 --- a/src/components/views/rooms/EventTile.tsx +++ b/src/components/views/rooms/EventTile.tsx @@ -902,7 +902,7 @@ export default class EventTile extends React.Component { mx_EventTile_12hr: this.props.isTwelveHour, // Note: we keep the `sending` state class for tests, not for our styles mx_EventTile_sending: !isEditing && isSending, - mx_EventTile_highlight: this.props.tileShape === 'notif' ? false : this.shouldHighlight(), + mx_EventTile_highlight: this.props.tileShape === TileShape.Notif ? false : this.shouldHighlight(), mx_EventTile_selected: this.props.isSelectedEvent, mx_EventTile_continuation: this.props.tileShape ? '' : this.props.continuation, mx_EventTile_last: this.props.last, @@ -935,7 +935,7 @@ export default class EventTile extends React.Component { let avatarSize; let needsSenderProfile; - if (this.props.tileShape === "notif") { + if (this.props.tileShape === TileShape.Notif) { avatarSize = 24; needsSenderProfile = true; } else if (tileHandler === 'messages.RoomCreate' || isBubbleMessage) { @@ -949,7 +949,7 @@ export default class EventTile extends React.Component { } else if (this.props.layout == Layout.IRC) { avatarSize = 14; needsSenderProfile = true; - } else if (this.props.continuation && this.props.tileShape !== "file_grid") { + } else if (this.props.continuation && this.props.tileShape !== TileShape.FileGrid) { // no avatar or sender profile for continuation messages avatarSize = 0; needsSenderProfile = false; @@ -979,7 +979,11 @@ export default class EventTile extends React.Component { } if (needsSenderProfile) { - if (!this.props.tileShape || this.props.tileShape === 'reply' || this.props.tileShape === 'reply_preview') { + if ( + !this.props.tileShape + || this.props.tileShape === TileShape.Reply + || this.props.tileShape === TileShape.ReplyPreview + ) { sender = { } switch (this.props.tileShape) { - case 'notif': { + case TileShape.Notif: { const room = this.context.getRoom(this.props.mxEvent.getRoomId()); return React.createElement(this.props.as || "li", { "className": classes, @@ -1097,7 +1101,7 @@ export default class EventTile extends React.Component { , ]); } - case 'file_grid': { + case TileShape.FileGrid: { return React.createElement(this.props.as || "li", { "className": classes, "aria-live": ariaLive, @@ -1128,10 +1132,10 @@ export default class EventTile extends React.Component { ]); } - case 'reply': - case 'reply_preview': { + case TileShape.Reply: + case TileShape.ReplyPreview: { let thread; - if (this.props.tileShape === 'reply_preview') { + if (this.props.tileShape === TileShape.ReplyPreview) { thread = ReplyThread.makeThread( this.props.mxEvent, this.props.onHeightChanged, diff --git a/src/components/views/rooms/ReplyPreview.js b/src/components/views/rooms/ReplyPreview.js index f9c8e622a7..e1e5a0a846 100644 --- a/src/components/views/rooms/ReplyPreview.js +++ b/src/components/views/rooms/ReplyPreview.js @@ -1,5 +1,5 @@ /* -Copyright 2017 New Vector Ltd +Copyright 2017 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -24,6 +24,7 @@ import PropTypes from "prop-types"; import { RoomPermalinkCreator } from "../../../utils/permalinks/Permalinks"; import { UIFeature } from "../../../settings/UIFeature"; import { replaceableComponent } from "../../../utils/replaceableComponent"; +import { TileShape } from "./EventTile"; function cancelQuoting() { dis.dispatch({ @@ -90,7 +91,7 @@ export default class ReplyPreview extends React.Component {