Рефакторинг. Добавление комментариев для импортов, вынесение общеиспользуемых констант в отдельные модули, удаление неиспользуемых файлов

This commit is contained in:
boa604 2026-02-26 13:15:34 +03:00
parent c3b429f777
commit b0adcad59e
37 changed files with 211 additions and 370 deletions

View File

@ -7,12 +7,12 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
const React = require('react'); const React = require('react'); //React
const { Modal, View, FlatList, Pressable, Keyboard } = require('react-native'); const { Modal, View, FlatList, Pressable, Keyboard } = require('react-native'); //Модальное окно и список
const { useSafeAreaInsets } = require('react-native-safe-area-context'); const { useSafeAreaInsets } = require('react-native-safe-area-context'); //Отступы безопасной области
const AppText = require('../common/AppText'); const AppText = require('../common/AppText'); //Общий текст
const AppButton = require('../common/AppButton'); const AppButton = require('../common/AppButton'); //Кнопка
const styles = require('../../styles/auth/OrganizationSelectDialog.styles'); const styles = require('../../styles/auth/OrganizationSelectDialog.styles'); //Стили диалога
//----------- //-----------
//Тело модуля //Тело модуля

View File

@ -7,11 +7,11 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
const React = require('react'); const React = require('react'); //React
const { Switch, Pressable } = require('react-native'); const { Switch, Pressable } = require('react-native'); //Переключатель и нажатие
const AppText = require('./AppText'); const AppText = require('./AppText'); //Общий текст
const styles = require('../../styles/common/AppSwitch.styles'); const styles = require('../../styles/common/AppSwitch.styles'); //Стили переключателя
const { APP_COLORS } = require('../../config/theme'); const { APP_COLORS } = require('../../config/theme'); //Цветовая схема
//----------- //-----------
//Тело модуля //Тело модуля

View File

@ -7,10 +7,10 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
const React = require('react'); const React = require('react'); //React
const { Modal, View, ActivityIndicator } = require('react-native'); const { Modal, View, ActivityIndicator } = require('react-native'); //Модальное окно и индикатор
const AppText = require('./AppText'); const AppText = require('./AppText'); //Общий текст
const styles = require('../../styles/common/LoadingOverlay.styles'); const styles = require('../../styles/common/LoadingOverlay.styles'); //Стили оверлея
//----------- //-----------
//Тело модуля //Тело модуля

View File

@ -7,10 +7,10 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
const React = require('react'); const React = require('react'); //React
const { View, TextInput, Pressable } = require('react-native'); const { View, TextInput, Pressable } = require('react-native'); //Разметка и поле ввода
const AppText = require('./AppText'); const AppText = require('./AppText'); //Общий текст
const styles = require('../../styles/common/PasswordInput.styles'); const styles = require('../../styles/common/PasswordInput.styles'); //Стили поля пароля
//----------- //-----------
//Тело модуля //Тело модуля

View File

@ -7,8 +7,8 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
const React = require('react'); const React = require('react'); //React
const useAuth = require('../../hooks/useAuth'); const useAuth = require('../../hooks/useAuth'); //Хук авторизации
//----------- //-----------
//Тело модуля //Тело модуля

View File

@ -13,6 +13,7 @@ const AppText = require('../common/AppText'); //Общий текстовый к
const AppLogo = require('../common/AppLogo'); //Логотип приложения const AppLogo = require('../common/AppLogo'); //Логотип приложения
const { useAppModeContext } = require('./AppModeProvider'); //Контекст режима работы const { useAppModeContext } = require('./AppModeProvider'); //Контекст режима работы
const { useAppNavigationContext } = require('./AppNavigationProvider'); //Контекст навигации const { useAppNavigationContext } = require('./AppNavigationProvider'); //Контекст навигации
const { SCREEN_TITLE_SETTINGS } = require('../../config/messages'); //Заголовки экранов
const styles = require('../../styles/layout/AppHeader.styles'); //Стили заголовка const styles = require('../../styles/layout/AppHeader.styles'); //Стили заголовка
//----------- //-----------
@ -60,7 +61,7 @@ function AppHeader({ title, subtitle, showMenuButton = true, onMenuPress, showBa
case SCREENS.MAIN: case SCREENS.MAIN:
return 'Парус© Предрейсовые осмотры'; return 'Парус© Предрейсовые осмотры';
case SCREENS.SETTINGS: case SCREENS.SETTINGS:
return 'Настройки'; return SCREEN_TITLE_SETTINGS;
default: default:
return 'Парус© Предрейсовые осмотры'; return 'Парус© Предрейсовые осмотры';
} }

