From a44eaa9ea5fe49f8fbf74b3ec6eea7d08eaa8a37 Mon Sep 17 00:00:00 2001 From: Viktor Fomin Date: Thu, 7 Apr 2022 04:03:37 +0300 Subject: [PATCH] Web: Client: Settings: add admin message setting layout, logic --- .../security/access-portal/adminMessage.js | 155 +++++++++++++++++- 1 file changed, 151 insertions(+), 4 deletions(-) diff --git a/web/ASC.Web.Client/src/components/pages/Settings/categories/security/access-portal/adminMessage.js b/web/ASC.Web.Client/src/components/pages/Settings/categories/security/access-portal/adminMessage.js index 42d893d9c8..14b04d00f6 100644 --- a/web/ASC.Web.Client/src/components/pages/Settings/categories/security/access-portal/adminMessage.js +++ b/web/ASC.Web.Client/src/components/pages/Settings/categories/security/access-portal/adminMessage.js @@ -1,7 +1,154 @@ -import React from "react"; +import React, { useState, useEffect } from "react"; +import styled from "styled-components"; +import { withRouter } from "react-router"; +import { withTranslation } from "react-i18next"; +import { inject, observer } from "mobx-react"; +import RadioButtonGroup from "@appserver/components/radio-button-group"; +import Text from "@appserver/components/text"; +import Link from "@appserver/components/link"; +import toastr from "@appserver/components/toast/toastr"; +import SectionLoader from "../sub-components/section-loader"; +import { getLanguage } from "@appserver/common/utils"; +import Buttons from "../sub-components/buttons"; +import { LearnMoreWrapper } from "../StyledSecurity"; +import { size } from "@appserver/components/utils/device"; +import { saveToSessionStorage, getFromSessionStorage } from "../../../utils"; -const AdminMessage = () => { - return

Admin message

; +const MainContainer = styled.div` + width: 100%; + + .page-subtitle { + margin-bottom: 10px; + } +`; + +const AdminMessage = (props) => { + const { t, history, enableAdmMess, setMessageSettings } = props; + const [type, setType] = useState(false); + const [showReminder, setShowReminder] = useState(false); + const [isLoading, setIsLoading] = useState(false); + + const getSettings = () => { + const currentSettings = getFromSessionStorage( + "currentAdminMessageSettings" + ); + const defaultSettings = getFromSessionStorage( + "defaultAdminMessageSettings" + ); + + if (defaultSettings) { + saveToSessionStorage("defaultAdminMessageSettings", defaultSettings); + } else { + saveToSessionStorage("defaultAdminMessageSettings", enableAdmMess); + } + + if (currentSettings) { + setType(currentSettings); + } else { + setType(enableAdmMess); + } + setIsLoading(true); + }; + + useEffect(() => { + checkWidth(); + getSettings(); + window.addEventListener("resize", checkWidth); + return () => window.removeEventListener("resize", checkWidth); + }, [isLoading]); + + useEffect(() => { + if (!isLoading) return; + + const defaultSettings = getFromSessionStorage( + "defaultAdminMessageSettings" + ); + saveToSessionStorage("currentAdminMessageSettings", type); + + if (defaultSettings === type) { + setShowReminder(false); + } else { + setShowReminder(true); + } + }, [type]); + + const checkWidth = () => { + window.innerWidth > size.smallTablet && + history.location.pathname.includes("admin-message") && + history.push("/settings/security/access-portal"); + }; + + const onSelectType = (e) => { + setType(e.target.value === "enable" ? true : false); + }; + + const onSaveClick = () => { + setMessageSettings(type); + toastr.success(t("SuccessfullySaveSettingsMessage")); + saveToSessionStorage("defaultAdminMessageSettings", type); + setShowReminder(false); + }; + + const onCancelClick = () => { + const defaultSettings = getFromSessionStorage( + "defaultAdminMessageSettings" + ); + setType(defaultSettings); + setShowReminder(false); + }; + + const lng = getLanguage(localStorage.getItem("language") || "en"); + if (!isLoading) return ; + return ( + + + {t("AdminsMessageHelper")} + + {t("Common:LearnMore")} + + + + + + + + ); }; -export default AdminMessage; +export default inject(({ auth }) => { + const { enableAdmMess, setMessageSettings } = auth.settingsStore; + + return { + enableAdmMess, + setMessageSettings, + }; +})(withTranslation(["Settings", "Common"])(withRouter(observer(AdminMessage))));