\r\n\r\n \r\n >\r\n );\r\n\r\n if (props.hasUpdate === false)\r\n return \r\n\r\n return (\r\n \r\n \r\n \r\n После отправки запроса приложение будет временно недоступно, до завершение обновления\r\n
\r\n \r\n \r\n {status === 'pending' ? Loader : Form}\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default connector(UpdateInfo);","import Grid from '@material-ui/core/Grid';\r\nimport { Alert, AlertTitle } from '@material-ui/lab';\r\nimport Loader from './../../Common/Loader/Loader';\r\nimport { ApplicationState } from './../../../store/index';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { StartPagePath } from './../../../Interface/RouteConst';\r\nimport { connect, ConnectedProps } from 'react-redux';\r\nimport { useEffect, useState } from 'react';\r\n\r\nconst mapStateToProps = (state: ApplicationState) => ({\r\n updateting: state.appAuth.appAuth.updateProcess\r\n});\r\n\r\nconst connector = connect(mapStateToProps);\r\ntype PropsFromRedux = ConnectedProps;\r\n\r\nconst StartUpdateInfo = (props: PropsFromRedux) => {\r\n const [hasErrorUpdate, setHasErrorUpdate] = useState(false);\r\n\r\n useEffect(() => {\r\n const timeout = setTimeout(() => setHasErrorUpdate(true), 1200000); \r\n\r\n return () => clearTimeout(timeout);\r\n }, [])\r\n\r\n let message : JSX.Element | null = null;\r\n\r\n if(hasErrorUpdate === false)\r\n {\r\n message = Приложение обновляетсяПожалуйста, подождите\r\n }\r\n else\r\n {\r\n message = Ошибка обновления приложенияПожалуйста, обратитесь к администратору\r\n }\r\n \r\n\r\n if (props.updateting === false)\r\n return \r\n\r\n return (\r\n \r\n \r\n {message}\r\n {Loader}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default connector(StartUpdateInfo);","\r\nimport Grid from '@material-ui/core/Grid';\r\nimport { Alert, AlertTitle } from '@material-ui/lab';\r\nimport Loader from '../Loader/Loader';\r\nimport { ApplicationState } from '../../../store/index';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { StartPagePath } from '../../../Interface/RouteConst';\r\nimport { connect, ConnectedProps } from 'react-redux';\r\n\r\nconst mapStateToProps = (state: ApplicationState) => ({\r\n blockDbChanges: state.appAuth.appAuth.blockDbChanges\r\n});\r\n\r\nconst connector = connect(mapStateToProps);\r\ntype PropsFromRedux = ConnectedProps;\r\n\r\n\r\nconst StartUpdateDbInfo = (props: PropsFromRedux) => {\r\n\r\n if (props.blockDbChanges === false)\r\n return \r\n\r\n return (\r\n \r\n \r\n База данных приложения обновляетсяПожалуйста, подождите\r\n {Loader}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default connector(StartUpdateDbInfo);","import buildDate from \"./../../../buildDate.json\";\r\nimport { get } from \"./../../../Utils/Fetch\";\r\nimport { useState, useEffect } from 'react';\r\nimport { IBuildDate } from \"./../../../Interface/MainTypes\";\r\nimport { Alert } from '@material-ui/lab';\r\nimport RefreshIcon from '@material-ui/icons/Refresh';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\nconst ClearCacheComponent = () => {\r\n const [intervalId, setIntervalId] = useState(null);\r\n const [showQuery, setShowQuery] = useState(false);\r\n\r\n const onReload = () => {\r\n window.location.reload();\r\n }\r\n\r\n const ClearTimer = () => {\r\n if (intervalId)\r\n clearInterval(intervalId);\r\n }\r\n\r\n useEffect(() => {\r\n\r\n let intervalID = setInterval(() => {\r\n\r\n const timeLabel = new Date().getTime();\r\n const url : string = `meta.json?v${timeLabel}`;\r\n\r\n get(url)\r\n .then((response: IBuildDate) => {\r\n if ((showQuery === false) && (response.buildDate !== buildDate.buildDate)) {\r\n setShowQuery(true);\r\n }\r\n })\r\n .catch(error => {\r\n console.log(\"Error status chank\", error);\r\n })\r\n\r\n }, 180000); // 3 мин. 180000\r\n\r\n setIntervalId(intervalID);\r\n\r\n return () => ClearTimer();\r\n }, [])\r\n\r\n const handleClose = (event?: React.SyntheticEvent, reason?: string) => {\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n\r\n setShowQuery(false);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n >\r\n }\r\n >\r\n Сайт был обновлен. Чтобы избежать ошибок, рекомендуем перезагрузить страницу\r\n \r\n \r\n )\r\n\r\n}\r\n\r\nexport default ClearCacheComponent;","\r\nimport Grid from '@material-ui/core/Grid';\r\nimport { Alert, AlertTitle } from '@material-ui/lab';\r\nimport Loader from '../Loader/Loader';\r\nimport { ApplicationState } from '../../../store/index';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { StartPagePath } from '../../../Interface/RouteConst';\r\nimport { connect, ConnectedProps } from 'react-redux';\r\nimport { IComponentStatus } from './../../../Interface/MainTypes';\r\nimport { useEffect, useState } from 'react';\r\nimport { get } from './../../../Utils/Fetch';\r\nimport { apiImportDataGetFullPathFileDb } from './../../../Interface/ServerRouteConst';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport FileCopyIcon from '@material-ui/icons/FileCopy';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport AlertIconOverride from './../AlertIconOverride/AlertIconOverride';\r\n\r\n\r\nconst mapStateToProps = (state: ApplicationState) => ({\r\n dbUpdateProcessHasError: state.appAuth.appAuth.dbUpdateProcessHasError\r\n});\r\n\r\nconst connector = connect(mapStateToProps);\r\ntype PropsFromRedux = ConnectedProps;\r\n\r\n\r\nconst DbUpdateHasError = (props: PropsFromRedux) => {\r\n const [status, setStatus] = useState('idle');\r\n const [fullPathFile, setFullPathFile] = useState('');\r\n const [showSnack, setShowSnack] = useState(false);\r\n\r\n useEffect(() => {\r\n setStatus('pending');\r\n\r\n get(apiImportDataGetFullPathFileDb)\r\n .then((responseFolder: string) => {\r\n setFullPathFile(responseFolder);\r\n setStatus('success');\r\n })\r\n\r\n }, []);\r\n\r\n const handelCloseSnack = () => setShowSnack(false);\r\n\r\n const copyPath = () => {\r\n if (fullPathFile.length > 0) {\r\n navigator.clipboard.writeText(fullPathFile);\r\n setShowSnack(true);\r\n }\r\n }\r\n\r\n if (props.dbUpdateProcessHasError === false)\r\n return \r\n\r\n if (status === 'pending') {\r\n return (\r\n \r\n \r\n {Loader}\r\n \r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n \r\n Ошибка обновления базы данных\r\n