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";