From 9d4bf2e24f35f5ed43ce9f8b2027b2c2f4d6d971 Mon Sep 17 00:00:00 2001 From: gazizova-vlada Date: Fri, 9 Sep 2022 10:40:14 +0300 Subject: [PATCH] Web:Client:Added the functionality of the AdditionalResources settings, added the opening of a modal window, the onRestore, onSave methods. --- .../settingsBranding/additionalResources.js | 205 ++++++++++++++---- 1 file changed, 158 insertions(+), 47 deletions(-) diff --git a/packages/client/src/pages/PortalSettings/categories/common/settingsBranding/additionalResources.js b/packages/client/src/pages/PortalSettings/categories/common/settingsBranding/additionalResources.js index dbf5c78ad4..1470edaecd 100644 --- a/packages/client/src/pages/PortalSettings/categories/common/settingsBranding/additionalResources.js +++ b/packages/client/src/pages/PortalSettings/categories/common/settingsBranding/additionalResources.js @@ -1,15 +1,18 @@ -import React, { useState } from "react"; +import React, { useState, useEffect } from "react"; import { withTranslation } from "react-i18next"; import SaveCancelButtons from "@docspace/components/save-cancel-buttons"; import { inject, observer } from "mobx-react"; import withLoading from "SRC_DIR/HOCs/withLoading"; import styled from "styled-components"; import Checkbox from "@docspace/components/checkbox"; +import toastr from "@docspace/components/toast/toastr"; +import ModalDialog from "@docspace/components/modal-dialog"; +import Link from "@docspace/components/link"; const StyledComponent = styled.div` margin-top: 40px; - .branding-checkboxs { + .branding-checkbox { display: flex; flex-direction: column; gap: 16px; @@ -17,58 +20,166 @@ const StyledComponent = styled.div` } `; +const StyledModalDialog = styled(ModalDialog)` + #modal-dialog { + width: auto; + max-height: none; + } + + .modal-body { + padding: 0; + height: 515px; + } + .modal-footer { + display: none; + } +`; + const AdditionalResources = (props) => { - const { t, isPortalPaid } = props; - const [showFeedback, setShowFeedback] = useState(false); - const [showSample, setShowSample] = useState(false); - const [showVideoGuides, setShowVideoGuides] = useState(false); - const [showHelpCenter, setShowHelpCenter] = useState(false); + const { + t, + isPortalPaid, + getAdditionalResources, + setAdditionalResources, + restoreAdditionalResources, + additionalResourcesData, + } = props; + const [showFeedback, setShowFeedback] = useState( + additionalResourcesData.feedbackAndSupportEnabled + ); + const [showVideoGuides, setShowVideoGuides] = useState( + additionalResourcesData.videoGuidesEnabled + ); + const [showHelpCenter, setShowHelpCenter] = useState( + additionalResourcesData.helpCenterEnabled + ); + + const [hasChange, setHasChange] = useState(false); + const [isFirstAdditionalResources, setIsFirstAdditionalResources] = useState( + localStorage.getItem("isFirstAdditionalResources") + ); + + const [showModal, setShowModal] = useState(false); + + useEffect(() => { + if ( + showFeedback !== additionalResourcesData.feedbackAndSupportEnabled || + showVideoGuides !== additionalResourcesData.videoGuidesEnabled || + showHelpCenter !== additionalResourcesData.helpCenterEnabled + ) { + setHasChange(true); + } else { + setHasChange(false); + } + }, [showFeedback, showVideoGuides, showHelpCenter, additionalResourcesData]); + + const onSave = () => { + //TODO: Add data + setAdditionalResources() + .then(() => { + toastr.success(t("Settings:SuccessfullySaveSettingsMessage")); + getAdditionalResources(); + + if (!localStorage.getItem("isFirstAdditionalResources")) { + localStorage.setItem("isFirstAdditionalResources", true); + setIsFirstCompanyInfoSettings("true"); + } + }) + .catch((error) => { + toastr.error(error); + }); + }; + + const onRestore = () => { + restoreAdditionalResources() + .then(() => { + toastr.success(t("Settings:SuccessfullySaveSettingsMessage")); + getAdditionalResources(); + }) + .catch((error) => { + toastr.error(error); + }); + }; + + const onShowExample = () => { + if (!isPortalPaid) return; + setShowModal(true); + }; + + const onCloseModal = () => { + setShowModal(false); + }; return ( - -
Additional resources
-
- Choose whether you want to display links to additional resources in - Portal modules and sample files in Documents module. -
-
- setShowFeedback(!showFeedback)} + <> + {showModal && ( + + + + + + + )} + + +
Additional resources
+
+ Choose whether you want to display links to additional resources in + +  DocSpace menu.  + +
+
+ setShowFeedback(!showFeedback)} + /> + + setShowVideoGuides(!showVideoGuides)} + /> + setShowHelpCenter(!showHelpCenter)} + /> +
+ - setShowSample(!showSample)} - /> - setShowVideoGuides(!showVideoGuides)} - /> - setShowHelpCenter(!showHelpCenter)} - /> -
- console.log("click")} - onCancelClick={() => console.log("click")} - saveButtonLabel={t("Common:SaveButton")} - cancelButtonLabel={t("Settings:RestoreDefaultButton")} - displaySettings={true} - /> -
+ + ); }; -export default inject(({ auth, setup, common }) => {})( +export default inject(({ auth, setup, common }) => { + const { settingsStore } = auth; + const { + getAdditionalResources, + setAdditionalResources, + restoreAdditionalResources, + additionalResourcesData, + } = settingsStore; + + return { + getAdditionalResources, + setAdditionalResources, + restoreAdditionalResources, + additionalResourcesData, + }; +})( withLoading( withTranslation(["Settings", "Common"])(observer(AdditionalResources)) )