Cancel quote button appearing in all statuses (#37742)

This commit is contained in:
Echo 2026-02-05 13:58:00 +01:00 committed by GitHub
parent f652c54c33
commit d2dca826dd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 53 additions and 9 deletions

View File

@ -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}

View File

@ -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,

View 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 }
>;

View File

@ -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],