Cancel quote button appearing in all statuses (#37742)
This commit is contained in:
parent
f652c54c33
commit
d2dca826dd
@ -140,6 +140,7 @@ class Status extends ImmutablePureComponent {
|
|||||||
'hidden',
|
'hidden',
|
||||||
'unread',
|
'unread',
|
||||||
'pictureInPicture',
|
'pictureInPicture',
|
||||||
|
'headerRenderFn',
|
||||||
];
|
];
|
||||||
|
|
||||||
state = {
|
state = {
|
||||||
@ -556,7 +557,7 @@ class Status extends ImmutablePureComponent {
|
|||||||
const {statusContentProps, hashtagBar} = getHashtagBarForStatus(status);
|
const {statusContentProps, hashtagBar} = getHashtagBarForStatus(status);
|
||||||
|
|
||||||
const header = this.props.headerRenderFn
|
const header = this.props.headerRenderFn
|
||||||
? this.props.headerRenderFn({ status, account, avatarSize, messages, onHeaderClick: this.handleHeaderClick })
|
? this.props.headerRenderFn({ status, account, avatarSize, messages, onHeaderClick: this.handleHeaderClick, statusProps: this.props })
|
||||||
: (
|
: (
|
||||||
<StatusHeader
|
<StatusHeader
|
||||||
status={status}
|
status={status}
|
||||||
|
|||||||
@ -15,6 +15,8 @@ import { LinkedDisplayName } from '../display_name';
|
|||||||
import { RelativeTimestamp } from '../relative_timestamp';
|
import { RelativeTimestamp } from '../relative_timestamp';
|
||||||
import { VisibilityIcon } from '../visibility_icon';
|
import { VisibilityIcon } from '../visibility_icon';
|
||||||
|
|
||||||
|
import type { StatusProps } from './types';
|
||||||
|
|
||||||
export interface StatusHeaderProps {
|
export interface StatusHeaderProps {
|
||||||
status: Status;
|
status: Status;
|
||||||
account?: Account;
|
account?: Account;
|
||||||
@ -25,7 +27,10 @@ export interface StatusHeaderProps {
|
|||||||
onHeaderClick?: MouseEventHandler<HTMLDivElement>;
|
onHeaderClick?: MouseEventHandler<HTMLDivElement>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type StatusHeaderRenderFn = (args: StatusHeaderProps) => ReactNode;
|
export type StatusHeaderRenderFn = (
|
||||||
|
args: StatusHeaderProps,
|
||||||
|
statusProps?: StatusProps,
|
||||||
|
) => ReactNode;
|
||||||
|
|
||||||
export const StatusHeader: FC<StatusHeaderProps> = ({
|
export const StatusHeader: FC<StatusHeaderProps> = ({
|
||||||
status,
|
status,
|
||||||
|
|||||||
36
app/javascript/mastodon/components/status/types.ts
Normal file
36
app/javascript/mastodon/components/status/types.ts
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
import type { ComponentClass, MouseEventHandler, ReactNode } from 'react';
|
||||||
|
|
||||||
|
import type { Account } from '@/mastodon/models/account';
|
||||||
|
|
||||||
|
import type { StatusHeaderRenderFn } from './header';
|
||||||
|
|
||||||
|
// Taken from the Status component.
|
||||||
|
export interface StatusProps {
|
||||||
|
account?: Account;
|
||||||
|
children?: ReactNode;
|
||||||
|
previousId?: string;
|
||||||
|
rootId?: string;
|
||||||
|
onClick?: MouseEventHandler<HTMLDivElement>;
|
||||||
|
muted?: boolean;
|
||||||
|
hidden?: boolean;
|
||||||
|
unread?: boolean;
|
||||||
|
showThread?: boolean;
|
||||||
|
showActions?: boolean;
|
||||||
|
isQuotedPost?: boolean;
|
||||||
|
shouldHighlightOnMount?: boolean;
|
||||||
|
getScrollPosition?: () => null | { height: number; top: number };
|
||||||
|
updateScrollBottom?: (snapshot: number) => void;
|
||||||
|
cacheMediaWidth?: (width: number) => void;
|
||||||
|
cachedMediaWidth?: number;
|
||||||
|
scrollKey?: string;
|
||||||
|
skipPrepend?: boolean;
|
||||||
|
avatarSize?: number;
|
||||||
|
unfocusable?: boolean;
|
||||||
|
headerRenderFn?: StatusHeaderRenderFn;
|
||||||
|
contextType?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type StatusComponent = ComponentClass<
|
||||||
|
StatusProps,
|
||||||
|
{ showMedia?: boolean; showDespiteFilter?: boolean }
|
||||||
|
>;
|
||||||
@ -226,13 +226,15 @@ export const QuotedStatus: React.FC<QuotedStatusProps> = ({
|
|||||||
const headerRenderFn: StatusHeaderRenderFn = useCallback(
|
const headerRenderFn: StatusHeaderRenderFn = useCallback(
|
||||||
(props) => (
|
(props) => (
|
||||||
<StatusHeader {...props}>
|
<StatusHeader {...props}>
|
||||||
<IconButton
|
{onQuoteCancel && (
|
||||||
onClick={onQuoteCancel}
|
<IconButton
|
||||||
className='status__quote-cancel'
|
onClick={onQuoteCancel}
|
||||||
title={intl.formatMessage(quoteCancelMessage)}
|
className='status__quote-cancel'
|
||||||
icon='cancel-fill'
|
title={intl.formatMessage(quoteCancelMessage)}
|
||||||
iconComponent={CancelFillIcon}
|
icon='cancel-fill'
|
||||||
/>
|
iconComponent={CancelFillIcon}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
</StatusHeader>
|
</StatusHeader>
|
||||||
),
|
),
|
||||||
[intl, onQuoteCancel],
|
[intl, onQuoteCancel],
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user