[Glitch] Add quotes_count to statuses stats

Port 2560242972 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
This commit is contained in:
Claire
2025-08-25 14:21:28 +02:00
parent 2b00895179
commit 7fcd9184d2
4 changed files with 37 additions and 3 deletions

View File

@@ -96,6 +96,7 @@ export interface ApiStatusJSON {
replies_count: number; replies_count: number;
reblogs_count: number; reblogs_count: number;
favorites_count: number; favorites_count: number;
quotes_count: number;
edited_at?: string; edited_at?: string;
favorited?: boolean; favorited?: boolean;

View File

@@ -160,7 +160,12 @@ export const StatusReblogButton: FC<ReblogButtonProps> = ({
)} )}
icon='retweet' icon='retweet'
iconComponent={iconComponent} iconComponent={iconComponent}
counter={counters ? (status.get('reblogs_count') as number) : undefined} counter={
counters
? (status.get('reblogs_count') as number) +
(status.get('quotes_count') as number)
: undefined
}
active={isReblogged} active={isReblogged}
/> />
</Dropdown> </Dropdown>
@@ -283,7 +288,12 @@ export const LegacyReblogButton: FC<ReblogButtonProps> = ({
icon='retweet' icon='retweet'
iconComponent={iconComponent} iconComponent={iconComponent}
onClick={!disabled ? handleClick : undefined} onClick={!disabled ? handleClick : undefined}
counter={counters ? (status.get('reblogs_count') as number) : undefined} counter={
counters
? (status.get('reblogs_count') as number) +
(status.get('quotes_count') as number)
: undefined
}
/> />
); );
}; };

View File

@@ -246,7 +246,10 @@ export const Footer: React.FC<{
icon='retweet' icon='retweet'
iconComponent={reblogIconComponent} iconComponent={reblogIconComponent}
onClick={handleReblogClick} onClick={handleReblogClick}
counter={status.get('reblogs_count') as number} counter={
(status.get('reblogs_count') as number) +
(status.get('quotes_count') as number)
}
/> />
<IconButton <IconButton

View File

@@ -147,6 +147,7 @@ export const DetailedStatus: React.FC<{
let media; let media;
let applicationLink; let applicationLink;
let reblogLink; let reblogLink;
let quotesLink;
let attachmentAspectRatio; let attachmentAspectRatio;
if (properStatus.get('media_attachments').getIn([0, 'type']) === 'video') { if (properStatus.get('media_attachments').getIn([0, 'type']) === 'video') {
@@ -323,6 +324,23 @@ export const DetailedStatus: React.FC<{
); );
} }
if (['private', 'direct'].includes(status.get('visibility') as string)) {
quotesLink = '';
} else {
quotesLink = (
<span className='detailed-status__link'>
<span className='detailed-status__quotes'>
<AnimatedNumber value={status.get('quotes_count')} />
</span>
<FormattedMessage
id='status.quotes'
defaultMessage='{count, plural, one {quote} other {quotes}}'
values={{ count: status.get('quotes_count') }}
/>
</span>
);
}
const favouriteLink = ( const favouriteLink = (
<Link <Link
to={`/@${status.getIn(['account', 'acct'])}/${status.get('id')}/favourites`} to={`/@${status.getIn(['account', 'acct'])}/${status.get('id')}/favourites`}
@@ -460,6 +478,8 @@ export const DetailedStatus: React.FC<{
<div className='detailed-status__meta__line'> <div className='detailed-status__meta__line'>
{reblogLink} {reblogLink}
{reblogLink && <>·</>} {reblogLink && <>·</>}
{quotesLink}
{quotesLink && <>·</>}
{favouriteLink} {favouriteLink}
</div> </div>
</div> </div>