"save up to" in upgrade dialog

This commit is contained in:
binwiederhier 2023-02-22 14:21:23 -05:00
parent 41282e2c73
commit 1da4187405
2 changed files with 19 additions and 4 deletions

View file

@ -219,6 +219,8 @@
"account_upgrade_dialog_title": "Change account tier", "account_upgrade_dialog_title": "Change account tier",
"account_upgrade_dialog_interval_monthly": "Monthly", "account_upgrade_dialog_interval_monthly": "Monthly",
"account_upgrade_dialog_interval_yearly": "Annually", "account_upgrade_dialog_interval_yearly": "Annually",
"account_upgrade_dialog_interval_yearly_discount_save": "save {{discount}}%",
"account_upgrade_dialog_interval_yearly_discount_save_up_to": "save up to {{discount}}%",
"account_upgrade_dialog_cancel_warning": "This will <strong>cancel your subscription</strong>, and downgrade your account on {{date}}. On that date, topic reservations as well as messages cached on the server <strong>will be deleted</strong>.", "account_upgrade_dialog_cancel_warning": "This will <strong>cancel your subscription</strong>, and downgrade your account on {{date}}. On that date, topic reservations as well as messages cached on the server <strong>will be deleted</strong>.",
"account_upgrade_dialog_proration_info": "<strong>Proration</strong>: When upgrading between paid plans, the price difference will be <strong>charged immediately</strong>. When downgrading to a lower tier, the balance will be used to pay for future billing periods.", "account_upgrade_dialog_proration_info": "<strong>Proration</strong>: When upgrading between paid plans, the price difference will be <strong>charged immediately</strong>. When downgrading to a lower tier, the balance will be used to pay for future billing periods.",
"account_upgrade_dialog_reservations_warning_one": "The selected tier allows fewer reserved topics than your current tier. Before changing your tier, <strong>please delete at least one reservation</strong>. You can remove reservations in the <Link>Settings</Link>.", "account_upgrade_dialog_reservations_warning_one": "The selected tier allows fewer reserved topics than your current tier. Before changing your tier, <strong>please delete at least one reservation</strong>. You can remove reservations in the <Link>Settings</Link>.",

View file

@ -111,16 +111,21 @@ const UpgradeDialog = (props) => {
} }
// Figure out discount // Figure out discount
let discount; let discount = 0, upto = false;
if (newTier?.prices) { if (newTier?.prices) {
discount = Math.round(((newTier.prices.month*12/newTier.prices.year)-1)*100); discount = Math.round(((newTier.prices.month*12/newTier.prices.year)-1)*100);
} else { } else {
let n = 0;
for (const t of tiers) { for (const t of tiers) {
if (t.prices) { if (t.prices) {
discount = Math.round(((t.prices.month*12/t.prices.year)-1)*100); const tierDiscount = Math.round(((t.prices.month*12/t.prices.year)-1)*100);
break; if (tierDiscount > discount) {
discount = tierDiscount;
n++;
}
} }
} }
upto = n > 1;
} }
return ( return (
@ -145,7 +150,15 @@ const UpgradeDialog = (props) => {
onChange={(ev) => setInterval(ev.target.checked ? SubscriptionInterval.YEAR : SubscriptionInterval.MONTH)} onChange={(ev) => setInterval(ev.target.checked ? SubscriptionInterval.YEAR : SubscriptionInterval.MONTH)}
/> />
<Typography component="span" variant="subtitle1">{t("account_upgrade_dialog_interval_yearly")}</Typography> <Typography component="span" variant="subtitle1">{t("account_upgrade_dialog_interval_yearly")}</Typography>
{discount > 0 && <Chip label={`-${discount}%`} color="primary" size="small" variant={interval === SubscriptionInterval.YEAR ? "filled" : "outlined"} sx={{ marginLeft: "5px" }}/>} {discount > 0 &&
<Chip
label={upto ? t("account_upgrade_dialog_interval_yearly_discount_save_up_to", { discount: discount }) : t("account_upgrade_dialog_interval_yearly_discount_save", { discount: discount })}
color="primary"
size="small"
variant={interval === SubscriptionInterval.YEAR ? "filled" : "outlined"}
sx={{ marginLeft: "5px" }}
/>
}
</div> </div>
</div> </div>
</DialogTitle> </DialogTitle>