diff --git a/web/ASC.Web.Client/src/components/pages/PaymentsEnterprise/index.js b/web/ASC.Web.Client/src/components/pages/PaymentsEnterprise/index.js index e8a7603481..b1ed5eb61c 100644 --- a/web/ASC.Web.Client/src/components/pages/PaymentsEnterprise/index.js +++ b/web/ASC.Web.Client/src/components/pages/PaymentsEnterprise/index.js @@ -14,6 +14,7 @@ import { setPaymentsLicense, getSettingsPayment, resetUploadedLicense, + AcceptPaymentsLicense, } from "../../../store/payments/actions"; import { createI18N } from "../../../helpers/i18n"; @@ -68,6 +69,8 @@ class Body extends React.PureComponent { currentProductId, licenseUpload, resetUploadedLicense, + AcceptPaymentsLicense, + expiresDate, } = this.props; // if (currentProductId !== prevProps.currentProductId) { @@ -75,13 +78,14 @@ class Body extends React.PureComponent { // } if (licenseUpload) { + AcceptPaymentsLicense(); getSettingsPayment(); resetUploadedLicense(); } } onButtonClickUpload = (file) => { - const { setPaymentsLicense, t } = this.props; + const { setPaymentsLicense, t, AcceptPaymentsLicense } = this.props; let fd = new FormData(); fd.append("files", file); @@ -149,4 +153,5 @@ export default connect(mapStateToProps, { setCurrentProductId, getSettingsPayment, resetUploadedLicense, + AcceptPaymentsLicense, })(withRouter(PaymentsEnterprise)); diff --git a/web/ASC.Web.Client/src/components/pages/PaymentsEnterprise/sub-components/header-container.js b/web/ASC.Web.Client/src/components/pages/PaymentsEnterprise/sub-components/header-container.js index f6430fbd23..a3c97c2974 100644 --- a/web/ASC.Web.Client/src/components/pages/PaymentsEnterprise/sub-components/header-container.js +++ b/web/ASC.Web.Client/src/components/pages/PaymentsEnterprise/sub-components/header-container.js @@ -1,9 +1,10 @@ -import React from "react"; +import React, { useEffect } from "react"; import PropTypes from "prop-types"; import styled from "styled-components"; import { connect } from "react-redux"; import { withRouter } from "react-router"; import { Text, utils } from "asc-web-components"; +import { WebStorageStateStore } from "oidc-client"; const { tablet } = utils.device; @@ -48,48 +49,65 @@ const StyledHeader = styled.div` } `; -const HeaderContainer = ({ - t, - expiresDate, - culture, - utcHoursOffset, - trialMode, -}) => { - const moment = require("moment"); - require("moment/min/locales.min"); - moment.locale(culture); - const currentUserDate = moment().utcOffset(utcHoursOffset); +class HeaderContainer extends React.Component { + constructor(props) { + super(props); - return new Date(currentUserDate).setHours(0, 0, 0, 0) < - expiresDate.setHours(0, 0, 0, 0) ? ( - - {t("Using")} - - {t("SubscriptionAndUpdatesExpires")}{" "} - {moment(expiresDate).startOf("day").format(" D MMMM, YYYY")} - {"."} - - - ) : !trialMode ? ( - - {t("Using")} + const { expiresDate, trialMode } = props; - - {t("SupportNotAvailable")}{" "} - {moment(expiresDate).startOf("day").format("ddd, D MMMM, YYYY")} - {". "} - {t("LicenseRenewal")} - - - ) : ( - - {t("TrialPeriodExpired")} - - {t("ThanksToUser")} - - - ); -}; + this.state = { + expiresDate: expiresDate, + trialMode: trialMode, + }; + } + + componentDidUpdate(prevProps) { + const { expiresDate, trialMode } = this.props; + + if (expiresDate !== prevProps.expiresDate) { + this.setState({ expiresDate: expiresDate }); + } + } + render() { + const { t, culture, utcHoursOffset, trialMode } = this.props; + const { expiresDate } = this.state; + + const moment = require("moment"); + require("moment/min/locales.min"); + moment.locale(culture); + const currentUserDate = moment().utcOffset(utcHoursOffset); + + return new Date(currentUserDate).setHours(0, 0, 0, 0) < + expiresDate.setHours(0, 0, 0, 0) ? ( + + {t("Using")} + + {t("SubscriptionAndUpdatesExpires")}{" "} + {moment(expiresDate).startOf("day").format(" D MMMM, YYYY")} + {"."} + + + ) : !trialMode ? ( + + {t("Using")} + + + {t("SupportNotAvailable")}{" "} + {moment(expiresDate).startOf("day").format("ddd, D MMMM, YYYY")} + {". "} + {t("LicenseRenewal")} + + + ) : ( + + {t("TrialPeriodExpired")} + + {t("ThanksToUser")} + + + ); + } +} HeaderContainer.propTypes = { t: PropTypes.func.isRequired, @@ -103,7 +121,7 @@ function mapStateToProps({ auth, payments }) { culture: auth.settings.culture, utcHoursOffset: auth.settings.utcHoursOffset, expiresDate: payments.currentLicense.expiresDate, - trialMode: payments.trialMode, + trialMode: payments.currentLicense.trialMode, }; } export default connect(mapStateToProps)(withRouter(HeaderContainer)); diff --git a/web/ASC.Web.Client/src/store/payments/actions.js b/web/ASC.Web.Client/src/store/payments/actions.js index d15ced5e7c..f49e1dd299 100644 --- a/web/ASC.Web.Client/src/store/payments/actions.js +++ b/web/ASC.Web.Client/src/store/payments/actions.js @@ -39,3 +39,8 @@ export function setPaymentsLicense(confirmKey, data) { .then((res) => dispatch(setLicenseUpload(res))); }; } +export function AcceptPaymentsLicense() { + return (dispatch) => { + return api.settings.AcceptLicense().then((res) => console.log(res)); + }; +} diff --git a/web/ASC.Web.Common/src/api/settings/index.js b/web/ASC.Web.Common/src/api/settings/index.js index 5eb1b03ca8..d4463ea7cf 100644 --- a/web/ASC.Web.Common/src/api/settings/index.js +++ b/web/ASC.Web.Common/src/api/settings/index.js @@ -168,3 +168,9 @@ export function getPaymentSettings() { url: `/settings/payment.json` }); } +export function AcceptLicense() { + return request({ + method: "post", + url: `/settings/license/accept.json` + }); +} diff --git a/web/ASC.Web.Components/src/components/icons/svg/index.js b/web/ASC.Web.Components/src/components/icons/svg/index.js index 3ecc11337b..dfb974c707 100644 --- a/web/ASC.Web.Components/src/components/icons/svg/index.js +++ b/web/ASC.Web.Components/src/components/icons/svg/index.js @@ -71,6 +71,7 @@ import OrigImportIcon from "./import.react.svg"; import OrigCatalogPinIcon from "./catalog.pin.react.svg"; import OrigCopyIcon from "./copy.react.svg"; import OrigShareEmailIcon from "./share.e-mail.react.svg"; +import OrigPaymentsIcon from "./payments.react.svg"; import OrigShareGooglePlusIcon from "./share.google.plus.react.svg"; import OrigSendClockIcon from "./send.clock.react.svg"; import OrigAccessNoneIcon from "./access.none.react.svg";