View File

@ -8,9 +8,10 @@
//--------------------- //---------------------
const React = require('react'); //React и хуки 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 { SafeAreaProvider } = require('react-native-safe-area-context'); //Провайдер безопасной области
const AppShell = require('./AppShell'); //Оболочка приложения const AppShell = require('./AppShell'); //Оболочка приложения
const styles = require('../../styles/layout/AppRoot.styles'); //Стили корневого layout
const { useAppNavigationContext } = require('./AppNavigationProvider'); //Контекст навигации const { useAppNavigationContext } = require('./AppNavigationProvider'); //Контекст навигации
const { useAppAuthContext } = require('./AppAuthProvider'); //Контекст авторизации const { useAppAuthContext } = require('./AppAuthProvider'); //Контекст авторизации
const { useAppLocalDbContext } = require('./AppLocalDbProvider'); //Контекст локальной БД const { useAppLocalDbContext } = require('./AppLocalDbProvider'); //Контекст локальной БД
@ -48,7 +49,9 @@ function AppRoot() {
return ( return (
<SafeAreaProvider> <SafeAreaProvider>
<View style={styles.container}>
<AppShell isDarkMode={isDarkMode} /> <AppShell isDarkMode={isDarkMode} />
</View>
</SafeAreaProvider> </SafeAreaProvider>
); );
} }

View File

@ -7,11 +7,11 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
const React = require('react'); const React = require('react'); //React
const { View } = require('react-native'); const { View } = require('react-native'); //Разметка
const AppText = require('../common/AppText'); const AppText = require('../common/AppText'); //Общий текст
const { getModeLabel } = require('../../utils/appInfo'); const { getModeLabel } = require('../../utils/appInfo'); //Подпись режима работы
const styles = require('../../styles/menu/MenuUserInfo.styles'); const styles = require('../../styles/menu/MenuUserInfo.styles'); //Стили блока пользователя
//----------- //-----------
//Тело модуля //Тело модуля

View File

@ -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'); //Ресурс изображения
//---------------- //----------------
//Интерфейс модуля //Интерфейс модуля

View File

@ -8,7 +8,7 @@
//--------------------- //---------------------
const { responsiveSize, isTablet } = require('../utils/responsive'); //Адаптивные утилиты const { responsiveSize, isTablet } = require('../utils/responsive'); //Адаптивные утилиты
const { Platform } = require('react-native'); const { Platform } = require('react-native'); //Платформа (ios/android/web)
//--------- //---------
//Константы //Константы

View File

@ -7,7 +7,7 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
const { APP_COLORS } = require('./theme'); const { APP_COLORS } = require('./theme'); //Цветовая схема
//--------- //---------
//Константы //Константы

View File

@ -13,11 +13,55 @@ const CONNECTION_LOST_MESSAGE = 'Нет связи с сервером. Прил
//Заголовок сообщения при переходе в режим офлайн //Заголовок сообщения при переходе в режим офлайн
const OFFLINE_MODE_TITLE = 'Режим офлайн'; 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 = { module.exports = {
CONNECTION_LOST_MESSAGE, 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
}; };

View File

@ -7,10 +7,8 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
const { open } = require('react-native-quick-sqlite'); const { open } = require('react-native-quick-sqlite'); //Открытие БД SQLite
const SQLFileLoader = require('./sql/SQLFileLoader'); //Загрузчик SQL-файлов
//Импорт утилиты для загрузки SQL файлов
const SQLFileLoader = require('./sql/SQLFileLoader');
const { DB_NAME } = require('../config/database'); //Имя базы данных const { DB_NAME } = require('../config/database'); //Имя базы данных
//----------- //-----------

View File

@ -7,7 +7,7 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
const SQLQueries = require('./SQLQueries'); const SQLQueries = require('./SQLQueries'); //Индекс SQL-запросов
//------------ //------------
//Тело модуля //Тело модуля

View File

@ -7,7 +7,7 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
const React = require('react'); const React = require('react'); //React и хуки
const { useAppLocalDbContext } = require('../components/layout/AppLocalDbProvider'); //Контекст локальной БД const { useAppLocalDbContext } = require('../components/layout/AppLocalDbProvider'); //Контекст локальной БД
//--------- //---------

