From e35e836052d4f918c36f4c017aabf6a44534d8ae Mon Sep 17 00:00:00 2001 From: Robin Townsend Date: Thu, 24 Jun 2021 18:45:23 -0400 Subject: [PATCH] Convert TextualEvent and SearchResultTile to TypeScript Signed-off-by: Robin Townsend --- .../{TextualEvent.js => TextualEvent.tsx} | 24 ++++---- ...archResultTile.js => SearchResultTile.tsx} | 61 +++++++++---------- 2 files changed, 41 insertions(+), 44 deletions(-) rename src/components/views/messages/{TextualEvent.js => TextualEvent.tsx} (70%) rename src/components/views/rooms/{SearchResultTile.js => SearchResultTile.tsx} (64%) diff --git a/src/components/views/messages/TextualEvent.js b/src/components/views/messages/TextualEvent.tsx similarity index 70% rename from src/components/views/messages/TextualEvent.js rename to src/components/views/messages/TextualEvent.tsx index 0cdd573076..e96390d7bc 100644 --- a/src/components/views/messages/TextualEvent.js +++ b/src/components/views/messages/TextualEvent.tsx @@ -15,26 +15,24 @@ See the License for the specific language governing permissions and limitations under the License. */ -import React from 'react'; -import PropTypes from 'prop-types'; +import React from "react"; +import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import RoomContext from "../../../contexts/RoomContext"; import * as TextForEvent from "../../../TextForEvent"; -import {replaceableComponent} from "../../../utils/replaceableComponent"; +import { replaceableComponent } from "../../../utils/replaceableComponent"; + +interface IProps { + // The event to show + mxEvent: MatrixEvent; +} @replaceableComponent("views.messages.TextualEvent") -export default class TextualEvent extends React.Component { - static propTypes = { - /* the MatrixEvent to show */ - mxEvent: PropTypes.object.isRequired, - }; - +export default class TextualEvent extends React.Component { static contextType = RoomContext; - render() { + public render() { const text = TextForEvent.textForEvent(this.props.mxEvent, this.context?.showHiddenEventsInTimeline); if (text == null || text.length === 0) return null; - return ( -
{ text }
- ); + return
{ text }
; } } diff --git a/src/components/views/rooms/SearchResultTile.js b/src/components/views/rooms/SearchResultTile.tsx similarity index 64% rename from src/components/views/rooms/SearchResultTile.js rename to src/components/views/rooms/SearchResultTile.tsx index 2963265317..8af0fa5abd 100644 --- a/src/components/views/rooms/SearchResultTile.js +++ b/src/components/views/rooms/SearchResultTile.tsx @@ -15,41 +15,41 @@ See the License for the specific language governing permissions and limitations under the License. */ -import React from 'react'; -import PropTypes from 'prop-types'; -import * as sdk from '../../../index'; +import React from "react"; +import { SearchResult } from "matrix-js-sdk/src/models/search-result"; import RoomContext from "../../../contexts/RoomContext"; -import {haveTileForEvent} from "./EventTile"; +import { haveTileForEvent } from "./EventTile"; import SettingsStore from "../../../settings/SettingsStore"; -import {UIFeature} from "../../../settings/UIFeature"; -import {replaceableComponent} from "../../../utils/replaceableComponent"; +import { UIFeature } from "../../../settings/UIFeature"; +import { replaceableComponent } from "../../../utils/replaceableComponent"; +import { RoomPermalinkCreator } from "../../../utils/permalinks/Permalinks"; +import DateSeparator from "../messages/DateSeparator"; +import EventTile from "./EventTile"; + +interface IProps { + // The details of this result + searchResult: SearchResult; + // Strings to be highlighted in the results + searchHighlights?: string[]; + // href for the highlights in this result + resultLink?: string; + onHeightChanged: () => void; + permalinkCreator: RoomPermalinkCreator; +} @replaceableComponent("views.rooms.SearchResultTile") -export default class SearchResultTile extends React.Component { - static propTypes = { - // a matrix-js-sdk SearchResult containing the details of this result - searchResult: PropTypes.object.isRequired, - - // a list of strings to be highlighted in the results - searchHighlights: PropTypes.array, - - // href for the highlights in this result - resultLink: PropTypes.string, - - onHeightChanged: PropTypes.func, - }; - +export default class SearchResultTile extends React.Component { static contextType = RoomContext; - render() { - const DateSeparator = sdk.getComponent('messages.DateSeparator'); - const EventTile = sdk.getComponent('rooms.EventTile'); + public render() { const result = this.props.searchResult; const mxEv = result.context.getEvent(); const eventId = mxEv.getId(); const ts1 = mxEv.getTs(); const ret = []; + const layout = SettingsStore.getValue("layout"); + const isTwelveHour = SettingsStore.getValue("showTwelveHourTimestamps"); const alwaysShowTimestamps = SettingsStore.getValue("alwaysShowTimestamps"); const timeline = result.context.getTimeline(); @@ -61,25 +61,24 @@ export default class SearchResultTile extends React.Component { highlights = this.props.searchHighlights; } if (haveTileForEvent(ev, this.context?.showHiddenEventsInTimeline)) { - ret.push(( + ret.push( - )); + />, + ); } } - return ( -
  • - { ret } -
  • ); + + return
  • { ret }
  • ; } }