Web: Client: fixed double api requests

This commit is contained in:
Nikita Gopienko 2022-06-20 18:56:12 +03:00
parent aa53acccd9
commit d6ad1325f6
2 changed files with 26 additions and 18 deletions

View File

@ -1,4 +1,4 @@
import React, { useEffect, useState } from "react"; import React, { useEffect } from "react";
import { Router, Switch, Route, Redirect } from "react-router-dom"; import { Router, Switch, Route, Redirect } from "react-router-dom";
import { inject, observer } from "mobx-react"; import { inject, observer } from "mobx-react";
import NavMenu from "./components/NavMenu"; import NavMenu from "./components/NavMenu";
@ -198,11 +198,8 @@ const Shell = ({ items = [], page = "home", ...rest }) => {
roomsMode, roomsMode,
setSnackbarExist, setSnackbarExist,
userTheme, userTheme,
currentProductId,
} = rest; } = rest;
const [isDocuments, setIsDocuments] = useState(false);
useEffect(() => { useEffect(() => {
try { try {
if (!window.AppServer) { if (!window.AppServer) {
@ -429,14 +426,6 @@ const Shell = ({ items = [], page = "home", ...rest }) => {
if (userTheme) setTheme(userTheme); if (userTheme) setTheme(userTheme);
}, [userTheme]); }, [userTheme]);
useEffect(() => {
if (window.location.pathname.toLowerCase().includes("files")) {
setIsDocuments(true);
} else {
setIsDocuments(false);
}
}, [currentProductId]);
const pathname = window.location.pathname.toLowerCase(); const pathname = window.location.pathname.toLowerCase();
const isEditor = pathname.indexOf("doceditor") !== -1; const isEditor = pathname.indexOf("doceditor") !== -1;
@ -522,7 +511,7 @@ const Shell = ({ items = [], page = "home", ...rest }) => {
<Layout> <Layout>
<Router history={history}> <Router history={history}>
<> <>
{isDocuments ? <ReactSmartBanner t={t} ready={ready} /> : <></>} <ReactSmartBanner t={t} ready={ready} />
{isEditor ? <></> : <NavMenu />} {isEditor ? <></> : <NavMenu />}
<ScrollToTop /> <ScrollToTop />
<Main isDesktop={isDesktop}> <Main isDesktop={isDesktop}>
@ -585,7 +574,6 @@ const ShellWrapper = inject(({ auth, backup }) => {
setSnackbarExist, setSnackbarExist,
socketHelper, socketHelper,
setTheme, setTheme,
currentProductId,
} = settingsStore; } = settingsStore;
const { setPreparationPortalDialogVisible } = backup; const { setPreparationPortalDialogVisible } = backup;
@ -614,7 +602,6 @@ const ShellWrapper = inject(({ auth, backup }) => {
roomsMode, roomsMode,
setSnackbarExist, setSnackbarExist,
userTheme: auth?.userStore?.user?.theme, userTheme: auth?.userStore?.user?.theme,
currentProductId,
}; };
})(observer(Shell)); })(observer(Shell));

View File

@ -10,9 +10,17 @@ const Wrapper = styled.div`
`; `;
const ReactSmartBanner = (props) => { const ReactSmartBanner = (props) => {
const { t, ready, isBannerVisible, setIsBannerVisible } = props; const {
t,
ready,
isBannerVisible,
setIsBannerVisible,
currentProductId,
} = props;
const force = isIOS ? "ios" : "android"; const force = isIOS ? "ios" : "android";
const [isDocuments, setIsDocuments] = useState(false);
const getCookie = (name) => { const getCookie = (name) => {
let matches = document.cookie.match( let matches = document.cookie.match(
new RegExp( new RegExp(
@ -34,6 +42,14 @@ const ReactSmartBanner = (props) => {
if (cookieClosed || cookieInstalled) hideBanner(); if (cookieClosed || cookieInstalled) hideBanner();
}, []); }, []);
useEffect(() => {
if (window.location.pathname.toLowerCase().includes("files")) {
setIsDocuments(true);
} else {
setIsDocuments(false);
}
}, [currentProductId]);
const storeText = { const storeText = {
ios: t("SmartBanner:AppStore"), ios: t("SmartBanner:AppStore"),
android: t("SmartBanner:GooglePlay"), android: t("SmartBanner:GooglePlay"),
@ -60,7 +76,11 @@ const ReactSmartBanner = (props) => {
navigator.maxTouchPoints > 0 || navigator.maxTouchPoints > 0 ||
navigator.msMaxTouchPoints > 0; navigator.msMaxTouchPoints > 0;
return isMobile && isBannerVisible && ready && isTouchDevice ? ( return isMobile &&
isBannerVisible &&
ready &&
isTouchDevice &&
isDocuments ? (
<Wrapper> <Wrapper>
<SmartBanner <SmartBanner
title={t("SmartBanner:AppName")} title={t("SmartBanner:AppName")}
@ -79,9 +99,10 @@ const ReactSmartBanner = (props) => {
); );
}; };
export default inject(({ bannerStore }) => { export default inject(({ auth, bannerStore }) => {
return { return {
isBannerVisible: bannerStore.isBannerVisible, isBannerVisible: bannerStore.isBannerVisible,
setIsBannerVisible: bannerStore.setIsBannerVisible, setIsBannerVisible: bannerStore.setIsBannerVisible,
currentProductId: auth.settingsStore.currentProductId,
}; };
})(observer(ReactSmartBanner)); })(observer(ReactSmartBanner));