Web: Files: Settings: refactoring

This commit is contained in:
Artem Tarasov 2020-11-10 13:31:16 +03:00
parent 2f19e504aa
commit f578e43662
4 changed files with 45 additions and 25 deletions

View File

@ -81,15 +81,8 @@ const PureTreeSettings = ({
}) => { }) => {
useEffect(() => { useEffect(() => {
const { setting } = match.params; const { setting } = match.params;
if (selectedTreeNode[0] !== setting) setSelectedNode([setting]);
if (setting && !expandedSetting) setExpandSettingsTree(["settings"]); if (setting && !expandedSetting) setExpandSettingsTree(["settings"]);
}, [ }, [match, expandedSetting, setExpandSettingsTree]);
match,
selectedTreeNode,
expandedSetting,
setExpandSettingsTree,
setSelectedNode,
]);
useEffect(() => { useEffect(() => {
getFilesSettings(); getFilesSettings();
@ -158,7 +151,7 @@ const PureTreeSettings = ({
selectable={true} selectable={true}
className="settings-node" className="settings-node"
id="connected-clouds" id="connected-clouds"
key="thirdParty" key="thirdparty"
isLeaf={true} isLeaf={true}
title={t("TreeSettingsConnectedCloud")} title={t("TreeSettingsConnectedCloud")}
/> />

View File

@ -1,4 +1,4 @@
import React, { useEffect } from "react"; import React from "react";
import styled from "styled-components"; import styled from "styled-components";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { Heading, ToggleButton } from "asc-web-components"; import { Heading, ToggleButton } from "asc-web-components";
@ -22,7 +22,6 @@ import {
getSettingsTreeEnableThirdParty, getSettingsTreeEnableThirdParty,
getSettingsTree, getSettingsTree,
} from "../../../../../store/files/selectors"; } from "../../../../../store/files/selectors";
import { setDocumentTitle } from "../../../../../helpers/utils";
const { isAdmin } = store.auth.selectors; const { isAdmin } = store.auth.selectors;
@ -62,13 +61,9 @@ const SectionBodyContent = ({
isAdmin, isAdmin,
isErrorSettings, isErrorSettings,
settingsTree, settingsTree,
t, t,
}) => { }) => {
useEffect(() => {
const title = setting[0].toUpperCase() + setting.slice(1);
setDocumentTitle(t(`${title}`));
}, [setting, t]);
const onChangeStoreForceSave = () => { const onChangeStoreForceSave = () => {
setStoreForceSave(!storeForceSave, "storeForceSave"); setStoreForceSave(!storeForceSave, "storeForceSave");
}; };
@ -175,9 +170,9 @@ const SectionBodyContent = ({
if (setting === "admin" && isAdmin) content = renderAdminSettings(); if (setting === "admin" && isAdmin) content = renderAdminSettings();
if (setting === "common") content = renderCommonSettings(); if (setting === "common") content = renderCommonSettings();
if (setting === "thirdParty" && enableThirdParty) content = renderClouds(); if (setting === "thirdparty" && enableThirdParty) content = renderClouds();
return isLoading ? null : (!enableThirdParty && setting === "thirdParty") || return isLoading ? null : (!enableThirdParty && setting === "thirdparty") ||
(!isAdmin && setting === "admin") ? ( (!isAdmin && setting === "admin") ? (
<Error403 /> <Error403 />
) : isErrorSettings ? ( ) : isErrorSettings ? (

View File

@ -1,11 +1,10 @@
import React from "react"; import React from "react";
import { Headline } from "asc-web-common"; import { Headline } from "asc-web-common";
const SectionHeaderContent = ({ setting, t }) => { const SectionHeaderContent = ({ title }) => {
const title = setting[0].toUpperCase() + setting.slice(1);
return ( return (
<Headline className="headline-header" type="content" truncate={true}> <Headline className="headline-header" type="content" truncate={true}>
{t(`${title}Settings`)} {title}
</Headline> </Headline>
); );
}; };

View File

@ -1,4 +1,4 @@
import React, { useEffect } from "react"; import React, { useEffect, useState } from "react";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { withRouter } from "react-router"; import { withRouter } from "react-router";
import { PageLayout, utils, Loaders } from "asc-web-common"; import { PageLayout, utils, Loaders } from "asc-web-common";
@ -14,9 +14,12 @@ import {
getFilesSettings, getFilesSettings,
setIsLoading, setIsLoading,
setFirstLoad, setFirstLoad,
setSelectedNode,
} from "../../../store/files/actions"; } from "../../../store/files/actions";
import { getSettingsTree, getIsLoading } from "../../../store/files/selectors"; import { getSettingsTree, getIsLoading } from "../../../store/files/selectors";
import { setDocumentTitle } from "../../../helpers/utils";
const i18n = createI18N({ const i18n = createI18N({
page: "Settings", page: "Settings",
localesPath: "pages/Settings", localesPath: "pages/Settings",
@ -32,19 +35,44 @@ const PureSettings = ({
getFilesSettings, getFilesSettings,
setIsLoading, setIsLoading,
setFirstLoad, setFirstLoad,
setSelectedNode,
}) => { }) => {
//console.log("Settings render()"); const [title, setTitle] = useState("");
const { setting } = match.params; const { setting } = match.params;
useEffect(() => {
switch (setting) {
case "common":
setTitle("CommonSettings");
break;
case "admin":
setTitle("AdminSettings");
break;
case "thirdparty":
setTitle("ThirdPartySettings");
break;
default:
setTitle("CommonSettings");
break;
}
}, [setting]);
useEffect(() => { useEffect(() => {
if (Object.keys(settingsTree).length === 0) { if (Object.keys(settingsTree).length === 0) {
setIsLoading(true); setIsLoading(true);
getFilesSettings().then(() => { getFilesSettings().then(() => {
setIsLoading(false); setIsLoading(false);
setFirstLoad(false); setFirstLoad(false);
setSelectedNode([setting]);
}); });
} }
}, [getFilesSettings, setIsLoading, setFirstLoad, settingsTree]); }, [
setting,
getFilesSettings,
setIsLoading,
setFirstLoad,
settingsTree,
setSelectedNode,
]);
useEffect(() => { useEffect(() => {
if (isLoading) { if (isLoading) {
@ -56,6 +84,10 @@ const PureSettings = ({
//console.log("render settings"); //console.log("render settings");
useEffect(() => {
setDocumentTitle(t(`${title}`));
}, [title, t]);
return ( return (
<> <>
<PageLayout> <PageLayout>
@ -75,7 +107,7 @@ const PureSettings = ({
{Object.keys(settingsTree).length === 0 && isLoading ? ( {Object.keys(settingsTree).length === 0 && isLoading ? (
<Loaders.Headline /> <Loaders.Headline />
) : ( ) : (
<SectionHeaderContent setting={setting} t={t} /> <SectionHeaderContent title={t(`${title}`)} />
)} )}
</PageLayout.SectionHeader> </PageLayout.SectionHeader>
@ -116,6 +148,7 @@ const mapDispatchToProps = (dispatch) => {
setIsLoading: (isLoading) => dispatch(setIsLoading(isLoading)), setIsLoading: (isLoading) => dispatch(setIsLoading(isLoading)),
getFilesSettings: () => dispatch(getFilesSettings()), getFilesSettings: () => dispatch(getFilesSettings()),
setFirstLoad: (firstLoad) => dispatch(setFirstLoad(firstLoad)), setFirstLoad: (firstLoad) => dispatch(setFirstLoad(firstLoad)),
setSelectedNode: (node) => dispatch(setSelectedNode(node)),
}; };
}; };