View File

@ -7,7 +7,7 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
const React = require('react'); const React = require('react'); //React и хуки
const { useAppLocalDbContext } = require('../components/layout/AppLocalDbProvider'); //Контекст локальной БД const { useAppLocalDbContext } = require('../components/layout/AppLocalDbProvider'); //Контекст локальной БД
//--------- //---------

View File

@ -7,12 +7,12 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
const React = require('react'); const React = require('react'); //React и хуки
const { useAppLocalDbContext } = require('../components/layout/AppLocalDbProvider'); const { useAppLocalDbContext } = require('../components/layout/AppLocalDbProvider'); //Контекст локальной БД
const { AUTH_SETTINGS_KEYS, DEFAULT_IDLE_TIMEOUT } = require('../config/authConfig'); const { AUTH_SETTINGS_KEYS, DEFAULT_IDLE_TIMEOUT } = require('../config/authConfig'); //Конфиг авторизации
const { ACTION_CODES, RESPONSE_STATES, ERROR_MESSAGES } = require('../config/authApi'); const { ACTION_CODES, RESPONSE_STATES, ERROR_MESSAGES } = require('../config/authApi'); //API авторизации
const { generateSecretKey, encryptData, decryptData } = require('../utils/secureStorage'); const { generateSecretKey, encryptData, decryptData } = require('../utils/secureStorage'); //Шифрование
const { getPersistentDeviceId, isPersistentIdAvailable } = require('../utils/deviceId'); const { getPersistentDeviceId, isPersistentIdAvailable } = require('../utils/deviceId'); //Идентификатор устройства
//----------- //-----------
//Тело модуля //Тело модуля

View File

@ -7,8 +7,8 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
const React = require('react'); const React = require('react'); //React и хуки
const SQLiteDatabase = require('../database/SQLiteDatabase'); const SQLiteDatabase = require('../database/SQLiteDatabase'); //Модуль SQLite
//----------- //-----------
//Тело модуля //Тело модуля

View File

