EmbeddedMessage: Display forwards (#3914)
This commit is contained in:
parent
9787a4dead
commit
e898aa01a7
@ -69,13 +69,20 @@
|
||||
font-size: calc(var(--message-text-size, 1rem) - 0.125rem);
|
||||
}
|
||||
|
||||
.icon {
|
||||
.embedded-more {
|
||||
font-size: 1.125rem;
|
||||
margin-inline-end: 0.125rem;
|
||||
line-height: 0.9375rem;
|
||||
vertical-align: -0.1875rem;
|
||||
}
|
||||
|
||||
.embedded-origin-icon {
|
||||
display: inline-block;
|
||||
font-size: 0.75rem;
|
||||
margin-inline: 0.125rem;
|
||||
transform: translateY(1px);
|
||||
}
|
||||
|
||||
.message-text {
|
||||
overflow: hidden;
|
||||
margin-inline-start: 0.5rem;
|
||||
|
||||
@ -28,6 +28,7 @@ import useThumbnail from '../../hooks/useThumbnail';
|
||||
import useMessageTranslation from '../middle/message/hooks/useMessageTranslation';
|
||||
|
||||
import ActionMessage from '../middle/ActionMessage';
|
||||
import Icon from './Icon';
|
||||
import MediaSpoiler from './MediaSpoiler';
|
||||
import MessageSummary from './MessageSummary';
|
||||
|
||||
@ -37,6 +38,7 @@ type OwnProps = {
|
||||
className?: string;
|
||||
message?: ApiMessage;
|
||||
sender?: ApiPeer;
|
||||
forwardSender?: ApiPeer;
|
||||
title?: string;
|
||||
customText?: string;
|
||||
noUserColors?: boolean;
|
||||
@ -55,6 +57,7 @@ const EmbeddedMessage: FC<OwnProps> = ({
|
||||
className,
|
||||
message,
|
||||
sender,
|
||||
forwardSender,
|
||||
title,
|
||||
customText,
|
||||
isProtected,
|
||||
@ -83,6 +86,9 @@ const EmbeddedMessage: FC<OwnProps> = ({
|
||||
const lang = useLang();
|
||||
|
||||
const senderTitle = sender ? getSenderTitle(lang, sender) : message?.forwardInfo?.hiddenUserName;
|
||||
const forwardSenderTitle = forwardSender ? getSenderTitle(lang, forwardSender)
|
||||
: message?.forwardInfo?.hiddenUserName;
|
||||
const areSendersSame = sender?.id === forwardSender?.id;
|
||||
|
||||
const { handleClick, handleMouseDown } = useFastClick(onClick);
|
||||
|
||||
@ -120,9 +126,17 @@ const EmbeddedMessage: FC<OwnProps> = ({
|
||||
/>
|
||||
)}
|
||||
</p>
|
||||
<div className="message-title" dir="auto">{renderText(senderTitle || title || NBSP)}</div>
|
||||
<div className="message-title" dir="auto">
|
||||
{renderText(senderTitle || title || NBSP)}
|
||||
{forwardSenderTitle && !areSendersSame && (
|
||||
<>
|
||||
<Icon name={forwardSender ? 'share-filled' : 'forward'} className="embedded-origin-icon" />
|
||||
{renderText(forwardSenderTitle)}
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
{hasContextMenu && <i className="embedded-more icon icon-more" />}
|
||||
{hasContextMenu && <Icon name="more" className="embedded-more" />}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
@ -207,6 +207,7 @@ type StateProps = {
|
||||
shouldHideReply?: boolean;
|
||||
replyMessage?: ApiMessage;
|
||||
replyMessageSender?: ApiPeer;
|
||||
replyMessageForwardSender?: ApiPeer;
|
||||
replyStory?: ApiTypeStory;
|
||||
storySender?: ApiUser;
|
||||
outgoingStatus?: ApiMessageOutgoingStatus;
|
||||
@ -316,6 +317,7 @@ const Message: FC<OwnProps & StateProps> = ({
|
||||
shouldHideReply,
|
||||
replyMessage,
|
||||
replyMessageSender,
|
||||
replyMessageForwardSender,
|
||||
replyStory,
|
||||
storySender,
|
||||
outgoingStatus,
|
||||
@ -943,6 +945,7 @@ const Message: FC<OwnProps & StateProps> = ({
|
||||
noUserColors={isOwn || isChannel}
|
||||
isProtected={isProtected}
|
||||
sender={replyMessageSender}
|
||||
forwardSender={replyMessageForwardSender}
|
||||
chatTranslations={chatTranslations}
|
||||
requestedChatTranslationLanguage={requestedChatTranslationLanguage}
|
||||
observeIntersectionForLoading={observeIntersectionForLoading}
|
||||
@ -1461,6 +1464,7 @@ export default memo(withGlobal<OwnProps>(
|
||||
? selectChatMessage(global, isRepliesChat && replyToChatId ? replyToChatId : chatId, replyToMessageId)
|
||||
: undefined;
|
||||
const replyMessageSender = replyMessage && selectReplySender(global, replyMessage, Boolean(forwardInfo));
|
||||
const replyMessageForwardSender = replyMessage && selectForwardedSender(global, replyMessage);
|
||||
const isReplyToTopicStart = replyMessage?.content.action?.type === 'topicCreate';
|
||||
const replyStory = replyToStoryId && replyToStoryUserId
|
||||
? selectPeerStory(global, replyToStoryUserId, replyToStoryId)
|
||||
@ -1534,6 +1538,7 @@ export default memo(withGlobal<OwnProps>(
|
||||
isThreadTop,
|
||||
replyMessage,
|
||||
replyMessageSender,
|
||||
replyMessageForwardSender,
|
||||
replyStory,
|
||||
storySender,
|
||||
isInDocumentGroup,
|
||||
|
||||
@ -459,7 +459,7 @@ export function selectForwardedSender<T extends GlobalState>(
|
||||
if (forwardInfo.isChannelPost && forwardInfo.fromChatId) {
|
||||
return selectChat(global, forwardInfo.fromChatId);
|
||||
} else if (forwardInfo.senderUserId) {
|
||||
return selectUser(global, forwardInfo.senderUserId) || selectChat(global, forwardInfo.senderUserId);
|
||||
return selectPeer(global, forwardInfo.senderUserId);
|
||||
}
|
||||
|
||||
return undefined;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user