From b0adcad59e942e2a459fe1dcd2f5324cf292ebf3 Mon Sep 17 00:00:00 2001 From: boa604 Date: Thu, 26 Feb 2026 13:15:34 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=D0=B0=D1=80=D0=B8=D0=B5=D0=B2=20=D0=B4=D0=BB=D1=8F?= =?UTF-8?q?=20=D0=B8=D0=BC=D0=BF=D0=BE=D1=80=D1=82=D0=BE=D0=B2,=20=D0=B2?= =?UTF-8?q?=D1=8B=D0=BD=D0=B5=D1=81=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D0=B1?= =?UTF-8?q?=D1=89=D0=B5=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D1=83?= =?UTF-8?q?=D0=B5=D0=BC=D1=8B=D1=85=20=D0=BA=D0=BE=D0=BD=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D0=BD=D1=82=20=D0=B2=20=D0=BE=D1=82=D0=B4=D0=B5=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D1=8B=D0=B5=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D0=B8,=20?= =?UTF-8?q?=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=B5?= =?UTF-8?q?=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D1=83=D0=B5=D0=BC?= =?UTF-8?q?=D1=8B=D1=85=20=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/OrganizationSelectDialog.js | 12 +- rn/app/src/components/common/AppSwitch.js | 10 +- .../src/components/common/LoadingOverlay.js | 8 +- rn/app/src/components/common/PasswordInput.js | 8 +- .../src/components/layout/AppAuthProvider.js | 4 +- rn/app/src/components/layout/AppHeader.js | 3 +- rn/app/src/components/layout/AppRoot.js | 7 +- rn/app/src/components/menu/MenuUserInfo.js | 10 +- rn/app/src/config/appAssets.js | 2 +- rn/app/src/config/appConfig.js | 2 +- rn/app/src/config/dialogButtons.js | 2 +- rn/app/src/config/messages.js | 46 +++++++- rn/app/src/database/SQLiteDatabase.js | 6 +- rn/app/src/database/sql/SQLFileLoader.js | 2 +- rn/app/src/hooks/useAppMode.js | 2 +- rn/app/src/hooks/useAppServer.js | 2 +- rn/app/src/hooks/useAuth.js | 12 +- rn/app/src/hooks/useLocalDb.js | 4 +- rn/app/src/screens/AuthScreen.js | 75 +++++++----- rn/app/src/screens/MainScreen.js | 29 +++-- rn/app/src/screens/SettingsScreen.js | 51 ++++---- .../auth/OrganizationSelectDialog.styles.js | 8 +- rn/app/src/styles/common/AppSwitch.styles.js | 6 +- .../styles/common/LoadingOverlay.styles.js | 8 +- .../src/styles/common/PasswordInput.styles.js | 8 +- .../styles/layout/AppAuthProvider.styles.js | 17 --- .../layout/AppLocalDbProvider.styles.js | 17 --- rn/app/src/styles/layout/AppMenu.styles.js | 109 ------------------ .../layout/AppMessagingProvider.styles.js | 17 --- .../styles/layout/AppModeProvider.styles.js | 17 --- .../layout/AppNavigationProvider.styles.js | 17 --- .../AppPreTripInspectionsProvider.styles.js | 17 --- .../styles/layout/AppServerProvider.styles.js | 17 --- rn/app/src/styles/menu/MenuUserInfo.styles.js | 8 +- .../src/styles/screens/AuthScreen.styles.js | 8 +- .../styles/screens/SettingsScreen.styles.js | 8 +- rn/app/src/utils/deviceId.js | 2 +- 37 files changed, 211 insertions(+), 370 deletions(-) delete mode 100644 rn/app/src/styles/layout/AppAuthProvider.styles.js delete mode 100644 rn/app/src/styles/layout/AppLocalDbProvider.styles.js delete mode 100644 rn/app/src/styles/layout/AppMenu.styles.js delete mode 100644 rn/app/src/styles/layout/AppMessagingProvider.styles.js delete mode 100644 rn/app/src/styles/layout/AppModeProvider.styles.js delete mode 100644 rn/app/src/styles/layout/AppNavigationProvider.styles.js delete mode 100644 rn/app/src/styles/layout/AppPreTripInspectionsProvider.styles.js delete mode 100644 rn/app/src/styles/layout/AppServerProvider.styles.js diff --git a/rn/app/src/components/auth/OrganizationSelectDialog.js b/rn/app/src/components/auth/OrganizationSelectDialog.js index 09b7ed7..2f9ec1b 100644 --- a/rn/app/src/components/auth/OrganizationSelectDialog.js +++ b/rn/app/src/components/auth/OrganizationSelectDialog.js @@ -7,12 +7,12 @@ //Подключение библиотек //--------------------- -const React = require('react'); -const { Modal, View, FlatList, Pressable, Keyboard } = require('react-native'); -const { useSafeAreaInsets } = require('react-native-safe-area-context'); -const AppText = require('../common/AppText'); -const AppButton = require('../common/AppButton'); -const styles = require('../../styles/auth/OrganizationSelectDialog.styles'); +const React = require('react'); //React +const { Modal, View, FlatList, Pressable, Keyboard } = require('react-native'); //Модальное окно и список +const { useSafeAreaInsets } = require('react-native-safe-area-context'); //Отступы безопасной области +const AppText = require('../common/AppText'); //Общий текст +const AppButton = require('../common/AppButton'); //Кнопка +const styles = require('../../styles/auth/OrganizationSelectDialog.styles'); //Стили диалога //----------- //Тело модуля diff --git a/rn/app/src/components/common/AppSwitch.js b/rn/app/src/components/common/AppSwitch.js index 52b7749..c89a07a 100644 --- a/rn/app/src/components/common/AppSwitch.js +++ b/rn/app/src/components/common/AppSwitch.js @@ -7,11 +7,11 @@ //Подключение библиотек //--------------------- -const React = require('react'); -const { Switch, Pressable } = require('react-native'); -const AppText = require('./AppText'); -const styles = require('../../styles/common/AppSwitch.styles'); -const { APP_COLORS } = require('../../config/theme'); +const React = require('react'); //React +const { Switch, Pressable } = require('react-native'); //Переключатель и нажатие +const AppText = require('./AppText'); //Общий текст +const styles = require('../../styles/common/AppSwitch.styles'); //Стили переключателя +const { APP_COLORS } = require('../../config/theme'); //Цветовая схема //----------- //Тело модуля diff --git a/rn/app/src/components/common/LoadingOverlay.js b/rn/app/src/components/common/LoadingOverlay.js index 6635d37..4c19730 100644 --- a/rn/app/src/components/common/LoadingOverlay.js +++ b/rn/app/src/components/common/LoadingOverlay.js @@ -7,10 +7,10 @@ //Подключение библиотек //--------------------- -const React = require('react'); -const { Modal, View, ActivityIndicator } = require('react-native'); -const AppText = require('./AppText'); -const styles = require('../../styles/common/LoadingOverlay.styles'); +const React = require('react'); //React +const { Modal, View, ActivityIndicator } = require('react-native'); //Модальное окно и индикатор +const AppText = require('./AppText'); //Общий текст +const styles = require('../../styles/common/LoadingOverlay.styles'); //Стили оверлея //----------- //Тело модуля diff --git a/rn/app/src/components/common/PasswordInput.js b/rn/app/src/components/common/PasswordInput.js index 65e3912..7a118f3 100644 --- a/rn/app/src/components/common/PasswordInput.js +++ b/rn/app/src/components/common/PasswordInput.js @@ -7,10 +7,10 @@ //Подключение библиотек //--------------------- -const React = require('react'); -const { View, TextInput, Pressable } = require('react-native'); -const AppText = require('./AppText'); -const styles = require('../../styles/common/PasswordInput.styles'); +const React = require('react'); //React +const { View, TextInput, Pressable } = require('react-native'); //Разметка и поле ввода +const AppText = require('./AppText'); //Общий текст +const styles = require('../../styles/common/PasswordInput.styles'); //Стили поля пароля //----------- //Тело модуля diff --git a/rn/app/src/components/layout/AppAuthProvider.js b/rn/app/src/components/layout/AppAuthProvider.js index 52b39ec..47eb557 100644 --- a/rn/app/src/components/layout/AppAuthProvider.js +++ b/rn/app/src/components/layout/AppAuthProvider.js @@ -7,8 +7,8 @@ //Подключение библиотек //--------------------- -const React = require('react'); -const useAuth = require('../../hooks/useAuth'); +const React = require('react'); //React +const useAuth = require('../../hooks/useAuth'); //Хук авторизации //----------- //Тело модуля diff --git a/rn/app/src/components/layout/AppHeader.js b/rn/app/src/components/layout/AppHeader.js index 269099c..adfb27d 100644 --- a/rn/app/src/components/layout/AppHeader.js +++ b/rn/app/src/components/layout/AppHeader.js @@ -13,6 +13,7 @@ const AppText = require('../common/AppText'); //Общий текстовый к const AppLogo = require('../common/AppLogo'); //Логотип приложения const { useAppModeContext } = require('./AppModeProvider'); //Контекст режима работы const { useAppNavigationContext } = require('./AppNavigationProvider'); //Контекст навигации +const { SCREEN_TITLE_SETTINGS } = require('../../config/messages'); //Заголовки экранов const styles = require('../../styles/layout/AppHeader.styles'); //Стили заголовка //----------- @@ -60,7 +61,7 @@ function AppHeader({ title, subtitle, showMenuButton = true, onMenuPress, showBa case SCREENS.MAIN: return 'Парус© Предрейсовые осмотры'; case SCREENS.SETTINGS: - return 'Настройки'; + return SCREEN_TITLE_SETTINGS; default: return 'Парус© Предрейсовые осмотры'; } diff --git a/rn/app/src/components/layout/AppRoot.js b/rn/app/src/components/layout/AppRoot.js index 453968b..b72bd35 100644 --- a/rn/app/src/components/layout/AppRoot.js +++ b/rn/app/src/components/layout/AppRoot.js @@ -8,9 +8,10 @@ //--------------------- const React = require('react'); //React и хуки -const { useColorScheme } = require('react-native'); //Определение темы устройства +const { useColorScheme, View } = require('react-native'); //Определение темы устройства и разметка const { SafeAreaProvider } = require('react-native-safe-area-context'); //Провайдер безопасной области const AppShell = require('./AppShell'); //Оболочка приложения +const styles = require('../../styles/layout/AppRoot.styles'); //Стили корневого layout const { useAppNavigationContext } = require('./AppNavigationProvider'); //Контекст навигации const { useAppAuthContext } = require('./AppAuthProvider'); //Контекст авторизации const { useAppLocalDbContext } = require('./AppLocalDbProvider'); //Контекст локальной БД @@ -48,7 +49,9 @@ function AppRoot() { return ( - + + + ); } diff --git a/rn/app/src/components/menu/MenuUserInfo.js b/rn/app/src/components/menu/MenuUserInfo.js index 9d76dca..0867245 100644 --- a/rn/app/src/components/menu/MenuUserInfo.js +++ b/rn/app/src/components/menu/MenuUserInfo.js @@ -7,11 +7,11 @@ //Подключение библиотек //--------------------- -const React = require('react'); -const { View } = require('react-native'); -const AppText = require('../common/AppText'); -const { getModeLabel } = require('../../utils/appInfo'); -const styles = require('../../styles/menu/MenuUserInfo.styles'); +const React = require('react'); //React +const { View } = require('react-native'); //Разметка +const AppText = require('../common/AppText'); //Общий текст +const { getModeLabel } = require('../../utils/appInfo'); //Подпись режима работы +const styles = require('../../styles/menu/MenuUserInfo.styles'); //Стили блока пользователя //----------- //Тело модуля diff --git a/rn/app/src/config/appAssets.js b/rn/app/src/config/appAssets.js index 9039974..ce8741c 100644 --- a/rn/app/src/config/appAssets.js +++ b/rn/app/src/config/appAssets.js @@ -15,7 +15,7 @@ const LOGO_SIZE_KEYS = Object.freeze({ }); //Изображение логотипа приложения -const APP_LOGO = require('../../assets/icons/logo.png'); +const APP_LOGO = require('../../assets/icons/logo.png'); //Ресурс изображения //---------------- //Интерфейс модуля diff --git a/rn/app/src/config/appConfig.js b/rn/app/src/config/appConfig.js index de3ed1e..b351a6c 100644 --- a/rn/app/src/config/appConfig.js +++ b/rn/app/src/config/appConfig.js @@ -8,7 +8,7 @@ //--------------------- const { responsiveSize, isTablet } = require('../utils/responsive'); //Адаптивные утилиты -const { Platform } = require('react-native'); +const { Platform } = require('react-native'); //Платформа (ios/android/web) //--------- //Константы diff --git a/rn/app/src/config/dialogButtons.js b/rn/app/src/config/dialogButtons.js index 567b90b..35971f8 100644 --- a/rn/app/src/config/dialogButtons.js +++ b/rn/app/src/config/dialogButtons.js @@ -7,7 +7,7 @@ //Подключение библиотек //--------------------- -const { APP_COLORS } = require('./theme'); +const { APP_COLORS } = require('./theme'); //Цветовая схема //--------- //Константы diff --git a/rn/app/src/config/messages.js b/rn/app/src/config/messages.js index e3ac038..0b599be 100644 --- a/rn/app/src/config/messages.js +++ b/rn/app/src/config/messages.js @@ -13,11 +13,55 @@ const CONNECTION_LOST_MESSAGE = 'Нет связи с сервером. Прил //Заголовок сообщения при переходе в режим офлайн const OFFLINE_MODE_TITLE = 'Режим офлайн'; +//Заголовок диалога/экрана «Информация о приложении» +const APP_ABOUT_TITLE = 'Информация о приложении'; + +//Заголовок бокового меню +const SIDE_MENU_TITLE = 'Меню'; + +//Заголовок диалога выбора организации +const ORGANIZATION_SELECT_DIALOG_TITLE = 'Выберите организацию'; + +//Пункты бокового меню +const MENU_ITEM_SETTINGS = 'Настройки'; +const MENU_ITEM_ABOUT = 'О приложении'; +const MENU_ITEM_LOGIN = 'Вход'; +const MENU_ITEM_LOGOUT = 'Выход'; + +//Экран авторизации +const AUTH_SCREEN_TITLE = 'Вход в приложение'; +const AUTH_BUTTON_LOGIN = 'Войти'; +const AUTH_BUTTON_LOADING = 'Вход...'; + +//Сообщения об успешных действиях +const LOGIN_SUCCESS_MESSAGE = 'Вход выполнен успешно'; +const LOGOUT_SUCCESS_MESSAGE = 'Выход выполнен'; +const SETTINGS_SERVER_SAVED_MESSAGE = 'Настройки сервера сохранены'; +const SETTINGS_RESET_SUCCESS_MESSAGE = 'Настройки сброшены'; + +//Заголовок экрана настроек +const SCREEN_TITLE_SETTINGS = 'Настройки'; + //---------------- //Интерфейс модуля //---------------- module.exports = { CONNECTION_LOST_MESSAGE, - OFFLINE_MODE_TITLE + OFFLINE_MODE_TITLE, + APP_ABOUT_TITLE, + SIDE_MENU_TITLE, + ORGANIZATION_SELECT_DIALOG_TITLE, + MENU_ITEM_SETTINGS, + MENU_ITEM_ABOUT, + MENU_ITEM_LOGIN, + MENU_ITEM_LOGOUT, + AUTH_SCREEN_TITLE, + AUTH_BUTTON_LOGIN, + AUTH_BUTTON_LOADING, + LOGIN_SUCCESS_MESSAGE, + LOGOUT_SUCCESS_MESSAGE, + SETTINGS_SERVER_SAVED_MESSAGE, + SETTINGS_RESET_SUCCESS_MESSAGE, + SCREEN_TITLE_SETTINGS }; diff --git a/rn/app/src/database/SQLiteDatabase.js b/rn/app/src/database/SQLiteDatabase.js index 0e5e871..573a499 100644 --- a/rn/app/src/database/SQLiteDatabase.js +++ b/rn/app/src/database/SQLiteDatabase.js @@ -7,10 +7,8 @@ //Подключение библиотек //--------------------- -const { open } = require('react-native-quick-sqlite'); - -//Импорт утилиты для загрузки SQL файлов -const SQLFileLoader = require('./sql/SQLFileLoader'); +const { open } = require('react-native-quick-sqlite'); //Открытие БД SQLite +const SQLFileLoader = require('./sql/SQLFileLoader'); //Загрузчик SQL-файлов const { DB_NAME } = require('../config/database'); //Имя базы данных //----------- diff --git a/rn/app/src/database/sql/SQLFileLoader.js b/rn/app/src/database/sql/SQLFileLoader.js index f71523d..ff7efe4 100644 --- a/rn/app/src/database/sql/SQLFileLoader.js +++ b/rn/app/src/database/sql/SQLFileLoader.js @@ -7,7 +7,7 @@ //Подключение библиотек //--------------------- -const SQLQueries = require('./SQLQueries'); +const SQLQueries = require('./SQLQueries'); //Индекс SQL-запросов //------------ //Тело модуля diff --git a/rn/app/src/hooks/useAppMode.js b/rn/app/src/hooks/useAppMode.js index 996455f..d38e559 100644 --- a/rn/app/src/hooks/useAppMode.js +++ b/rn/app/src/hooks/useAppMode.js @@ -7,7 +7,7 @@ //Подключение библиотек //--------------------- -const React = require('react'); +const React = require('react'); //React и хуки const { useAppLocalDbContext } = require('../components/layout/AppLocalDbProvider'); //Контекст локальной БД //--------- diff --git a/rn/app/src/hooks/useAppServer.js b/rn/app/src/hooks/useAppServer.js index 075885c..aafb6b8 100644 --- a/rn/app/src/hooks/useAppServer.js +++ b/rn/app/src/hooks/useAppServer.js @@ -7,7 +7,7 @@ //Подключение библиотек //--------------------- -const React = require('react'); +const React = require('react'); //React и хуки const { useAppLocalDbContext } = require('../components/layout/AppLocalDbProvider'); //Контекст локальной БД //--------- diff --git a/rn/app/src/hooks/useAuth.js b/rn/app/src/hooks/useAuth.js index 81bd0dc..c9c830e 100644 --- a/rn/app/src/hooks/useAuth.js +++ b/rn/app/src/hooks/useAuth.js @@ -7,12 +7,12 @@ //Подключение библиотек //--------------------- -const React = require('react'); -const { useAppLocalDbContext } = require('../components/layout/AppLocalDbProvider'); -const { AUTH_SETTINGS_KEYS, DEFAULT_IDLE_TIMEOUT } = require('../config/authConfig'); -const { ACTION_CODES, RESPONSE_STATES, ERROR_MESSAGES } = require('../config/authApi'); -const { generateSecretKey, encryptData, decryptData } = require('../utils/secureStorage'); -const { getPersistentDeviceId, isPersistentIdAvailable } = require('../utils/deviceId'); +const React = require('react'); //React и хуки +const { useAppLocalDbContext } = require('../components/layout/AppLocalDbProvider'); //Контекст локальной БД +const { AUTH_SETTINGS_KEYS, DEFAULT_IDLE_TIMEOUT } = require('../config/authConfig'); //Конфиг авторизации +const { ACTION_CODES, RESPONSE_STATES, ERROR_MESSAGES } = require('../config/authApi'); //API авторизации +const { generateSecretKey, encryptData, decryptData } = require('../utils/secureStorage'); //Шифрование +const { getPersistentDeviceId, isPersistentIdAvailable } = require('../utils/deviceId'); //Идентификатор устройства //----------- //Тело модуля diff --git a/rn/app/src/hooks/useLocalDb.js b/rn/app/src/hooks/useLocalDb.js index d56baba..6775b37 100644 --- a/rn/app/src/hooks/useLocalDb.js +++ b/rn/app/src/hooks/useLocalDb.js @@ -7,8 +7,8 @@ //Подключение библиотек //--------------------- -const React = require('react'); -const SQLiteDatabase = require('../database/SQLiteDatabase'); +const React = require('react'); //React и хуки +const SQLiteDatabase = require('../database/SQLiteDatabase'); //Модуль SQLite //----------- //Тело модуля diff --git a/rn/app/src/screens/AuthScreen.js b/rn/app/src/screens/AuthScreen.js index 1440f91..c75d5a0 100644 --- a/rn/app/src/screens/AuthScreen.js +++ b/rn/app/src/screens/AuthScreen.js @@ -7,29 +7,40 @@ //Подключение библиотек //--------------------- -const React = require('react'); -const { ScrollView, View, KeyboardAvoidingView, Platform } = require('react-native'); -const AdaptiveView = require('../components/common/AdaptiveView'); -const AppText = require('../components/common/AppText'); -const AppInput = require('../components/common/AppInput'); -const AppButton = require('../components/common/AppButton'); -const AppSwitch = require('../components/common/AppSwitch'); -const PasswordInput = require('../components/common/PasswordInput'); -const AppHeader = require('../components/layout/AppHeader'); -const AppLogo = require('../components/common/AppLogo'); -const SideMenu = require('../components/menu/SideMenu'); -const LoadingOverlay = require('../components/common/LoadingOverlay'); -const OrganizationSelectDialog = require('../components/auth/OrganizationSelectDialog'); -const { useAppMessagingContext } = require('../components/layout/AppMessagingProvider'); -const { useAppModeContext } = require('../components/layout/AppModeProvider'); -const { useAppNavigationContext } = require('../components/layout/AppNavigationProvider'); -const { useAppLocalDbContext } = require('../components/layout/AppLocalDbProvider'); -const { useAppAuthContext } = require('../components/layout/AppAuthProvider'); -const { getAppInfo } = require('../utils/appInfo'); -const { isServerUrlFieldVisible } = require('../utils/loginFormUtils'); -const { normalizeServerUrl, validateServerUrl } = require('../utils/validation'); -const { AUTH_SETTINGS_KEYS } = require('../config/authConfig'); -const styles = require('../styles/screens/AuthScreen.styles'); +const React = require('react'); //React и хуки +const { ScrollView, View, KeyboardAvoidingView, Platform } = require('react-native'); //Базовые компоненты +const AdaptiveView = require('../components/common/AdaptiveView'); //Адаптивный контейнер +const AppText = require('../components/common/AppText'); //Общий текст +const AppInput = require('../components/common/AppInput'); //Поле ввода +const AppButton = require('../components/common/AppButton'); //Кнопка +const AppSwitch = require('../components/common/AppSwitch'); //Переключатель +const PasswordInput = require('../components/common/PasswordInput'); //Поле пароля +const AppHeader = require('../components/layout/AppHeader'); //Заголовок +const AppLogo = require('../components/common/AppLogo'); //Логотип +const SideMenu = require('../components/menu/SideMenu'); //Боковое меню +const LoadingOverlay = require('../components/common/LoadingOverlay'); //Оверлей загрузки +const OrganizationSelectDialog = require('../components/auth/OrganizationSelectDialog'); //Диалог выбора организации +const { useAppMessagingContext } = require('../components/layout/AppMessagingProvider'); //Контекст сообщений +const { useAppModeContext } = require('../components/layout/AppModeProvider'); //Контекст режима +const { useAppNavigationContext } = require('../components/layout/AppNavigationProvider'); //Контекст навигации +const { useAppLocalDbContext } = require('../components/layout/AppLocalDbProvider'); //Контекст локальной БД +const { useAppAuthContext } = require('../components/layout/AppAuthProvider'); //Контекст авторизации +const { getAppInfo } = require('../utils/appInfo'); //Информация о приложении +const { isServerUrlFieldVisible } = require('../utils/loginFormUtils'); //Утилиты формы входа +const { normalizeServerUrl, validateServerUrl } = require('../utils/validation'); //Валидация +const { AUTH_SETTINGS_KEYS } = require('../config/authConfig'); //Конфиг авторизации +const { + APP_ABOUT_TITLE, + SIDE_MENU_TITLE, + ORGANIZATION_SELECT_DIALOG_TITLE, + MENU_ITEM_SETTINGS, + MENU_ITEM_ABOUT, + AUTH_SCREEN_TITLE, + AUTH_BUTTON_LOGIN, + AUTH_BUTTON_LOADING, + LOGIN_SUCCESS_MESSAGE +} = require('../config/messages'); //Сообщения +const styles = require('../styles/screens/AuthScreen.styles'); //Стили экрана //----------- //Тело модуля @@ -312,7 +323,7 @@ function AuthScreen() { return; } - showSuccess('Вход выполнен успешно'); + showSuccess(LOGIN_SUCCESS_MESSAGE); setOnline(); clearAuthFormData(); reset(); @@ -381,7 +392,7 @@ function AuthScreen() { } //Успешный вход - showSuccess('Вход выполнен успешно'); + showSuccess(LOGIN_SUCCESS_MESSAGE); setOnline(); //Очищаем временные данные @@ -464,7 +475,7 @@ function AuthScreen() { }); showInfo(appInfo, { - title: 'Информация о приложении' + title: APP_ABOUT_TITLE }); }, [showInfo, mode, serverUrl, isDbReady]); @@ -473,12 +484,12 @@ function AuthScreen() { return [ { id: 'settings', - title: 'Настройки', + title: MENU_ITEM_SETTINGS, onPress: handleOpenSettings }, { id: 'about', - title: 'О приложении', + title: MENU_ITEM_ABOUT, onPress: handleShowAbout } ]; @@ -508,7 +519,7 @@ function AuthScreen() { - Вход в приложение + {AUTH_SCREEN_TITLE} {shouldShowServerUrl ? ( @@ -564,7 +575,7 @@ function AuthScreen() { diff --git a/rn/app/src/screens/MainScreen.js b/rn/app/src/screens/MainScreen.js index 472f040..52eb767 100644 --- a/rn/app/src/screens/MainScreen.js +++ b/rn/app/src/screens/MainScreen.js @@ -22,7 +22,18 @@ const InspectionList = require('../components/inspections/InspectionList'); //С const LoadingOverlay = require('../components/common/LoadingOverlay'); //Оверлей загрузки const OrganizationSelectDialog = require('../components/auth/OrganizationSelectDialog'); //Диалог выбора организации const { getAppInfo } = require('../utils/appInfo'); //Информация о приложении -const { CONNECTION_LOST_MESSAGE, OFFLINE_MODE_TITLE } = require('../config/messages'); //Сообщения +const { + CONNECTION_LOST_MESSAGE, + OFFLINE_MODE_TITLE, + APP_ABOUT_TITLE, + SIDE_MENU_TITLE, + ORGANIZATION_SELECT_DIALOG_TITLE, + MENU_ITEM_SETTINGS, + MENU_ITEM_ABOUT, + MENU_ITEM_LOGIN, + MENU_ITEM_LOGOUT, + LOGOUT_SUCCESS_MESSAGE +} = require('../config/messages'); //Сообщения const { DIALOG_BUTTON_TYPE, DIALOG_CANCEL_BUTTON, getConfirmButtonOptions } = require('../config/dialogButtons'); //Кнопки диалогов const { APP_COLORS } = require('../config/theme'); //Цветовая схема const styles = require('../styles/screens/MainScreen.styles'); //Стили экрана @@ -208,7 +219,7 @@ function MainScreen() { }); showInfo(appInfo, { - title: 'Информация о приложении' + title: APP_ABOUT_TITLE }); }, [showInfo, mode, serverUrl, isLocalDbReady]); @@ -227,7 +238,7 @@ function MainScreen() { const result = await logout({ skipServerRequest: mode === 'OFFLINE' }); if (result.success) { - showSuccess('Выход выполнен'); + showSuccess(LOGOUT_SUCCESS_MESSAGE); setNotConnected(); setInitialScreen(SCREENS.AUTH); } else { @@ -250,12 +261,12 @@ function MainScreen() { const items = [ { id: 'settings', - title: 'Настройки', + title: MENU_ITEM_SETTINGS, onPress: handleOpenSettings }, { id: 'about', - title: 'О приложении', + title: MENU_ITEM_ABOUT, onPress: handleShowAbout } ]; @@ -270,7 +281,7 @@ function MainScreen() { if (mode === 'OFFLINE') { items.push({ id: 'login', - title: 'Вход', + title: MENU_ITEM_LOGIN, onPress: handleLogin }); } @@ -279,7 +290,7 @@ function MainScreen() { if ((mode === 'ONLINE' || mode === 'OFFLINE') && isAuthenticated) { items.push({ id: 'logout', - title: 'Выход', + title: MENU_ITEM_LOGOUT, onPress: handleLogout, textStyle: { color: APP_COLORS.error } }); @@ -305,7 +316,7 @@ function MainScreen() { visible={menuVisible} onClose={handleMenuClose} items={menuItems} - title="Меню" + title={SIDE_MENU_TITLE} mode={mode} username={session?.userName} organization={session?.companyName} @@ -316,7 +327,7 @@ function MainScreen() { organizations={organizations} onSelect={handleSelectOrganization} onCancel={handleCancelOrganization} - title="Выберите организацию" + title={ORGANIZATION_SELECT_DIALOG_TITLE} /> diff --git a/rn/app/src/screens/SettingsScreen.js b/rn/app/src/screens/SettingsScreen.js index 1442b3f..43a3fe4 100644 --- a/rn/app/src/screens/SettingsScreen.js +++ b/rn/app/src/screens/SettingsScreen.js @@ -7,25 +7,26 @@ //Подключение библиотек //--------------------- -const React = require('react'); -const { ScrollView, View, Pressable } = require('react-native'); -const AdaptiveView = require('../components/common/AdaptiveView'); -const AppText = require('../components/common/AppText'); -const AppButton = require('../components/common/AppButton'); -const AppSwitch = require('../components/common/AppSwitch'); -const CopyButton = require('../components/common/CopyButton'); -const InputDialog = require('../components/common/InputDialog'); -const AppHeader = require('../components/layout/AppHeader'); -const { useAppMessagingContext } = require('../components/layout/AppMessagingProvider'); -const { useAppModeContext } = require('../components/layout/AppModeProvider'); -const { useAppNavigationContext } = require('../components/layout/AppNavigationProvider'); -const { useAppLocalDbContext } = require('../components/layout/AppLocalDbProvider'); -const { useAppAuthContext } = require('../components/layout/AppAuthProvider'); -const { AUTH_SETTINGS_KEYS, DEFAULT_IDLE_TIMEOUT } = require('../config/authConfig'); -const { DIALOG_BUTTON_TYPE, DIALOG_CANCEL_BUTTON, getConfirmButtonOptions } = require('../config/dialogButtons'); -const { getAppInfo, getModeLabel } = require('../utils/appInfo'); -const { validateServerUrlAllowEmpty, validateIdleTimeout } = require('../utils/validation'); -const styles = require('../styles/screens/SettingsScreen.styles'); +const React = require('react'); //React и хуки +const { ScrollView, View, Pressable } = require('react-native'); //Базовые компоненты +const AdaptiveView = require('../components/common/AdaptiveView'); //Адаптивный контейнер +const AppText = require('../components/common/AppText'); //Общий текст +const AppButton = require('../components/common/AppButton'); //Кнопка +const AppSwitch = require('../components/common/AppSwitch'); //Переключатель +const CopyButton = require('../components/common/CopyButton'); //Кнопка копирования +const InputDialog = require('../components/common/InputDialog'); //Диалог ввода +const AppHeader = require('../components/layout/AppHeader'); //Заголовок +const { useAppMessagingContext } = require('../components/layout/AppMessagingProvider'); //Контекст сообщений +const { useAppModeContext } = require('../components/layout/AppModeProvider'); //Контекст режима +const { useAppNavigationContext } = require('../components/layout/AppNavigationProvider'); //Контекст навигации +const { useAppLocalDbContext } = require('../components/layout/AppLocalDbProvider'); //Контекст локальной БД +const { useAppAuthContext } = require('../components/layout/AppAuthProvider'); //Контекст авторизации +const { AUTH_SETTINGS_KEYS, DEFAULT_IDLE_TIMEOUT } = require('../config/authConfig'); //Конфиг авторизации +const { DIALOG_BUTTON_TYPE, DIALOG_CANCEL_BUTTON, getConfirmButtonOptions } = require('../config/dialogButtons'); //Кнопки диалогов +const { getAppInfo, getModeLabel } = require('../utils/appInfo'); //Информация о приложении и режиме +const { validateServerUrlAllowEmpty, validateIdleTimeout } = require('../utils/validation'); //Валидация +const { APP_ABOUT_TITLE, SETTINGS_SERVER_SAVED_MESSAGE, SETTINGS_RESET_SUCCESS_MESSAGE, MENU_ITEM_ABOUT } = require('../config/messages'); //Сообщения +const styles = require('../styles/screens/SettingsScreen.styles'); //Стили экрана //----------- //Тело модуля @@ -140,7 +141,7 @@ function SettingsScreen() { if (success) { setServerUrl(valueToSave); - showSuccess('Настройки сервера сохранены'); + showSuccess(SETTINGS_SERVER_SAVED_MESSAGE); } else { showError('Не удалось сохранить настройки'); } @@ -249,7 +250,7 @@ function SettingsScreen() { setIdleTimeout(defaultValue); await setSetting(AUTH_SETTINGS_KEYS.IDLE_TIMEOUT, defaultValue); setNotConnected(); - showSuccess('Настройки сброшены'); + showSuccess(SETTINGS_RESET_SUCCESS_MESSAGE); } else { showError('Не удалось сбросить настройки'); } @@ -257,7 +258,7 @@ function SettingsScreen() { //Подключён (онлайн или офлайн): сбрасываем только время простоя await setSetting(AUTH_SETTINGS_KEYS.IDLE_TIMEOUT, defaultValue); setIdleTimeout(defaultValue); - showSuccess('Настройки сброшены'); + showSuccess(SETTINGS_RESET_SUCCESS_MESSAGE); } } catch (error) { console.error('Ошибка сброса настроек:', error); @@ -304,7 +305,7 @@ function SettingsScreen() { } }, [vacuum, showSuccess, showError]); - //Информация о приложении + //Показ информации о приложении const handleShowAppInfo = React.useCallback(() => { const appInfo = getAppInfo({ mode, @@ -313,7 +314,7 @@ function SettingsScreen() { }); showInfo(appInfo, { - title: 'Информация о приложении' + title: APP_ABOUT_TITLE }); }, [mode, serverUrl, isDbReady, showInfo]); @@ -475,7 +476,7 @@ function SettingsScreen() { Информация - + diff --git a/rn/app/src/styles/auth/OrganizationSelectDialog.styles.js b/rn/app/src/styles/auth/OrganizationSelectDialog.styles.js index 71d8992..1eef311 100644 --- a/rn/app/src/styles/auth/OrganizationSelectDialog.styles.js +++ b/rn/app/src/styles/auth/OrganizationSelectDialog.styles.js @@ -7,10 +7,10 @@ //Подключение библиотек //--------------------- -const { StyleSheet } = require('react-native'); -const { APP_COLORS } = require('../../config/theme'); -const { UI } = require('../../config/appConfig'); -const { responsiveSpacing, heightPercentage } = require('../../utils/responsive'); +const { StyleSheet } = require('react-native'); //StyleSheet +const { APP_COLORS } = require('../../config/theme'); //Цветовая схема +const { UI } = require('../../config/appConfig'); //Конфигурация UI +const { responsiveSpacing, heightPercentage } = require('../../utils/responsive'); //Адаптивные размеры //----------- //Тело модуля diff --git a/rn/app/src/styles/common/AppSwitch.styles.js b/rn/app/src/styles/common/AppSwitch.styles.js index f05796f..e3b8b53 100644 --- a/rn/app/src/styles/common/AppSwitch.styles.js +++ b/rn/app/src/styles/common/AppSwitch.styles.js @@ -7,9 +7,9 @@ //Подключение библиотек //--------------------- -const { StyleSheet } = require('react-native'); -const { APP_COLORS } = require('../../config/theme'); -const { responsiveSpacing } = require('../../utils/responsive'); +const { StyleSheet } = require('react-native'); //StyleSheet +const { APP_COLORS } = require('../../config/theme'); //Цветовая схема +const { responsiveSpacing } = require('../../utils/responsive'); //Адаптивные отступы //----------- //Тело модуля diff --git a/rn/app/src/styles/common/LoadingOverlay.styles.js b/rn/app/src/styles/common/LoadingOverlay.styles.js index 0606083..6f3aa21 100644 --- a/rn/app/src/styles/common/LoadingOverlay.styles.js +++ b/rn/app/src/styles/common/LoadingOverlay.styles.js @@ -7,10 +7,10 @@ //Подключение библиотек //--------------------- -const { StyleSheet } = require('react-native'); -const { APP_COLORS } = require('../../config/theme'); -const { UI } = require('../../config/appConfig'); -const { responsiveSpacing } = require('../../utils/responsive'); +const { StyleSheet } = require('react-native'); //StyleSheet +const { APP_COLORS } = require('../../config/theme'); //Цветовая схема +const { UI } = require('../../config/appConfig'); //Конфигурация UI +const { responsiveSpacing } = require('../../utils/responsive'); //Адаптивные отступы //----------- //Тело модуля diff --git a/rn/app/src/styles/common/PasswordInput.styles.js b/rn/app/src/styles/common/PasswordInput.styles.js index e63a5fe..caa3029 100644 --- a/rn/app/src/styles/common/PasswordInput.styles.js +++ b/rn/app/src/styles/common/PasswordInput.styles.js @@ -7,10 +7,10 @@ //Подключение библиотек //--------------------- -const { StyleSheet } = require('react-native'); -const { APP_COLORS } = require('../../config/theme'); -const { UI } = require('../../config/appConfig'); -const { responsiveSpacing } = require('../../utils/responsive'); +const { StyleSheet } = require('react-native'); //StyleSheet +const { APP_COLORS } = require('../../config/theme'); //Цветовая схема +const { UI } = require('../../config/appConfig'); //Конфигурация UI +const { responsiveSpacing } = require('../../utils/responsive'); //Адаптивные отступы //----------- //Тело модуля diff --git a/rn/app/src/styles/layout/AppAuthProvider.styles.js b/rn/app/src/styles/layout/AppAuthProvider.styles.js deleted file mode 100644 index 6205a27..0000000 --- a/rn/app/src/styles/layout/AppAuthProvider.styles.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - Предрейсовые осмотры - мобильное приложение - Стили провайдера авторизации (провайдер без визуальной разметки) -*/ - -//--------- -//Константы -//--------- - -//Провайдер не рендерит собственных View — стили не требуются -const styles = {}; - -//---------------- -//Интерфейс модуля -//---------------- - -module.exports = styles; diff --git a/rn/app/src/styles/layout/AppLocalDbProvider.styles.js b/rn/app/src/styles/layout/AppLocalDbProvider.styles.js deleted file mode 100644 index 60b0271..0000000 --- a/rn/app/src/styles/layout/AppLocalDbProvider.styles.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - Предрейсовые осмотры - мобильное приложение - Стили провайдера локальной БД (провайдер без визуальной разметки) -*/ - -//--------- -//Константы -//--------- - -//Провайдер не рендерит собственных View — стили не требуются -const styles = {}; - -//---------------- -//Интерфейс модуля -//---------------- - -module.exports = styles; diff --git a/rn/app/src/styles/layout/AppMenu.styles.js b/rn/app/src/styles/layout/AppMenu.styles.js deleted file mode 100644 index b9b3728..0000000 --- a/rn/app/src/styles/layout/AppMenu.styles.js +++ /dev/null @@ -1,109 +0,0 @@ -/* - Предрейсовые осмотры - мобильное приложение - Стили компонента меню -*/ - -//--------------------- -//Подключение библиотек -//--------------------- - -const { StyleSheet } = require('react-native'); //StyleSheet React Native -const { APP_COLORS } = require('../../config/theme'); //Цветовая схема приложения -const { UI } = require('../../config/appConfig'); //Конфигурация UI - -//----------- -//Тело модуля -//----------- - -//Стили меню -const styles = StyleSheet.create({ - backdrop: { - position: 'absolute', - top: 0, - left: 0, - right: 0, - bottom: 0, - backgroundColor: APP_COLORS.overlay, - zIndex: 999 - }, - container: { - position: 'absolute', - top: 0, - right: 0, - bottom: 0, - width: UI.SIDE_MENU_WIDTH, - backgroundColor: APP_COLORS.surface, - zIndex: 1000, - shadowColor: APP_COLORS.black, - shadowOpacity: 0.15, - shadowRadius: 10, - shadowOffset: { - width: -2, - height: 0 - }, - elevation: 10 - }, - header: { - paddingHorizontal: UI.PADDING, - paddingVertical: UI.PADDING, - borderBottomWidth: StyleSheet.hairlineWidth, - borderBottomColor: APP_COLORS.borderSubtle, - backgroundColor: APP_COLORS.primaryLight, - height: 60, - justifyContent: 'center' - }, - title: { - fontSize: 18, - fontWeight: '600', - color: APP_COLORS.primaryDark, - textAlign: 'center' - }, - content: { - flex: 1, - paddingTop: UI.PADDING / 2 - }, - menuItem: { - paddingHorizontal: UI.PADDING, - paddingVertical: UI.PADDING, - borderBottomWidth: StyleSheet.hairlineWidth, - borderBottomColor: APP_COLORS.borderSubtle - }, - menuItemPressed: { - backgroundColor: APP_COLORS.primaryLight - }, - menuItemDestructive: { - borderBottomColor: APP_COLORS.error + '20' - }, - menuItemContent: { - flexDirection: 'row', - alignItems: 'center' - }, - menuItemIcon: { - marginRight: 12, - width: 24, - alignItems: 'center' - }, - menuItemText: { - fontSize: 16, - color: APP_COLORS.textPrimary - }, - menuItemTextDestructive: { - color: APP_COLORS.error - }, - emptyMenu: { - padding: UI.PADDING * 2, - alignItems: 'center', - justifyContent: 'center' - }, - emptyMenuText: { - fontSize: 14, - color: APP_COLORS.textSecondary, - textAlign: 'center' - } -}); - -//---------------- -//Интерфейс модуля -//---------------- - -module.exports = styles; diff --git a/rn/app/src/styles/layout/AppMessagingProvider.styles.js b/rn/app/src/styles/layout/AppMessagingProvider.styles.js deleted file mode 100644 index a0da49a..0000000 --- a/rn/app/src/styles/layout/AppMessagingProvider.styles.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - Предрейсовые осмотры - мобильное приложение - Стили провайдера сообщений (провайдер без визуальной разметки) -*/ - -//--------- -//Константы -//--------- - -//Провайдер не рендерит собственных View — стили не требуются -const styles = {}; - -//---------------- -//Интерфейс модуля -//---------------- - -module.exports = styles; diff --git a/rn/app/src/styles/layout/AppModeProvider.styles.js b/rn/app/src/styles/layout/AppModeProvider.styles.js deleted file mode 100644 index bfda788..0000000 --- a/rn/app/src/styles/layout/AppModeProvider.styles.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - Предрейсовые осмотры - мобильное приложение - Стили провайдера режима работы (провайдер без визуальной разметки) -*/ - -//--------- -//Константы -//--------- - -//Провайдер не рендерит собственных View — стили не требуются -const styles = {}; - -//---------------- -//Интерфейс модуля -//---------------- - -module.exports = styles; diff --git a/rn/app/src/styles/layout/AppNavigationProvider.styles.js b/rn/app/src/styles/layout/AppNavigationProvider.styles.js deleted file mode 100644 index 7d5d38f..0000000 --- a/rn/app/src/styles/layout/AppNavigationProvider.styles.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - Предрейсовые осмотры - мобильное приложение - Стили провайдера навигации (провайдер без визуальной разметки) -*/ - -//--------- -//Константы -//--------- - -//Провайдер не рендерит собственных View — стили не требуются -const styles = {}; - -//---------------- -//Интерфейс модуля -//---------------- - -module.exports = styles; diff --git a/rn/app/src/styles/layout/AppPreTripInspectionsProvider.styles.js b/rn/app/src/styles/layout/AppPreTripInspectionsProvider.styles.js deleted file mode 100644 index dad8841..0000000 --- a/rn/app/src/styles/layout/AppPreTripInspectionsProvider.styles.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - Предрейсовые осмотры - мобильное приложение - Стили провайдера предрейсовых осмотров (провайдер без визуальной разметки) -*/ - -//--------- -//Константы -//--------- - -//Провайдер не рендерит собственных View — стили не требуются -const styles = {}; - -//---------------- -//Интерфейс модуля -//---------------- - -module.exports = styles; diff --git a/rn/app/src/styles/layout/AppServerProvider.styles.js b/rn/app/src/styles/layout/AppServerProvider.styles.js deleted file mode 100644 index e4def18..0000000 --- a/rn/app/src/styles/layout/AppServerProvider.styles.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - Предрейсовые осмотры - мобильное приложение - Стили провайдера сервера приложений (провайдер без визуальной разметки) -*/ - -//--------- -//Константы -//--------- - -//Провайдер не рендерит собственных View — стили не требуются -const styles = {}; - -//---------------- -//Интерфейс модуля -//---------------- - -module.exports = styles; diff --git a/rn/app/src/styles/menu/MenuUserInfo.styles.js b/rn/app/src/styles/menu/MenuUserInfo.styles.js index ed8cde5..c5e88b8 100644 --- a/rn/app/src/styles/menu/MenuUserInfo.styles.js +++ b/rn/app/src/styles/menu/MenuUserInfo.styles.js @@ -7,10 +7,10 @@ //Подключение библиотек //--------------------- -const { StyleSheet } = require('react-native'); -const { APP_COLORS } = require('../../config/theme'); -const { UI } = require('../../config/appConfig'); -const { responsiveSpacing, responsiveSize } = require('../../utils/responsive'); +const { StyleSheet } = require('react-native'); //StyleSheet +const { APP_COLORS } = require('../../config/theme'); //Цветовая схема +const { UI } = require('../../config/appConfig'); //Конфигурация UI +const { responsiveSpacing, responsiveSize } = require('../../utils/responsive'); //Адаптивные размеры //----------- //Тело модуля diff --git a/rn/app/src/styles/screens/AuthScreen.styles.js b/rn/app/src/styles/screens/AuthScreen.styles.js index 081a604..7c380e9 100644 --- a/rn/app/src/styles/screens/AuthScreen.styles.js +++ b/rn/app/src/styles/screens/AuthScreen.styles.js @@ -7,10 +7,10 @@ //Подключение библиотек //--------------------- -const { StyleSheet } = require('react-native'); -const { APP_COLORS } = require('../../config/theme'); -const { UI } = require('../../config/appConfig'); -const { responsiveSpacing } = require('../../utils/responsive'); +const { StyleSheet } = require('react-native'); //StyleSheet +const { APP_COLORS } = require('../../config/theme'); //Цветовая схема +const { UI } = require('../../config/appConfig'); //Конфигурация UI +const { responsiveSpacing } = require('../../utils/responsive'); //Адаптивные отступы //----------- //Тело модуля diff --git a/rn/app/src/styles/screens/SettingsScreen.styles.js b/rn/app/src/styles/screens/SettingsScreen.styles.js index 1bab914..6960f8d 100644 --- a/rn/app/src/styles/screens/SettingsScreen.styles.js +++ b/rn/app/src/styles/screens/SettingsScreen.styles.js @@ -7,10 +7,10 @@ //Подключение библиотек //--------------------- -const { StyleSheet } = require('react-native'); -const { APP_COLORS } = require('../../config/theme'); -const { UI } = require('../../config/appConfig'); -const { responsiveSpacing } = require('../../utils/responsive'); +const { StyleSheet } = require('react-native'); //StyleSheet +const { APP_COLORS } = require('../../config/theme'); //Цветовая схема +const { UI } = require('../../config/appConfig'); //Конфигурация UI +const { responsiveSpacing } = require('../../utils/responsive'); //Адаптивные отступы //----------- //Тело модуля diff --git a/rn/app/src/utils/deviceId.js b/rn/app/src/utils/deviceId.js index beda211..9ef5aba 100644 --- a/rn/app/src/utils/deviceId.js +++ b/rn/app/src/utils/deviceId.js @@ -7,7 +7,7 @@ //Подключение библиотек //--------------------- -const { Platform, NativeModules } = require('react-native'); +const { Platform, NativeModules } = require('react-native'); //Платформа и нативные модули const { WEB_DEVICE_ID_KEY } = require('../config/storageKeys'); //Ключи хранилища //-----------------------