From 8592c870d8af794d173320bd607480969f6d07ca Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Mon, 25 Sep 2023 13:39:24 +0300 Subject: [PATCH] =?UTF-8?q?WEB=20APP:=20BackEndContext=20=D0=BE=D1=82?= =?UTF-8?q?=D0=B2=D1=8F=D0=B7=D0=B0=D0=BD=20=D0=BE=D1=82=20=D0=B8=D1=81?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=B3=D0=BB=D0=BE=D0=B1=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B?= =?UTF-8?q?=D1=85=20=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/context/backend.js | 31 ++++++++++++++++++++++++------- app/root.js | 3 ++- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/app/context/backend.js b/app/context/backend.js index c9f67ff..7964d81 100644 --- a/app/context/backend.js +++ b/app/context/backend.js @@ -9,9 +9,25 @@ import React, { createContext, useContext, useCallback } from "react"; //ReactJS import PropTypes from "prop-types"; //Контроль свойств компонента -import client from "../core/client"; //Клиент для взаимодействия с сервером import { MessagingСtx } from "./messaging"; //Контекст сообщений +//--------- +//Константы +//--------- + +//Структура объекта клиента +const P8P_CLIENT_SHAPE = PropTypes.shape({ + SERV_DATA_TYPE_STR: PropTypes.string.isRequired, + SERV_DATA_TYPE_NUMB: PropTypes.string.isRequired, + SERV_DATA_TYPE_DATE: PropTypes.string.isRequired, + SERV_DATA_TYPE_CLOB: PropTypes.string.isRequired, + isRespErr: PropTypes.func.isRequired, + getRespErrMessage: PropTypes.func.isRequired, + getRespPayload: PropTypes.func.isRequired, + executeStored: PropTypes.func.isRequired, + getConfig: PropTypes.func.isRequired +}); + //---------------- //Интерфейс модуля //---------------- @@ -20,18 +36,18 @@ import { MessagingСtx } from "./messaging"; //Контекст сообщени export const BackEndСtx = createContext(); //Провайдер контекста взаимодействия с серверным API -export const BackEndContext = ({ children }) => { +export const BackEndContext = ({ client, children }) => { //Подключение к контексту сообщений const { showLoader, hideLoader, showMsgErr } = useContext(MessagingСtx); //Проверка ответа на наличие ошибки - const isRespErr = useCallback(resp => client.isRespErr(resp), []); + const isRespErr = useCallback(resp => client.isRespErr(resp), [client]); //Извлечение ошибки из ответа - const getRespErrMessage = useCallback(resp => client.getRespErrMessage(resp), []); + const getRespErrMessage = useCallback(resp => client.getRespErrMessage(resp), [client]); //Извлечение полезного содержимого из ответа - const getRespPayload = useCallback(resp => client.getRespPayload(resp), []); + const getRespPayload = useCallback(resp => client.getRespPayload(resp), [client]); //Запуск хранимой процедуры const executeStored = useCallback( @@ -58,7 +74,7 @@ export const BackEndContext = ({ children }) => { if (loader !== false) hideLoader(); } }, - [showLoader, hideLoader, isRespErr, showMsgErr] + [showLoader, hideLoader, isRespErr, showMsgErr, client] ); //Загрузка настроек панелей @@ -75,7 +91,7 @@ export const BackEndContext = ({ children }) => { if (loader !== false) hideLoader(); } }, - [showLoader, hideLoader, showMsgErr] + [showLoader, hideLoader, showMsgErr, client] ); //Вернём компонент провайдера @@ -100,5 +116,6 @@ export const BackEndContext = ({ children }) => { //Контроль свойств - Провайдер контекста взаимодействия с серверным API BackEndContext.propTypes = { + client: P8P_CLIENT_SHAPE.isRequired, children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]) }; diff --git a/app/root.js b/app/root.js index c9507fb..b0ef637 100644 --- a/app/root.js +++ b/app/root.js @@ -13,6 +13,7 @@ import { BackEndContext } from "./context/backend"; //Контекст взаи import { ApplicationContext } from "./context/application"; //Контекст приложения import { App } from "./app"; //Приложение import { genGUID } from "./core/utils"; //Вспомогательные функции +import client from "./core/client"; //Клиент для взаимодействия с сервером //----------- //Тело модуля @@ -22,7 +23,7 @@ import { genGUID } from "./core/utils"; //Вспомогательные фун const Root = () => { return ( - +