diff --git a/src/client/Containers/Calculation/index.jsx b/src/client/Containers/Calculation/index.jsx
index 12206ea..85eef56 100644
--- a/src/client/Containers/Calculation/index.jsx
+++ b/src/client/Containers/Calculation/index.jsx
@@ -1,10 +1,10 @@
-import { LoadingStatus } from 'client/common/loadingStatus';
import Result from 'client/Components/Result';
import Spinner from 'client/Components/Spinner';
import Modal from 'client/Elements/Modal';
import withModal from 'client/hocs/Calculation/withModal';
+import { useFetch } from 'client/hooks/Calculation/useFetch';
import { Flex } from 'client/UIKit/grid';
-import React, { useEffect, useState } from 'react';
+import React from 'react';
import Info from './Info';
import fetchData from './lib/fetchData';
import Results from './Results';
@@ -12,22 +12,13 @@ import ResultsTable from './ResultsTable';
import Sections from './Sections';
const Calculation = () => {
- const [status, setStatus] = useState(LoadingStatus.loading);
- useEffect(() => {
- fetchData()
- .then(() => {
- setStatus(LoadingStatus.ready);
- })
- .catch(() => {
- setStatus(LoadingStatus.error);
- });
- }, []);
+ const { isLoading, error } = useFetch({ fetchData });
- if (status === LoadingStatus.loading) {
+ if (isLoading) {
return ;
}
- if (status === LoadingStatus.error) {
+ if (error) {
const ServerError = Result[500];
return ;
}
diff --git a/src/client/Containers/Calculation/lib/elements/elementsProps.ts b/src/client/Containers/Calculation/lib/elements/elementsProps.ts
index 5978205..86478fe 100644
--- a/src/client/Containers/Calculation/lib/elements/elementsProps.ts
+++ b/src/client/Containers/Calculation/lib/elements/elementsProps.ts
@@ -10,7 +10,7 @@ import {
validateInn,
validateKpp,
validatePhone,
-} from 'client/tools/validate';
+} from 'core/tools/validate';
import { DownloadOutlined } from '@ant-design/icons';
diff --git a/src/client/Containers/Calculation/lib/fetchData/index.js b/src/client/Containers/Calculation/lib/fetchData/index.js
index 1fb5da5..5f4bcd6 100644
--- a/src/client/Containers/Calculation/lib/fetchData/index.js
+++ b/src/client/Containers/Calculation/lib/fetchData/index.js
@@ -1,6 +1,6 @@
-import CrmService from 'client/services/CrmService';
+import CrmService from 'core/services/CrmService';
import CalculationStore from 'client/stores/CalculationStore';
-import { getUser } from 'client/tools/user';
+import { getUser } from 'core/tools/user';
import insuranceQuery from './queries/insuranceQuery';
import optionsQuery from './queries/optionsQuery';
import initialOwnerQuery from './queries/ownerQuery';
diff --git a/src/client/Containers/Calculation/lib/fetchData/queries/optionsQuery.ts b/src/client/Containers/Calculation/lib/fetchData/queries/optionsQuery.ts
index 2e1fa8c..d93352b 100644
--- a/src/client/Containers/Calculation/lib/fetchData/queries/optionsQuery.ts
+++ b/src/client/Containers/Calculation/lib/fetchData/queries/optionsQuery.ts
@@ -1,4 +1,4 @@
-import { currentDate } from 'client/tools/date';
+import { currentDate } from 'core/tools/date';
import { IQueryToCRMGQL } from 'core/types/Calculation/Requests';
import { gql } from '@apollo/client';
diff --git a/src/client/Containers/Calculation/lib/fetchData/queries/staticDataQuery.ts b/src/client/Containers/Calculation/lib/fetchData/queries/staticDataQuery.ts
index b492454..cb9a614 100644
--- a/src/client/Containers/Calculation/lib/fetchData/queries/staticDataQuery.ts
+++ b/src/client/Containers/Calculation/lib/fetchData/queries/staticDataQuery.ts
@@ -1,5 +1,5 @@
import { IQueryToCRMGQL } from 'core/types/Calculation/Requests';
-import { currentDate } from 'client/tools/date';
+import { currentDate } from 'core/tools/date';
import { gql } from '@apollo/client';
const query = gql`
diff --git a/src/client/Layout/routes.jsx b/src/client/Layout/routes.jsx
index 9105f53..59cf0f7 100644
--- a/src/client/Layout/routes.jsx
+++ b/src/client/Layout/routes.jsx
@@ -1,8 +1,8 @@
-import paths from 'client/common/paths';
+import paths from 'core/common/paths';
import Spinner from 'client/Components/Spinner';
import React, { Suspense } from 'react';
import { Route, Switch } from 'react-router-dom';
-import { container as resolveContainer } from 'client/tools/resolve';
+import { container as resolveContainer } from 'core/tools/resolve';
export default () => (
}>
diff --git a/src/client/common/loadingStatus.ts b/src/client/common/loadingStatus.ts
deleted file mode 100644
index 6fa0a8d..0000000
--- a/src/client/common/loadingStatus.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export enum LoadingStatus {
- loading,
- ready,
- error,
-}
diff --git a/src/client/hooks/Calculation/useFetch.js b/src/client/hooks/Calculation/useFetch.js
new file mode 100644
index 0000000..2a030b6
--- /dev/null
+++ b/src/client/hooks/Calculation/useFetch.js
@@ -0,0 +1,22 @@
+import { useEffect, useState } from 'react';
+
+export const useFetch = ({ fetchData }) => {
+ const [response, setResponse] = useState();
+ const [error, setError] = useState();
+ const [isLoading, setIsLoading] = useState(false);
+
+ useEffect(() => {
+ setIsLoading(true);
+ fetchData()
+ .then(res => {
+ setResponse(res);
+ })
+ .catch(err => {
+ setError(err);
+ })
+ .finally(() => {
+ setIsLoading(false);
+ });
+ }, []);
+ return { response, isLoading, error };
+};
diff --git a/src/client/hooks/Calculation/useUrl.js b/src/client/hooks/Calculation/useUrl.js
index 8968b48..ab80974 100644
--- a/src/client/hooks/Calculation/useUrl.js
+++ b/src/client/hooks/Calculation/useUrl.js
@@ -1,6 +1,7 @@
-import { calculationUrls } from 'client/stores/CalculationStore';
+import { useStores } from '../useStores';
export const useUrl = ({ urlName }) => {
+ const { calculationUrls } = useStores();
const url = calculationUrls.urls[urlName];
return { url };
};
diff --git a/src/client/hooks/Calculation/useValidation.ts b/src/client/hooks/Calculation/useValidation.ts
index 34fd755..7e8478d 100644
--- a/src/client/hooks/Calculation/useValidation.ts
+++ b/src/client/hooks/Calculation/useValidation.ts
@@ -1,7 +1,7 @@
/* eslint-disable react-hooks/exhaustive-deps */
import { ValidateStatus } from 'antd/lib/form/FormItem';
-import { INVALID_INPUT as INVALID_INPUT_MESSAGE } from 'client/constants/errorMessages';
+import { INVALID_INPUT as INVALID_INPUT_MESSAGE } from 'core/constants/errorMessages';
import { ElementsNames } from 'core/types/Calculation/Store/elements';
import {
TableNames,
diff --git a/src/client/hooks/Calculation/useValue.js b/src/client/hooks/Calculation/useValue.js
index bfaeb3a..05e2f51 100644
--- a/src/client/hooks/Calculation/useValue.js
+++ b/src/client/hooks/Calculation/useValue.js
@@ -1,5 +1,5 @@
/* eslint-disable react-hooks/exhaustive-deps */
-import { DEFAULT_DEBOUNCE_DELAY } from 'client/constants/debounce';
+import { DEFAULT_DEBOUNCE_DELAY } from 'core/constants/debounce';
import { Process } from 'core/types/Calculation/Store/process';
import { useEffect, useState } from 'react';
import { useDebouncedCallback } from 'use-debounce';
diff --git a/src/client/stores/CalculationStore/Effects/actions/calculate/index.js b/src/client/stores/CalculationStore/Effects/actions/calculate/index.js
index 7459c10..6addcd0 100644
--- a/src/client/stores/CalculationStore/Effects/actions/calculate/index.js
+++ b/src/client/stores/CalculationStore/Effects/actions/calculate/index.js
@@ -1,6 +1,6 @@
import { message } from 'antd';
import { openNotification } from 'client/Elements/Notification';
-import CalculationService from 'client/services/CalculationService';
+import CalculationService from 'core/services/CalculationService';
import { resultsValues } from 'core/types/Calculation/Store/values';
import { ElementStatus } from 'core/types/statuses';
import CalculationStore from '../../..';
diff --git a/src/client/stores/CalculationStore/Effects/actions/createKP.js b/src/client/stores/CalculationStore/Effects/actions/createKP.js
index 407f074..69be1ba 100644
--- a/src/client/stores/CalculationStore/Effects/actions/createKP.js
+++ b/src/client/stores/CalculationStore/Effects/actions/createKP.js
@@ -1,8 +1,8 @@
import { gql } from '@apollo/client';
import { message } from 'antd';
import { openNotification } from 'client/Elements/Notification';
-import CrmService from 'client/services/CrmService';
-import { getUser } from 'client/tools/user';
+import CrmService from 'core/services/CrmService';
+import { getUser } from 'core/tools/user';
import { CRM_PROXY_URL } from 'core/constants/urls';
import { toJS } from 'mobx';
import CalculationStore, { calculationUrls } from '../..';
diff --git a/src/client/stores/CalculationStore/Effects/reactions/loadKpReaction/index.ts b/src/client/stores/CalculationStore/Effects/reactions/loadKpReaction/index.ts
index 35a7333..c1e43cf 100644
--- a/src/client/stores/CalculationStore/Effects/reactions/loadKpReaction/index.ts
+++ b/src/client/stores/CalculationStore/Effects/reactions/loadKpReaction/index.ts
@@ -3,10 +3,10 @@
import { message } from 'antd';
import { elementsValues } from 'client/Containers/Calculation/lib/elements/values';
import { openNotification } from 'client/Elements/Notification';
-import CrmService from 'client/services/CrmService';
+import CrmService from 'core/services/CrmService';
import { calculationProcess } from 'client/stores/CalculationStore';
import initialValues from 'client/stores/CalculationStore/config/initialValues';
-import { currentDate } from 'client/tools/date';
+import { currentDate } from 'core/tools/date';
import { IReactionEffect } from 'core/types/Calculation/Store/effect';
import { Process } from 'core/types/Calculation/Store/process';
import { ElementStatus } from 'core/types/statuses';
diff --git a/src/client/stores/CalculationStore/Effects/reactions/requestReactions.ts b/src/client/stores/CalculationStore/Effects/reactions/requestReactions.ts
index e40761a..fd83ec7 100644
--- a/src/client/stores/CalculationStore/Effects/reactions/requestReactions.ts
+++ b/src/client/stores/CalculationStore/Effects/reactions/requestReactions.ts
@@ -1,6 +1,6 @@
import { gql } from '@apollo/client';
-import CrmService from 'client/services/CrmService';
-import { currentDate } from 'client/tools/date';
+import CrmService from 'core/services/CrmService';
+import { currentDate } from 'core/tools/date';
import { IReactionEffect } from 'core/types/Calculation/Store/effect';
import { ElementStatus } from 'core/types/statuses';
import { Process } from 'core/types/Calculation/Store/process';
diff --git a/src/client/stores/index.js b/src/client/stores/index.js
index 3446553..d19aa04 100644
--- a/src/client/stores/index.js
+++ b/src/client/stores/index.js
@@ -1,9 +1,13 @@
-import CalculationStore, { calculationProcess } from './CalculationStore';
+import CalculationStore, {
+ calculationProcess,
+ calculationUrls,
+} from './CalculationStore';
class RootStore {
constructor() {
this.calculationStore = CalculationStore;
this.calculationProcess = calculationProcess;
+ this.calculationUrls = calculationUrls;
}
}
diff --git a/src/client/common/paths.js b/src/core/common/paths.js
similarity index 100%
rename from src/client/common/paths.js
rename to src/core/common/paths.js
diff --git a/src/client/constants/debounce.js b/src/core/constants/debounce.js
similarity index 100%
rename from src/client/constants/debounce.js
rename to src/core/constants/debounce.js
diff --git a/src/client/constants/errorMessages.js b/src/core/constants/errorMessages.js
similarity index 100%
rename from src/client/constants/errorMessages.js
rename to src/core/constants/errorMessages.js
diff --git a/src/client/services/CalculationService/index.ts b/src/core/services/CalculationService/index.ts
similarity index 100%
rename from src/client/services/CalculationService/index.ts
rename to src/core/services/CalculationService/index.ts
diff --git a/src/client/services/CrmService/client.ts b/src/core/services/CrmService/client.ts
similarity index 74%
rename from src/client/services/CrmService/client.ts
rename to src/core/services/CrmService/client.ts
index ffc3670..642ba4a 100644
--- a/src/client/services/CrmService/client.ts
+++ b/src/core/services/CrmService/client.ts
@@ -2,6 +2,6 @@ import { ApolloClient, InMemoryCache } from '@apollo/client';
import { CRM_PROXY_URL } from 'core/constants/urls';
export default new ApolloClient({
- uri: String.prototype.concat('/proxy', CRM_PROXY_URL, '/'),
+ uri: String.prototype.concat(CRM_PROXY_URL, '/'),
cache: new InMemoryCache(),
});
diff --git a/src/client/services/CrmService/index.ts b/src/core/services/CrmService/index.ts
similarity index 100%
rename from src/client/services/CrmService/index.ts
rename to src/core/services/CrmService/index.ts
diff --git a/src/client/services/CrmService/propsMap.ts b/src/core/services/CrmService/propsMap.ts
similarity index 100%
rename from src/client/services/CrmService/propsMap.ts
rename to src/core/services/CrmService/propsMap.ts
diff --git a/src/client/services/CrmService/tools/entity.ts b/src/core/services/CrmService/tools/entity.ts
similarity index 100%
rename from src/client/services/CrmService/tools/entity.ts
rename to src/core/services/CrmService/tools/entity.ts
diff --git a/src/client/tools/assignProps.js b/src/core/tools/assignProps.js
similarity index 100%
rename from src/client/tools/assignProps.js
rename to src/core/tools/assignProps.js
diff --git a/src/client/tools/date.js b/src/core/tools/date.js
similarity index 100%
rename from src/client/tools/date.js
rename to src/core/tools/date.js
diff --git a/src/client/tools/resolve.js b/src/core/tools/resolve.js
similarity index 100%
rename from src/client/tools/resolve.js
rename to src/core/tools/resolve.js
diff --git a/src/client/tools/user.ts b/src/core/tools/user.ts
similarity index 100%
rename from src/client/tools/user.ts
rename to src/core/tools/user.ts
diff --git a/src/client/tools/validate.js b/src/core/tools/validate.js
similarity index 100%
rename from src/client/tools/validate.js
rename to src/core/tools/validate.js