fix: consolidate isDetailView into one type called hasDetailView

which we import in various components
pull/3055/head
William Grant 1 year ago committed by Audric Ackermann
parent 500f994d5d
commit 4774c8a669

@ -20,6 +20,7 @@ import {
import { useSelectedIsPrivate } from '../../../../state/selectors/selectedConversation'; import { useSelectedIsPrivate } from '../../../../state/selectors/selectedConversation';
import { canDisplayImage } from '../../../../types/Attachment'; import { canDisplayImage } from '../../../../types/Attachment';
import { ScrollToLoadedMessageContext } from '../../SessionMessagesListContainer'; import { ScrollToLoadedMessageContext } from '../../SessionMessagesListContainer';
import { hasDetailView } from '../message-item/Message';
import { MessageAttachment } from './MessageAttachment'; import { MessageAttachment } from './MessageAttachment';
import { MessageAvatar } from './MessageAvatar'; import { MessageAvatar } from './MessageAvatar';
import { MessageHighlighter } from './MessageHighlighter'; import { MessageHighlighter } from './MessageHighlighter';
@ -32,9 +33,8 @@ export type MessageContentSelectorProps = Pick<
'text' | 'direction' | 'timestamp' | 'serverTimestamp' | 'previews' | 'quote' | 'attachments' 'text' | 'direction' | 'timestamp' | 'serverTimestamp' | 'previews' | 'quote' | 'attachments'
>; >;
type Props = { type Props = hasDetailView & {
messageId: string; messageId: string;
isDetailView?: boolean;
}; };
// TODO not too sure what is this doing? It is not preventDefault() // TODO not too sure what is this doing? It is not preventDefault()

@ -15,6 +15,7 @@ import {
import { Reactions } from '../../../../util/reactions'; import { Reactions } from '../../../../util/reactions';
import { Flex } from '../../../basic/Flex'; import { Flex } from '../../../basic/Flex';
import { ExpirableReadableMessage } from '../message-item/ExpirableReadableMessage'; import { ExpirableReadableMessage } from '../message-item/ExpirableReadableMessage';
import { hasDetailView } from '../message-item/Message';
import { MessageAuthorText } from './MessageAuthorText'; import { MessageAuthorText } from './MessageAuthorText';
import { MessageContent } from './MessageContent'; import { MessageContent } from './MessageContent';
import { MessageContextMenu } from './MessageContextMenu'; import { MessageContextMenu } from './MessageContextMenu';
@ -26,15 +27,14 @@ export type MessageContentWithStatusSelectorProps = { isGroup: boolean } & Pick<
'conversationType' | 'direction' | 'isDeleted' 'conversationType' | 'direction' | 'isDeleted'
>; >;
type Props = { type Props = hasDetailView & {
messageId: string; messageId: string;
ctxMenuID: string; ctxMenuID: string;
isDetailView?: boolean;
dataTestId: string; dataTestId: string;
enableReactions: boolean; enableReactions: boolean;
}; };
const StyledMessageContentContainer = styled.div<{ isIncoming: boolean; isDetailView: boolean }>` const StyledMessageContentContainer = styled.div<hasDetailView & { isIncoming: boolean }>`
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: flex-start; justify-content: flex-start;

@ -8,11 +8,11 @@ import { openConversationToSpecificMessage } from '../../../../state/ducks/conve
import { StateType } from '../../../../state/reducer'; import { StateType } from '../../../../state/reducer';
import { useMessageDirection } from '../../../../state/selectors'; import { useMessageDirection } from '../../../../state/selectors';
import { getMessageQuoteProps } from '../../../../state/selectors/conversations'; import { getMessageQuoteProps } from '../../../../state/selectors/conversations';
import { hasDetailView } from '../message-item/Message';
import { Quote } from './quote/Quote'; import { Quote } from './quote/Quote';
type Props = { type Props = hasDetailView & {
messageId: string; messageId: string;
isDetailView?: boolean;
}; };
export type MessageQuoteSelectorProps = Pick<MessageRenderingProps, 'quote' | 'direction'>; export type MessageQuoteSelectorProps = Pick<MessageRenderingProps, 'quote' | 'direction'>;

@ -9,6 +9,7 @@ import { SortedReactionList } from '../../../../types/Reaction';
import { nativeEmojiData } from '../../../../util/emoji'; import { nativeEmojiData } from '../../../../util/emoji';
import { Flex } from '../../../basic/Flex'; import { Flex } from '../../../basic/Flex';
import { SessionIcon } from '../../../icon'; import { SessionIcon } from '../../../icon';
import { hasDetailView } from '../message-item/Message';
import { Reaction, ReactionProps } from '../reactions/Reaction'; import { Reaction, ReactionProps } from '../reactions/Reaction';
import { StyledPopupContainer } from '../reactions/ReactionPopup'; import { StyledPopupContainer } from '../reactions/ReactionPopup';
@ -137,7 +138,7 @@ export type MessageReactsSelectorProps = Pick<
'convoId' | 'serverId' | 'reacts' | 'sortedReacts' 'convoId' | 'serverId' | 'reacts' | 'sortedReacts'
>; >;
type Props = { type Props = hasDetailView & {
messageId: string; messageId: string;
hasReactLimit?: boolean; hasReactLimit?: boolean;
onClick: (emoji: string) => void; onClick: (emoji: string) => void;
@ -147,7 +148,6 @@ type Props = {
inModal?: boolean; inModal?: boolean;
onSelected?: (emoji: string) => boolean; onSelected?: (emoji: string) => boolean;
noAvatar: boolean; noAvatar: boolean;
isDetailView?: boolean;
}; };
export const MessageReactions = (props: Props) => { export const MessageReactions = (props: Props) => {

@ -10,9 +10,9 @@ import { useSelectedIsGroupOrCommunity } from '../../../../state/selectors/selec
import { SpacerXS } from '../../../basic/Text'; import { SpacerXS } from '../../../basic/Text';
import { SessionIcon, SessionIconType } from '../../../icon'; import { SessionIcon, SessionIconType } from '../../../icon';
import { ExpireTimer } from '../../ExpireTimer'; import { ExpireTimer } from '../../ExpireTimer';
import { hasDetailView } from '../message-item/Message';
type Props = { type Props = hasDetailView & {
isDetailView: boolean;
messageId: string; messageId: string;
dataTestId?: string | undefined; dataTestId?: string | undefined;
}; };

@ -4,6 +4,7 @@ import { isEmpty } from 'lodash';
import styled from 'styled-components'; import styled from 'styled-components';
import { useIsMessageSelectionMode } from '../../../../../state/selectors/selectedConversation'; import { useIsMessageSelectionMode } from '../../../../../state/selectors/selectedConversation';
import * as MIME from '../../../../../types/MIME'; import * as MIME from '../../../../../types/MIME';
import { hasDetailView } from '../../message-item/Message';
import { QuoteAuthor } from './QuoteAuthor'; import { QuoteAuthor } from './QuoteAuthor';
import { QuoteIconContainer } from './QuoteIconContainer'; import { QuoteIconContainer } from './QuoteIconContainer';
import { QuoteText } from './QuoteText'; import { QuoteText } from './QuoteText';
@ -43,14 +44,13 @@ const StyledQuoteTextContent = styled.div`
justify-content: center; justify-content: center;
`; `;
export type QuoteProps = { export type QuoteProps = hasDetailView & {
author: string; author: string;
isFromMe: boolean; isFromMe: boolean;
isIncoming: boolean; isIncoming: boolean;
referencedMessageNotFound: boolean; referencedMessageNotFound: boolean;
text?: string; text?: string;
attachment?: QuotedAttachmentType; attachment?: QuotedAttachmentType;
isDetailView?: boolean;
onClick?: (e: React.MouseEvent<HTMLDivElement>) => void; onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;
}; };

@ -4,9 +4,10 @@ import { useQuoteAuthorName } from '../../../../../hooks/useParamSelector';
import { PubKey } from '../../../../../session/types'; import { PubKey } from '../../../../../session/types';
import { useSelectedIsPublic } from '../../../../../state/selectors/selectedConversation'; import { useSelectedIsPublic } from '../../../../../state/selectors/selectedConversation';
import { ContactName } from '../../../ContactName'; import { ContactName } from '../../../ContactName';
import { hasDetailView } from '../../message-item/Message';
import { QuoteProps } from './Quote'; import { QuoteProps } from './Quote';
const StyledQuoteAuthor = styled.div<{ isIncoming: boolean; isDetailView?: boolean }>` const StyledQuoteAuthor = styled.div<hasDetailView & { isIncoming: boolean }>`
color: ${props => color: ${props =>
props.isIncoming props.isIncoming
? 'var(--message-bubbles-received-text-color)' ? 'var(--message-bubbles-received-text-color)'
@ -23,7 +24,7 @@ const StyledQuoteAuthor = styled.div<{ isIncoming: boolean; isDetailView?: boole
} }
`; `;
type QuoteAuthorProps = Pick<QuoteProps, 'author' | 'isIncoming'> & { isDetailView?: boolean }; type QuoteAuthorProps = Pick<QuoteProps, 'author' | 'isIncoming'> & hasDetailView;
export const QuoteAuthor = (props: QuoteAuthorProps) => { export const QuoteAuthor = (props: QuoteAuthorProps) => {
const { author, isIncoming, isDetailView } = props; const { author, isIncoming, isDetailView } = props;

@ -9,6 +9,7 @@ import { getConversationController } from '../../../../session/conversations';
import { PropsForExpiringMessage, messagesExpired } from '../../../../state/ducks/conversations'; import { PropsForExpiringMessage, messagesExpired } from '../../../../state/ducks/conversations';
import { getIncrement } from '../../../../util/timer'; import { getIncrement } from '../../../../util/timer';
import { ExpireTimer } from '../../ExpireTimer'; import { ExpireTimer } from '../../ExpireTimer';
import { hasDetailView } from './Message';
import { ReadableMessage, ReadableMessageProps } from './ReadableMessage'; import { ReadableMessage, ReadableMessageProps } from './ReadableMessage';
const EXPIRATION_CHECK_MINIMUM = 2000; const EXPIRATION_CHECK_MINIMUM = 2000;
@ -81,10 +82,10 @@ const StyledReadableMessage = styled(ReadableMessage)<{
`; `;
export interface ExpirableReadableMessageProps export interface ExpirableReadableMessageProps
extends Omit<ReadableMessageProps, 'receivedAt' | 'isUnread'> { extends hasDetailView,
Omit<ReadableMessageProps, 'receivedAt' | 'isUnread'> {
messageId: string; messageId: string;
isControlMessage?: boolean; isControlMessage?: boolean;
isDetailView?: boolean;
} }
function ExpireTimerControlMessage({ function ExpireTimerControlMessage({

@ -14,6 +14,7 @@ import {
} from '../../../../state/selectors/conversations'; } from '../../../../state/selectors/conversations';
import { MessageContentWithStatuses } from '../message-content/MessageContentWithStatus'; import { MessageContentWithStatuses } from '../message-content/MessageContentWithStatus';
import { StyledMessageReactionsContainer } from '../message-content/MessageReactions'; import { StyledMessageReactionsContainer } from '../message-content/MessageReactions';
import { hasDetailView } from './Message';
export type GenericReadableMessageSelectorProps = Pick< export type GenericReadableMessageSelectorProps = Pick<
MessageRenderingProps, MessageRenderingProps,
@ -26,10 +27,9 @@ export type GenericReadableMessageSelectorProps = Pick<
| 'isDeleted' | 'isDeleted'
>; >;
type Props = { type Props = hasDetailView & {
messageId: string; messageId: string;
ctxMenuID: string; ctxMenuID: string;
isDetailView?: boolean;
}; };
const highlightedMessageAnimation = keyframes` const highlightedMessageAnimation = keyframes`
@ -38,11 +38,12 @@ const highlightedMessageAnimation = keyframes`
} }
`; `;
const StyledReadableMessage = styled.div<{ const StyledReadableMessage = styled.div<
hasDetailView & {
selected: boolean; selected: boolean;
isRightClicked: boolean; isRightClicked: boolean;
isDetailView?: boolean; }
}>` >`
display: flex; display: flex;
align-items: center; align-items: center;
width: 100%; width: 100%;

@ -10,9 +10,11 @@ import { GenericReadableMessage } from './GenericReadableMessage';
// Same as MIN_WIDTH in ImageGrid.tsx // Same as MIN_WIDTH in ImageGrid.tsx
export const MINIMUM_LINK_PREVIEW_IMAGE_WIDTH = THUMBNAIL_SIDE; export const MINIMUM_LINK_PREVIEW_IMAGE_WIDTH = THUMBNAIL_SIDE;
type Props = { /** when the message info panel is displayed for a message, we disable onClick and make some other minor UI changes */
export type hasDetailView = { isDetailView?: boolean };
type Props = hasDetailView & {
messageId: string; messageId: string;
isDetailView?: boolean; // when the detail is shown for a message, we disable click and some other stuff
}; };
export const Message = (props: Props) => { export const Message = (props: Props) => {

Loading…
Cancel
Save