@@ -234,6 +246,7 @@ const ReplyInThreadButton = ({ mxEvent }: IReplyInThreadButton) => {
onClick={onClick}
>
+
{ firstTimeSeeingThreads && !threadsEnabled && (
) }
@@ -248,7 +261,7 @@ const FavouriteButton = ({ mxEvent }: IFavouriteButtonProp) => {
const { isFavourite, toggleFavourite } = useFavouriteMessages();
const eventId = mxEvent.getId();
- const classes = classNames("mx_MessageActionBar_maskButton mx_MessageActionBar_favouriteButton", {
+ const classes = classNames("mx_MessageActionBar_iconButton mx_MessageActionBar_favouriteButton", {
'mx_MessageActionBar_favouriteButton_fillstar': isFavourite(eventId),
});
@@ -257,7 +270,9 @@ const FavouriteButton = ({ mxEvent }: IFavouriteButtonProp) => {
title={_t("Favourite")}
onClick={() => toggleFavourite(eventId)}
data-testid={eventId}
- />;
+ >
+
+ ;
};
interface IMessageActionBarProps {
@@ -405,19 +420,23 @@ export default class MessageActionBar extends React.PureComponent
);
+ >
+
+ );
}
const cancelSendingButton =
;
+ >
+
+ ;
const threadTooltipButton =
;
@@ -431,11 +450,13 @@ export default class MessageActionBar extends React.PureComponent
);
+ >
+
+ );
// The delete button should appear last, so we can just drop it at the end
toolbarOpts.push(cancelSendingButton);
@@ -451,11 +472,13 @@ export default class MessageActionBar extends React.PureComponent
+ >
+
+
));
}
if (this.context.canReact) {
@@ -494,9 +517,8 @@ export default class MessageActionBar extends React.PureComponent
@@ -512,7 +534,12 @@ export default class MessageActionBar extends React.PureComponent
);
+ >
+ { this.props.isQuoteExpanded
+ ?
+ :
+ }
+ );
}
// The menu button should be last, so dump it there.
diff --git a/src/components/views/right_panel/PinnedMessagesCard.tsx b/src/components/views/right_panel/PinnedMessagesCard.tsx
index 1c14828e70..cff65b0deb 100644
--- a/src/components/views/right_panel/PinnedMessagesCard.tsx
+++ b/src/components/views/right_panel/PinnedMessagesCard.tsx
@@ -21,6 +21,9 @@ import { EventType, RelationType } from 'matrix-js-sdk/src/@types/event';
import { logger } from "matrix-js-sdk/src/logger";
import { RoomStateEvent } from "matrix-js-sdk/src/models/room-state";
+import { Icon as ContextMenuIcon } from '../../../../res/img/element-icons/context-menu.svg';
+import { Icon as EmojiIcon } from "../../../../res/img/element-icons/room/message-bar/emoji.svg";
+import { Icon as ReplyIcon } from '../../../../res/img/element-icons/room/message-bar/reply.svg';
import { _t } from "../../../languageHandler";
import BaseCard from "./BaseCard";
import Spinner from "../elements/Spinner";
@@ -162,9 +165,15 @@ const PinnedMessagesCard = ({ room, onClose, permalinkCreator }: IProps) => {
{ /* XXX: We reuse the classes for simplicity, but deliberately not the components for non-interactivity. */ }
{ _t("Nothing pinned, yet") }
diff --git a/src/components/views/rooms/EventTile.tsx b/src/components/views/rooms/EventTile.tsx
index 881366f408..95477a6e7f 100644
--- a/src/components/views/rooms/EventTile.tsx
+++ b/src/components/views/rooms/EventTile.tsx
@@ -28,6 +28,8 @@ import { CallErrorCode } from "matrix-js-sdk/src/webrtc/call";
import { CryptoEvent } from "matrix-js-sdk/src/crypto";
import { UserTrustLevel } from 'matrix-js-sdk/src/crypto/CrossSigning';
+import { Icon as LinkIcon } from '../../../../res/img/element-icons/link.svg';
+import { Icon as ViewInRoomIcon } from '../../../../res/img/element-icons/view-in-room.svg';
import ReplyChain from "../elements/ReplyChain";
import { _t } from '../../../languageHandler';
import dis from '../../../dispatcher/dispatcher';
@@ -1384,17 +1386,21 @@ export class UnwrappedEventTile extends React.Component
{
+ >
+
+
+ >
+
+
{ msgOption }
>)