@ -7,29 +7,40 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
const React = require('react'); const React = require('react'); //React и хуки
const { ScrollView, View, KeyboardAvoidingView, Platform } = require('react-native'); const { ScrollView, View, KeyboardAvoidingView, Platform } = require('react-native'); //Базовые компоненты
const AdaptiveView = require('../components/common/AdaptiveView'); const AdaptiveView = require('../components/common/AdaptiveView'); //Адаптивный контейнер
const AppText = require('../components/common/AppText'); const AppText = require('../components/common/AppText'); //Общий текст
const AppInput = require('../components/common/AppInput'); const AppInput = require('../components/common/AppInput'); //Поле ввода
const AppButton = require('../components/common/AppButton'); const AppButton = require('../components/common/AppButton'); //Кнопка
const AppSwitch = require('../components/common/AppSwitch'); const AppSwitch = require('../components/common/AppSwitch'); //Переключатель
const PasswordInput = require('../components/common/PasswordInput'); const PasswordInput = require('../components/common/PasswordInput'); //Поле пароля
const AppHeader = require('../components/layout/AppHeader'); const AppHeader = require('../components/layout/AppHeader'); //Заголовок
const AppLogo = require('../components/common/AppLogo'); const AppLogo = require('../components/common/AppLogo'); //Логотип
const SideMenu = require('../components/menu/SideMenu'); const SideMenu = require('../components/menu/SideMenu'); //Боковое меню
const LoadingOverlay = require('../components/common/LoadingOverlay'); const LoadingOverlay = require('../components/common/LoadingOverlay'); //Оверлей загрузки
const OrganizationSelectDialog = require('../components/auth/OrganizationSelectDialog'); const OrganizationSelectDialog = require('../components/auth/OrganizationSelectDialog'); //Диалог выбора организации
const { useAppMessagingContext } = require('../components/layout/AppMessagingProvider'); const { useAppMessagingContext } = require('../components/layout/AppMessagingProvider'); //Контекст сообщений
const { useAppModeContext } = require('../components/layout/AppModeProvider'); const { useAppModeContext } = require('../components/layout/AppModeProvider'); //Контекст режима
const { useAppNavigationContext } = require('../components/layout/AppNavigationProvider'); const { useAppNavigationContext } = require('../components/layout/AppNavigationProvider'); //Контекст навигации
const { useAppLocalDbContext } = require('../components/layout/AppLocalDbProvider'); const { useAppLocalDbContext } = require('../components/layout/AppLocalDbProvider'); //Контекст локальной БД
const { useAppAuthContext } = require('../components/layout/AppAuthProvider'); const { useAppAuthContext } = require('../components/layout/AppAuthProvider'); //Контекст авторизации
const { getAppInfo } = require('../utils/appInfo'); const { getAppInfo } = require('../utils/appInfo'); //Информация о приложении
const { isServerUrlFieldVisible } = require('../utils/loginFormUtils'); const { isServerUrlFieldVisible } = require('../utils/loginFormUtils'); //Утилиты формы входа
const { normalizeServerUrl, validateServerUrl } = require('../utils/validation'); const { normalizeServerUrl, validateServerUrl } = require('../utils/validation'); //Валидация
const { AUTH_SETTINGS_KEYS } = require('../config/authConfig'); const { AUTH_SETTINGS_KEYS } = require('../config/authConfig'); //Конфиг авторизации
const styles = require('../styles/screens/AuthScreen.styles'); 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; return;
} }
showSuccess('Вход выполнен успешно'); showSuccess(LOGIN_SUCCESS_MESSAGE);
setOnline(); setOnline();
clearAuthFormData(); clearAuthFormData();
reset(); reset();
@ -381,7 +392,7 @@ function AuthScreen() {
} }
//Успешный вход //Успешный вход
showSuccess('Вход выполнен успешно'); showSuccess(LOGIN_SUCCESS_MESSAGE);
setOnline(); setOnline();
//Очищаем временные данные //Очищаем временные данные
@ -464,7 +475,7 @@ function AuthScreen() {
}); });
showInfo(appInfo, { showInfo(appInfo, {
title: 'Информация о приложении' title: APP_ABOUT_TITLE
}); });
}, [showInfo, mode, serverUrl, isDbReady]); }, [showInfo, mode, serverUrl, isDbReady]);
@ -473,12 +484,12 @@ function AuthScreen() {
return [ return [
{ {
id: 'settings', id: 'settings',
title: 'Настройки', title: MENU_ITEM_SETTINGS,
onPress: handleOpenSettings onPress: handleOpenSettings
}, },
{ {
id: 'about', id: 'about',
title: 'О приложении', title: MENU_ITEM_ABOUT,
onPress: handleShowAbout onPress: handleShowAbout
} }
]; ];
@ -508,7 +519,7 @@ function AuthScreen() {
<View style={styles.formContainer}> <View style={styles.formContainer}>
<AppText style={styles.title} variant="h2" weight="bold"> <AppText style={styles.title} variant="h2" weight="bold">
Вход в приложение {AUTH_SCREEN_TITLE}
</AppText> </AppText>
{shouldShowServerUrl ? ( {shouldShowServerUrl ? (
@ -564,7 +575,7 @@ function AuthScreen() {
</View> </View>
<AppButton <AppButton
title={isLoading ? 'Вход...' : 'Войти'} title={isLoading ? AUTH_BUTTON_LOADING : AUTH_BUTTON_LOGIN}
onPress={handleLogin} onPress={handleLogin}
disabled={isLoading || !isSettingsLoaded} disabled={isLoading || !isSettingsLoaded}
style={styles.loginButton} style={styles.loginButton}
@ -578,7 +589,7 @@ function AuthScreen() {
visible={menuVisible} visible={menuVisible}
onClose={handleMenuClose} onClose={handleMenuClose}
items={menuItems} items={menuItems}
title="Меню" title={SIDE_MENU_TITLE}
mode={mode} mode={mode}
username={session?.userName} username={session?.userName}
organization={session?.companyName} organization={session?.companyName}
@ -589,7 +600,7 @@ function AuthScreen() {
organizations={organizations} organizations={organizations}
onSelect={handleSelectOrganization} onSelect={handleSelectOrganization}
onCancel={handleCancelOrganization} onCancel={handleCancelOrganization}
title="Выберите организацию" title={ORGANIZATION_SELECT_DIALOG_TITLE}
/> />
<LoadingOverlay visible={isLoading} message="Выполняется вход..." /> <LoadingOverlay visible={isLoading} message="Выполняется вход..." />

View File

@ -22,7 +22,18 @@ const InspectionList = require('../components/inspections/InspectionList'); //С
const LoadingOverlay = require('../components/common/LoadingOverlay'); //Оверлей загрузки const LoadingOverlay = require('../components/common/LoadingOverlay'); //Оверлей загрузки
const OrganizationSelectDialog = require('../components/auth/OrganizationSelectDialog'); //Диалог выбора организации const OrganizationSelectDialog = require('../components/auth/OrganizationSelectDialog'); //Диалог выбора организации
const { getAppInfo } = require('../utils/appInfo'); //Информация о приложении 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 { DIALOG_BUTTON_TYPE, DIALOG_CANCEL_BUTTON, getConfirmButtonOptions } = require('../config/dialogButtons'); //Кнопки диалогов
const { APP_COLORS } = require('../config/theme'); //Цветовая схема const { APP_COLORS } = require('../config/theme'); //Цветовая схема
const styles = require('../styles/screens/MainScreen.styles'); //Стили экрана const styles = require('../styles/screens/MainScreen.styles'); //Стили экрана
@ -208,7 +219,7 @@ function MainScreen() {
}); });
showInfo(appInfo, { showInfo(appInfo, {
title: 'Информация о приложении' title: APP_ABOUT_TITLE
}); });
}, [showInfo, mode, serverUrl, isLocalDbReady]); }, [showInfo, mode, serverUrl, isLocalDbReady]);
@ -227,7 +238,7 @@ function MainScreen() {
const result = await logout({ skipServerRequest: mode === 'OFFLINE' }); const result = await logout({ skipServerRequest: mode === 'OFFLINE' });
if (result.success) { if (result.success) {
showSuccess('Выход выполнен'); showSuccess(LOGOUT_SUCCESS_MESSAGE);
setNotConnected(); setNotConnected();
setInitialScreen(SCREENS.AUTH); setInitialScreen(SCREENS.AUTH);
} else { } else {
@ -250,12 +261,12 @@ function MainScreen() {
const items = [ const items = [
{ {
id: 'settings', id: 'settings',
title: 'Настройки', title: MENU_ITEM_SETTINGS,
onPress: handleOpenSettings onPress: handleOpenSettings
}, },
{ {
id: 'about', id: 'about',
title: 'О приложении', title: MENU_ITEM_ABOUT,
onPress: handleShowAbout onPress: handleShowAbout
} }
]; ];
@ -270,7 +281,7 @@ function MainScreen() {
if (mode === 'OFFLINE') { if (mode === 'OFFLINE') {
items.push({ items.push({
id: 'login', id: 'login',
title: 'Вход', title: MENU_ITEM_LOGIN,
onPress: handleLogin onPress: handleLogin
}); });
} }
@ -279,7 +290,7 @@ function MainScreen() {
if ((mode === 'ONLINE' || mode === 'OFFLINE') && isAuthenticated) { if ((mode === 'ONLINE' || mode === 'OFFLINE') && isAuthenticated) {
items.push({ items.push({
id: 'logout', id: 'logout',
title: 'Выход', title: MENU_ITEM_LOGOUT,
onPress: handleLogout, onPress: handleLogout,
textStyle: { color: APP_COLORS.error } textStyle: { color: APP_COLORS.error }
}); });
@ -305,7 +316,7 @@ function MainScreen() {
visible={menuVisible} visible={menuVisible}
onClose={handleMenuClose} onClose={handleMenuClose}
items={menuItems} items={menuItems}
title="Меню" title={SIDE_MENU_TITLE}
mode={mode} mode={mode}
username={session?.userName} username={session?.userName}
organization={session?.companyName} organization={session?.companyName}
@ -316,7 +327,7 @@ function MainScreen() {
organizations={organizations} organizations={organizations}
onSelect={handleSelectOrganization} onSelect={handleSelectOrganization}
onCancel={handleCancelOrganization} onCancel={handleCancelOrganization}
title="Выберите организацию" title={ORGANIZATION_SELECT_DIALOG_TITLE}
/> />
<LoadingOverlay visible={isAuthLoading} message="Выполняется операция..." /> <LoadingOverlay visible={isAuthLoading} message="Выполняется операция..." />

View File

@ -7,25 +7,26 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
const React = require('react'); const React = require('react'); //React и хуки
const { ScrollView, View, Pressable } = require('react-native'); const { ScrollView, View, Pressable } = require('react-native'); //Базовые компоненты
const AdaptiveView = require('../components/common/AdaptiveView'); const AdaptiveView = require('../components/common/AdaptiveView'); //Адаптивный контейнер
const AppText = require('../components/common/AppText'); const AppText = require('../components/common/AppText'); //Общий текст
const AppButton = require('../components/common/AppButton'); const AppButton = require('../components/common/AppButton'); //Кнопка
const AppSwitch = require('../components/common/AppSwitch'); const AppSwitch = require('../components/common/AppSwitch'); //Переключатель
const CopyButton = require('../components/common/CopyButton'); const CopyButton = require('../components/common/CopyButton'); //Кнопка копирования
const InputDialog = require('../components/common/InputDialog'); const InputDialog = require('../components/common/InputDialog'); //Диалог ввода
const AppHeader = require('../components/layout/AppHeader'); const AppHeader = require('../components/layout/AppHeader'); //Заголовок
const { useAppMessagingContext } = require('../components/layout/AppMessagingProvider'); const { useAppMessagingContext } = require('../components/layout/AppMessagingProvider'); //Контекст сообщений
const { useAppModeContext } = require('../components/layout/AppModeProvider'); const { useAppModeContext } = require('../components/layout/AppModeProvider'); //Контекст режима
const { useAppNavigationContext } = require('../components/layout/AppNavigationProvider'); const { useAppNavigationContext } = require('../components/layout/AppNavigationProvider'); //Контекст навигации
const { useAppLocalDbContext } = require('../components/layout/AppLocalDbProvider'); const { useAppLocalDbContext } = require('../components/layout/AppLocalDbProvider'); //Контекст локальной БД
const { useAppAuthContext } = require('../components/layout/AppAuthProvider'); const { useAppAuthContext } = require('../components/layout/AppAuthProvider'); //Контекст авторизации
const { AUTH_SETTINGS_KEYS, DEFAULT_IDLE_TIMEOUT } = require('../config/authConfig'); const { AUTH_SETTINGS_KEYS, DEFAULT_IDLE_TIMEOUT } = require('../config/authConfig'); //Конфиг авторизации
const { DIALOG_BUTTON_TYPE, DIALOG_CANCEL_BUTTON, getConfirmButtonOptions } = require('../config/dialogButtons'); const { DIALOG_BUTTON_TYPE, DIALOG_CANCEL_BUTTON, getConfirmButtonOptions } = require('../config/dialogButtons'); //Кнопки диалогов
const { getAppInfo, getModeLabel } = require('../utils/appInfo'); const { getAppInfo, getModeLabel } = require('../utils/appInfo'); //Информация о приложении и режиме
const { validateServerUrlAllowEmpty, validateIdleTimeout } = require('../utils/validation'); const { validateServerUrlAllowEmpty, validateIdleTimeout } = require('../utils/validation'); //Валидация
const styles = require('../styles/screens/SettingsScreen.styles'); 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) { if (success) {
setServerUrl(valueToSave); setServerUrl(valueToSave);
showSuccess('Настройки сервера сохранены'); showSuccess(SETTINGS_SERVER_SAVED_MESSAGE);
} else { } else {
showError('Не удалось сохранить настройки'); showError('Не удалось сохранить настройки');
} }
@ -249,7 +250,7 @@ function SettingsScreen() {
setIdleTimeout(defaultValue); setIdleTimeout(defaultValue);
await setSetting(AUTH_SETTINGS_KEYS.IDLE_TIMEOUT, defaultValue); await setSetting(AUTH_SETTINGS_KEYS.IDLE_TIMEOUT, defaultValue);
setNotConnected(); setNotConnected();
showSuccess('Настройки сброшены'); showSuccess(SETTINGS_RESET_SUCCESS_MESSAGE);
} else { } else {
showError('Не удалось сбросить настройки'); showError('Не удалось сбросить настройки');
} }
@ -257,7 +258,7 @@ function SettingsScreen() {
//Подключён (онлайн или офлайн): сбрасываем только время простоя //Подключён (онлайн или офлайн): сбрасываем только время простоя
await setSetting(AUTH_SETTINGS_KEYS.IDLE_TIMEOUT, defaultValue); await setSetting(AUTH_SETTINGS_KEYS.IDLE_TIMEOUT, defaultValue);
setIdleTimeout(defaultValue); setIdleTimeout(defaultValue);
showSuccess('Настройки сброшены'); showSuccess(SETTINGS_RESET_SUCCESS_MESSAGE);
} }
} catch (error) { } catch (error) {
console.error('Ошибка сброса настроек:', error); console.error('Ошибка сброса настроек:', error);
@ -304,7 +305,7 @@ function SettingsScreen() {
} }
}, [vacuum, showSuccess, showError]); }, [vacuum, showSuccess, showError]);
//Информация о приложении //Показ информации о приложении
const handleShowAppInfo = React.useCallback(() => { const handleShowAppInfo = React.useCallback(() => {
const appInfo = getAppInfo({ const appInfo = getAppInfo({
mode, mode,
@ -313,7 +314,7 @@ function SettingsScreen() {
}); });
showInfo(appInfo, { showInfo(appInfo, {
title: 'Информация о приложении' title: APP_ABOUT_TITLE
}); });
}, [mode, serverUrl, isDbReady, showInfo]); }, [mode, serverUrl, isDbReady, showInfo]);
@ -475,7 +476,7 @@ function SettingsScreen() {
Информация Информация
</AppText> </AppText>
<AppButton title="О приложении" onPress={handleShowAppInfo} style={[styles.actionButton, styles.infoButton]} /> <AppButton title={MENU_ITEM_ABOUT} onPress={handleShowAppInfo} style={[styles.actionButton, styles.infoButton]} />
<View style={styles.infoRow}> <View style={styles.infoRow}>
<AppText style={styles.infoLabel} variant="body"> <AppText style={styles.infoLabel} variant="body">

View File

@ -7,10 +7,10 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
const { StyleSheet } = require('react-native'); const { StyleSheet } = require('react-native'); //StyleSheet
const { APP_COLORS } = require('../../config/theme'); const { APP_COLORS } = require('../../config/theme'); //Цветовая схема
const { UI } = require('../../config/appConfig'); const { UI } = require('../../config/appConfig'); //Конфигурация UI
const { responsiveSpacing, heightPercentage } = require('../../utils/responsive'); const { responsiveSpacing, heightPercentage } = require('../../utils/responsive'); //Адаптивные размеры
//----------- //-----------
//Тело модуля //Тело модуля

View File

@ -7,9 +7,9 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
const { StyleSheet } = require('react-native'); const { StyleSheet } = require('react-native'); //StyleSheet
const { APP_COLORS } = require('../../config/theme'); const { APP_COLORS } = require('../../config/theme'); //Цветовая схема
const { responsiveSpacing } = require('../../utils/responsive'); const { responsiveSpacing } = require('../../utils/responsive'); //Адаптивные отступы
//----------- //-----------
//Тело модуля //Тело модуля

View File

@ -7,10 +7,10 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
const { StyleSheet } = require('react-native'); const { StyleSheet } = require('react-native'); //StyleSheet
const { APP_COLORS } = require('../../config/theme'); const { APP_COLORS } = require('../../config/theme'); //Цветовая схема
const { UI } = require('../../config/appConfig'); const { UI } = require('../../config/appConfig'); //Конфигурация UI
const { responsiveSpacing } = require('../../utils/responsive'); const { responsiveSpacing } = require('../../utils/responsive'); //Адаптивные отступы
//----------- //-----------
//Тело модуля //Тело модуля

View File

@ -7,10 +7,10 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
const { StyleSheet } = require('react-native'); const { StyleSheet } = require('react-native'); //StyleSheet
const { APP_COLORS } = require('../../config/theme'); const { APP_COLORS } = require('../../config/theme'); //Цветовая схема
const { UI } = require('../../config/appConfig'); const { UI } = require('../../config/appConfig'); //Конфигурация UI
const { responsiveSpacing } = require('../../utils/responsive'); const { responsiveSpacing } = require('../../utils/responsive'); //Адаптивные отступы
//----------- //-----------
//Тело модуля //Тело модуля

View File

@ -1,17 +0,0 @@
/*
Предрейсовые осмотры - мобильное приложение
Стили провайдера авторизации (провайдер без визуальной разметки)
*/
//---------
//Константы
//---------
//Провайдер не рендерит собственных View — стили не требуются
const styles = {};
//----------------
//Интерфейс модуля
//----------------
module.exports = styles;

View File

@ -1,17 +0,0 @@
/*
Предрейсовые осмотры - мобильное приложение
Стили провайдера локальной БД (провайдер без визуальной разметки)
*/
//---------
//Константы
//---------
//Провайдер не рендерит собственных View — стили не требуются
const styles = {};
//----------------
//Интерфейс модуля
//----------------
module.exports = styles;

View File

@ -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;

View File

@ -1,17 +0,0 @@
/*
Предрейсовые осмотры - мобильное приложение
Стили провайдера сообщений (провайдер без визуальной разметки)
*/
//---------
//Константы
//---------
//Провайдер не рендерит собственных View — стили не требуются
const styles = {};
//----------------
//Интерфейс модуля
//----------------
module.exports = styles;

View File

@ -1,17 +0,0 @@
/*
Предрейсовые осмотры - мобильное приложение
Стили провайдера режима работы (провайдер без визуальной разметки)
*/
//---------
//Константы
//---------
//Провайдер не рендерит собственных View — стили не требуются
const styles = {};
//----------------
//Интерфейс модуля
//----------------
module.exports = styles;

View File

@ -1,17 +0,0 @@
/*
Предрейсовые осмотры - мобильное приложение
Стили провайдера навигации (провайдер без визуальной разметки)
*/
//---------
//Константы
//---------
//Провайдер не рендерит собственных View — стили не требуются
const styles = {};
//----------------
//Интерфейс модуля
//----------------
module.exports = styles;

View File

@ -1,17 +0,0 @@
/*
Предрейсовые осмотры - мобильное приложение
Стили провайдера предрейсовых осмотров (провайдер без визуальной разметки)
*/
//---------
//Константы
//---------
//Провайдер не рендерит собственных View — стили не требуются
const styles = {};
//----------------
//Интерфейс модуля
//----------------
module.exports = styles;

View File

@ -1,17 +0,0 @@
/*
Предрейсовые осмотры - мобильное приложение
Стили провайдера сервера приложений (провайдер без визуальной разметки)
*/
//---------
//Константы
//---------
//Провайдер не рендерит собственных View — стили не требуются
const styles = {};
//----------------
//Интерфейс модуля
//----------------
module.exports = styles;

View File

@ -7,10 +7,10 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
const { StyleSheet } = require('react-native'); const { StyleSheet } = require('react-native'); //StyleSheet
const { APP_COLORS } = require('../../config/theme'); const { APP_COLORS } = require('../../config/theme'); //Цветовая схема
const { UI } = require('../../config/appConfig'); const { UI } = require('../../config/appConfig'); //Конфигурация UI
const { responsiveSpacing, responsiveSize } = require('../../utils/responsive'); const { responsiveSpacing, responsiveSize } = require('../../utils/responsive'); //Адаптивные размеры
//----------- //-----------
//Тело модуля //Тело модуля

View File

@ -7,10 +7,10 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
const { StyleSheet } = require('react-native'); const { StyleSheet } = require('react-native'); //StyleSheet
const { APP_COLORS } = require('../../config/theme'); const { APP_COLORS } = require('../../config/theme'); //Цветовая схема
const { UI } = require('../../config/appConfig'); const { UI } = require('../../config/appConfig'); //Конфигурация UI
const { responsiveSpacing } = require('../../utils/responsive'); const { responsiveSpacing } = require('../../utils/responsive'); //Адаптивные отступы
//----------- //-----------
//Тело модуля //Тело модуля

View File

@ -7,10 +7,10 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
const { StyleSheet } = require('react-native'); const { StyleSheet } = require('react-native'); //StyleSheet
const { APP_COLORS } = require('../../config/theme'); const { APP_COLORS } = require('../../config/theme'); //Цветовая схема
const { UI } = require('../../config/appConfig'); const { UI } = require('../../config/appConfig'); //Конфигурация UI
const { responsiveSpacing } = require('../../utils/responsive'); const { responsiveSpacing } = require('../../utils/responsive'); //Адаптивные отступы
//----------- //-----------
//Тело модуля //Тело модуля

View File

@ -7,7 +7,7 @@
//Подключение библиотек //Подключение библиотек
//--------------------- //---------------------
const { Platform, NativeModules } = require('react-native'); const { Platform, NativeModules } = require('react-native'); //Платформа и нативные модули
const { WEB_DEVICE_ID_KEY } = require('../config/storageKeys'); //Ключи хранилища const { WEB_DEVICE_ID_KEY } = require('../config/storageKeys'); //Ключи хранилища
//----------------------- //-----------------------