/*
    Предрейсовые осмотры - мобильное приложение
    Универсальный поток выхода из приложения
*/

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

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

//Обработчики: выполнение выхода и показ диалога подтверждения
function createLogoutHandler(deps) {
    const {
        logout,
        mode,
        setNotConnected,
        setInitialScreen,
        SCREENS,
        showError,
        showInfo,
        logoutConfirmTitle,
        logoutConfirmMessage,
        logoutButtonTitle,
        getConfirmButtonOptions,
        dialogButtonTypeError,
        dialogCancelButton
    } = deps;

    const performLogout = async () => {
        const result = await logout({ skipServerRequest: mode === 'OFFLINE' });

        if (result.success) {
            setNotConnected();
            setInitialScreen(SCREENS.AUTH);
        } else {
            showError(result.error || 'Ошибка выхода');
        }
    };

    const handleLogout = () => {
        const confirmButton = getConfirmButtonOptions(dialogButtonTypeError, logoutButtonTitle, performLogout);

        showInfo(logoutConfirmMessage, {
            title: logoutConfirmTitle,
            buttons: [dialogCancelButton, confirmButton]
        });
    };

    return { performLogout, handleLogout };
}

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

module.exports = {
    createLogoutHandler
};
