[Glitch] Cancel quote button appearing in all statuses

Port d2dca826dd06c78e562a9eaf96c9993d6bbe2e08 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
This commit is contained in:
Echo 2026-02-05 13:58:00 +01:00 committed by Claire
parent 55cd5e1ab1
commit 09206c7369
4 changed files with 53 additions and 9 deletions

View File

@ -157,6 +157,7 @@ class Status extends ImmutablePureComponent {
'expanded',
'unread',
'pictureInPicture',
'headerRenderFn',
'previousId',
'nextInReplyToId',
'rootId',
@ -685,7 +686,7 @@ class Status extends ImmutablePureComponent {
const {statusContentProps, hashtagBar} = getHashtagBarForStatus(status);
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
status={status}

View File

@ -12,6 +12,8 @@ import type { DisplayNameProps } from '../display_name';
import { LinkedDisplayName } from '../display_name';
import { VisibilityIcon } from '../visibility_icon';
import type { StatusProps } from './types';
export interface StatusHeaderProps {
status: Status;
account?: Account;
@ -22,7 +24,10 @@ export interface StatusHeaderProps {
onHeaderClick?: MouseEventHandler<HTMLDivElement>;
}
export type StatusHeaderRenderFn = (args: StatusHeaderProps) => ReactNode;
export type StatusHeaderRenderFn = (
args: StatusHeaderProps,
statusProps?: StatusProps,
) => ReactNode;
export const StatusHeader: FC<StatusHeaderProps> = ({
status,

View File

@ -0,0 +1,36 @@
import type { ComponentClass, MouseEventHandler, ReactNode } from 'react';
import type { Account } from '@/flavours/glitch/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

@ -227,13 +227,15 @@ export const QuotedStatus: React.FC<QuotedStatusProps> = ({
const headerRenderFn: StatusHeaderRenderFn = useCallback(
(props) => (
<StatusHeader {...props}>
<IconButton
onClick={onQuoteCancel}
className='status__quote-cancel'
title={intl.formatMessage(quoteCancelMessage)}
icon='cancel-fill'
iconComponent={CancelFillIcon}
/>
{onQuoteCancel && (
<IconButton
onClick={onQuoteCancel}
className='status__quote-cancel'
title={intl.formatMessage(quoteCancelMessage)}
icon='cancel-fill'
iconComponent={CancelFillIcon}
/>
)}
</StatusHeader>
),
[intl, onQuoteCancel],