Skip to content

Commit 43a5bfd

Browse files
committed
Show 'Expired X ago' with error styling for expired monetize subscriptions
1 parent 6380768 commit 43a5bfd

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

client/dashboard/me/billing-monetize-subscriptions/monetize-item.tsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import { ExternalLink } from '@wordpress/components';
77
import { createInterpolateElement } from '@wordpress/element';
88
import { __, sprintf } from '@wordpress/i18n';
99
import SiteIcon from '../../components/site-icon';
10-
import { formatDate } from '../../utils/datetime';
10+
import { Text } from '../../components/text';
11+
import { formatDate, isWithinLast, getRelativeTimeString } from '../../utils/datetime';
1112

1213
export const MonetizeSubscriptionTerms = ( {
1314
subscription,
@@ -26,7 +27,14 @@ export const MonetizeSubscriptionTerms = ( {
2627

2728
// Show "Expired" for past dates
2829
if ( isExpired ) {
29-
return <>{ __( 'Expired' ) }</>;
30+
const isExpiredToday = isWithinLast( endDate, 24, 'hours' );
31+
const expiredTodayText = __( 'Expired today' );
32+
// translators: timeSinceExpiry is of the form "[number] [time-period] ago" i.e. "3 days ago"
33+
const expiredFromNowText = sprintf( __( 'Expired %(timeSinceExpiry)s' ), {
34+
timeSinceExpiry: getRelativeTimeString( endDate ),
35+
} );
36+
37+
return <Text intent="error">{ isExpiredToday ? expiredTodayText : expiredFromNowText }</Text>;
3038
}
3139

3240
// Show renewal or expiry for future dates

client/me/purchases/membership-item/index.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,21 @@ export const MembershipTerms = ( { subscription }: { subscription: MembershipSub
2121
const isExpired = endDate.isBefore( moment() );
2222

2323
if ( isExpired ) {
24-
return <>{ translate( 'Expired' ) }</>;
24+
const isExpiredToday = moment().diff( endDate, 'hours' ) < 24;
25+
26+
return (
27+
<span className="purchase-item__is-error">
28+
{ isExpiredToday
29+
? translate( 'Expired today' )
30+
: translate( 'Expired %(timeSinceExpiry)s', {
31+
args: {
32+
timeSinceExpiry: endDate.fromNow(),
33+
},
34+
context:
35+
'timeSinceExpiry is of the form "[number] [time-period] ago" i.e. "3 days ago"',
36+
} ) }
37+
</span>
38+
);
2539
}
2640

2741
return (

0 commit comments

Comments
 (0)