From 3a18fd8f716b19e029c9693f5a544a94c7ab875d Mon Sep 17 00:00:00 2001 From: Germain Date: Wed, 12 Jan 2022 17:16:00 +0000 Subject: [PATCH] Add 'from a thread' copy to search tile result (#7525) --- res/css/views/rooms/_EventTile.scss | 36 ++++++++++----- src/components/views/rooms/EventTile.tsx | 46 ++++++++++--------- .../views/rooms/SearchResultTile.tsx | 3 +- src/contexts/RoomContext.ts | 1 + src/i18n/strings/en_EN.json | 1 + 5 files changed, 52 insertions(+), 35 deletions(-) diff --git a/res/css/views/rooms/_EventTile.scss b/res/css/views/rooms/_EventTile.scss index e90b3dd3d9..c433fa48a9 100644 --- a/res/css/views/rooms/_EventTile.scss +++ b/res/css/views/rooms/_EventTile.scss @@ -70,7 +70,8 @@ $left-gutter: 64px; background-color: $alert; } - .mx_ThreadInfo { + .mx_ThreadInfo, + .mx_ThreadSummaryIcon { margin-right: 110px; margin-left: 64px; } @@ -683,6 +684,28 @@ $left-gutter: 64px; } } +.mx_ThreadSummaryIcon::before, +.mx_ThreadInfo::before { + content: ""; + display: inline-block; + mask-image: url('$(res)/img/element-icons/thread-summary.svg'); + mask-position: center; + height: 18px; + min-width: 18px; + background-color: $secondary-content; + mask-repeat: no-repeat; + mask-size: contain; +} + +.mx_ThreadSummaryIcon { + font-size: $font-12px; + color: $secondary-content; + &::before { + vertical-align: middle; + margin-left: 8px; + } +} + .mx_ThreadInfo { min-width: 267px; max-width: min(calc(100% - 64px), 600px); @@ -712,17 +735,6 @@ $left-gutter: 64px; padding-right: 15px; } - &::before { - content: ""; - mask-image: url('$(res)/img/element-icons/thread-summary.svg'); - mask-position: center; - height: 18px; - min-width: 18px; - background-color: $secondary-content; - mask-repeat: no-repeat; - mask-size: contain; - } - &::after { content: "›"; position: absolute; diff --git a/src/components/views/rooms/EventTile.tsx b/src/components/views/rooms/EventTile.tsx index 467d0d4579..695858270f 100644 --- a/src/components/views/rooms/EventTile.tsx +++ b/src/components/views/rooms/EventTile.tsx @@ -666,29 +666,31 @@ export default class EventTile extends React.Component { } private renderThreadInfo(): React.ReactNode { - if (!this.thread) { - return null; + if (this.props.timelineRenderingType === TimelineRenderingType.Search && this.props.mxEvent.threadRootId) { + return ( +

{ _t("From a thread") }

+ ); + } else if (this.thread) { + return ( + + { context => +
{ + showThread({ rootEvent: this.props.mxEvent, push: context.isCard }); + }} + > + + { _t("%(count)s reply", { + count: this.thread.length, + }) } + + { this.renderThreadLastMessagePreview() } +
+ } +
+ ); } - - return ( - - { context => -
{ - showThread({ rootEvent: this.props.mxEvent, push: context.isCard }); - }} - > - - { _t("%(count)s reply", { - count: this.thread.length, - }) } - - { this.renderThreadLastMessagePreview() } -
- } -
- ); } private onRoomReceipt = (ev: MatrixEvent, room: Room): void => { diff --git a/src/components/views/rooms/SearchResultTile.tsx b/src/components/views/rooms/SearchResultTile.tsx index 376c3166a9..3da4ad32f9 100644 --- a/src/components/views/rooms/SearchResultTile.tsx +++ b/src/components/views/rooms/SearchResultTile.tsx @@ -18,7 +18,7 @@ limitations under the License. import React from "react"; import { SearchResult } from "matrix-js-sdk/src/models/search-result"; -import RoomContext from "../../../contexts/RoomContext"; +import RoomContext, { TimelineRenderingType } from "../../../contexts/RoomContext"; import SettingsStore from "../../../settings/SettingsStore"; import { UIFeature } from "../../../settings/UIFeature"; import { RoomPermalinkCreator } from '../../../utils/permalinks/Permalinks'; @@ -75,6 +75,7 @@ export default class SearchResultTile extends React.Component { isTwelveHour={isTwelveHour} alwaysShowTimestamps={alwaysShowTimestamps} enableFlair={enableFlair} + timelineRenderingType={TimelineRenderingType.Search} />, ); } diff --git a/src/contexts/RoomContext.ts b/src/contexts/RoomContext.ts index 8329335831..0412355f2f 100644 --- a/src/contexts/RoomContext.ts +++ b/src/contexts/RoomContext.ts @@ -25,6 +25,7 @@ export enum TimelineRenderingType { ThreadsList = "ThreadsList", File = "File", Notification = "Notification", + Search = "Search" } const RoomContext = createContext({ diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index e22f07e1db..cf68a55e67 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1642,6 +1642,7 @@ "Everyone in this room is verified": "Everyone in this room is verified", "Edit message": "Edit message", "Mod": "Mod", + "From a thread": "From a thread", "%(count)s reply|other": "%(count)s replies", "%(count)s reply|one": "%(count)s reply", "This event could not be displayed": "This event could not be displayed",