lint.
Этот коммит содержится в:
@@ -9,7 +9,7 @@ import {FormattedMessage} from 'react-intl';
|
|||||||
import {useSelector} from 'react-redux';
|
import {useSelector} from 'react-redux';
|
||||||
|
|
||||||
import {getLicense} from 'mattermost-redux/selectors/entities/general';
|
import {getLicense} from 'mattermost-redux/selectors/entities/general';
|
||||||
import {DocLinks, RecurringIntervals} from 'utils/constants';
|
import {DocLinks} from 'utils/constants';
|
||||||
import WarningIcon from 'components/widgets/icons/fa_warning_icon';
|
import WarningIcon from 'components/widgets/icons/fa_warning_icon';
|
||||||
|
|
||||||
import './expansion_card.scss';
|
import './expansion_card.scss';
|
||||||
@@ -38,48 +38,27 @@ export default function SelfHostedExpansionCard(props: Props) {
|
|||||||
const invalidAdditionalSeats = additionalSeats === 0 || isNaN(additionalSeats);
|
const invalidAdditionalSeats = additionalSeats === 0 || isNaN(additionalSeats);
|
||||||
const [products] = useGetSelfHostedProducts();
|
const [products] = useGetSelfHostedProducts();
|
||||||
const currentProduct = findSelfHostedProductBySku(products, license.SkuShortName);
|
const currentProduct = findSelfHostedProductBySku(products, license.SkuShortName);
|
||||||
|
const costPerMonth = currentProduct?.price_per_seat || 0;
|
||||||
|
|
||||||
const getMonthsUntilExpiry = () => {
|
const getMonthsUntilExpiry = () => {
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
return (licenseExpiry.getMonth() - now.getMonth()) + (MONTHS_IN_YEAR * (licenseExpiry.getFullYear() - now.getFullYear()));
|
return (licenseExpiry.getMonth() - now.getMonth()) + (MONTHS_IN_YEAR * (licenseExpiry.getFullYear() - now.getFullYear()));
|
||||||
};
|
};
|
||||||
|
|
||||||
const getMonthlyPrice = () => {
|
|
||||||
if (currentProduct === null) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (currentProduct?.recurring_interval === RecurringIntervals.MONTH) {
|
|
||||||
return currentProduct.price_per_seat;
|
|
||||||
}
|
|
||||||
|
|
||||||
const costPerMonth = (currentProduct.price_per_seat / MONTHS_IN_YEAR);
|
|
||||||
|
|
||||||
// Only display 2 decimal places if the cost per month is not evenly divisible over 12 months.
|
|
||||||
if (!Number.isInteger(costPerMonth)) {
|
|
||||||
// Keep the return value as a number.
|
|
||||||
return costPerMonth;
|
|
||||||
}
|
|
||||||
|
|
||||||
return costPerMonth;
|
|
||||||
};
|
|
||||||
|
|
||||||
const getCostPerUser = () => {
|
const getCostPerUser = () => {
|
||||||
if (isNaN(additionalSeats)) {
|
if (isNaN(additionalSeats)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
const monthlyPrice = getMonthlyPrice();
|
|
||||||
const monthsUntilExpiry = getMonthsUntilExpiry();
|
const monthsUntilExpiry = getMonthsUntilExpiry();
|
||||||
return monthlyPrice * monthsUntilExpiry;
|
return costPerMonth * monthsUntilExpiry;
|
||||||
};
|
};
|
||||||
|
|
||||||
const getTotal = () => {
|
const getTotal = () => {
|
||||||
if (isNaN(additionalSeats)) {
|
if (isNaN(additionalSeats)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
const monthlyPrice = getMonthlyPrice();
|
|
||||||
const monthsUntilExpiry = getMonthsUntilExpiry();
|
const monthsUntilExpiry = getMonthsUntilExpiry();
|
||||||
return additionalSeats * monthlyPrice * monthsUntilExpiry;
|
return additionalSeats * costPerMonth * monthsUntilExpiry;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Finds the maximum number of additional seats that is possible, taking into account
|
// Finds the maximum number of additional seats that is possible, taking into account
|
||||||
@@ -90,18 +69,9 @@ export default function SelfHostedExpansionCard(props: Props) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
let recurringCost = 0;
|
const currentPaymentPrice = costPerMonth * props.licensedSeats;
|
||||||
|
|
||||||
// if monthly
|
|
||||||
if (currentProduct.recurring_interval === RecurringIntervals.MONTH) {
|
|
||||||
recurringCost = getMonthlyPrice();
|
|
||||||
} else { // if yearly
|
|
||||||
recurringCost = currentProduct.price_per_seat;
|
|
||||||
}
|
|
||||||
|
|
||||||
const currentPaymentPrice = recurringCost * props.licensedSeats;
|
|
||||||
const remainingTransactionLimit = MAX_TRANSACTION_VALUE - currentPaymentPrice;
|
const remainingTransactionLimit = MAX_TRANSACTION_VALUE - currentPaymentPrice;
|
||||||
const remainingSeats = Math.floor(remainingTransactionLimit / recurringCost);
|
const remainingSeats = Math.floor(remainingTransactionLimit / costPerMonth);
|
||||||
return Math.max(0, remainingSeats);
|
return Math.max(0, remainingSeats);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -211,7 +181,7 @@ export default function SelfHostedExpansionCard(props: Props) {
|
|||||||
/* eslint-disable no-template-curly-in-string*/
|
/* eslint-disable no-template-curly-in-string*/
|
||||||
defaultMessage='${costPerUser} x {monthsUntilExpiry} months'
|
defaultMessage='${costPerUser} x {monthsUntilExpiry} months'
|
||||||
values={{
|
values={{
|
||||||
costPerUser: getMonthlyPrice().toFixed(2),
|
costPerUser: costPerMonth.toFixed(2),
|
||||||
monthsUntilExpiry: getMonthsUntilExpiry(),
|
monthsUntilExpiry: getMonthsUntilExpiry(),
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user