/*
    Предрейсовые осмотры - мобильное приложение
    Корневой файл приложения
*/

//---------------------
//Подключение библиотек
//---------------------

const React = require('react'); //React
const AppErrorBoundary = require('./src/components/layout/AppErrorBoundary'); //Обработчик ошибок
const AppMessagingProvider = require('./src/components/layout/AppMessagingProvider').AppMessagingProvider; //Провайдер сообщений
const AppNavigationProvider = require('./src/components/layout/AppNavigationProvider').AppNavigationProvider; //Провайдер навигации
const AppModeProvider = require('./src/components/layout/AppModeProvider').AppModeProvider; //Провайдер режима работы
const AppLocalDbProvider = require('./src/components/layout/AppLocalDbProvider').AppLocalDbProvider; //Провайдер локальной БД
const AppAuthProvider = require('./src/components/layout/AppAuthProvider').AppAuthProvider; //Провайдер авторизации
const AppServerProvider = require('./src/components/layout/AppServerProvider').AppServerProvider; //Провайдер сервера
const { AppIdleProvider } = require('./src/components/layout/AppIdleProvider'); //Провайдер простоя
const AppRoot = require('./src/components/layout/AppRoot'); //Корневой layout приложения

//-----------
//Тело модуля
//-----------

//Основное приложение
function App() {
    return (
        <AppErrorBoundary>
            <AppMessagingProvider>
                <AppNavigationProvider>
                    <AppLocalDbProvider>
                        <AppAuthProvider>
                            <AppModeProvider>
                                <AppServerProvider>
                                    <AppIdleProvider>
                                        <AppRoot />
                                    </AppIdleProvider>
                                </AppServerProvider>
                            </AppModeProvider>
                        </AppAuthProvider>
                    </AppLocalDbProvider>
                </AppNavigationProvider>
            </AppMessagingProvider>
        </AppErrorBoundary>
    );
}

//----------------
//Интерфейс модуля
//----------------

module.exports = App;
