Skip to content

Commit 0a70abf

Browse files
authored
Merge pull request #23 from Alexandra0107/master
2 parents e35a559 + ce5e436 commit 0a70abf

2 files changed

Lines changed: 22 additions & 7 deletions

File tree

js/api.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
const BASE_URL = 'https://31.javascript.htmlacademy.pro/kekstagram';
22

3-
//Отправляет данные формы на сервер
3+
// Отправляет данные формы на сервер
44
const sendFormData = async (formData) => {
55
const submitButton = document.querySelector('.img-upload__submit');
66

7+
78
try {
89
// Блокируем кнопку отправки
910
submitButton.disabled = true;
@@ -28,7 +29,7 @@ const sendFormData = async (formData) => {
2829
}
2930
};
3031

31-
//Получает данные с сервера
32+
// Получает данные с сервера
3233
const getData = async (endpoint) => {
3334
try {
3435
const response = await fetch(`${BASE_URL}${endpoint}`);

js/event-handlers.js

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ import { sendFormData } from './api.js';
44
let currentSuccessElement = null;
55
let currentErrorElement = null;
66

7+
// Флаг: открыта ли сейчас ошибка (ключевое дополнение)
8+
let isErrorShown = false;
9+
710
// Простые функции удаления (не вызывают обработчики)
811
const removeSuccessMessage = () => {
912
if (currentSuccessElement && currentSuccessElement.parentNode) {
@@ -16,10 +19,11 @@ const removeErrorMessage = () => {
1619
if (currentErrorElement && currentErrorElement.parentNode) {
1720
currentErrorElement.parentNode.removeChild(currentErrorElement);
1821
currentErrorElement = null;
22+
isErrorShown = false; // Сбрасываем флаг при закрытии ошибки
1923
}
2024
};
2125

22-
// Обработчики событий (используют уже объявленные функции удаления)
26+
// Обработчики событий
2327
const onSuccessKeydown = (evt) => {
2428
if (isEscapeKey(evt)) {
2529
evt.preventDefault();
@@ -34,9 +38,10 @@ const onSuccessClickOutside = (evt) => {
3438
};
3539

3640
const onErrorKeydown = (evt) => {
37-
if (isEscapeKey(evt)) {
41+
if (isEscapeKey(evt) && isErrorShown) {
3842
evt.preventDefault();
3943
removeErrorMessage();
44+
removeErrorEventListeners();
4045
}
4146
};
4247

@@ -67,7 +72,7 @@ const removeErrorEventListeners = () => {
6772
document.removeEventListener('click', onErrorClickOutside);
6873
};
6974

70-
// Функции показа сообщений (используют всё выше объявленное)
75+
// Функции показа сообщений
7176
const showSuccessMessage = () => {
7277
const successTemplate = document.querySelector('#success');
7378
if (!successTemplate) {
@@ -123,10 +128,11 @@ const showErrorMessage = (errorMessage) => {
123128
});
124129
}
125130

131+
isErrorShown = true; // Устанавливаем флаг — ошибка открыта
126132
addErrorEventListeners();
127133
};
128134

129-
//Настраивает все обработчики событий для формы загрузки
135+
// Настраивает все обработчики событий для формы загрузки
130136
const setupEventHandlers = (
131137
fileInput,
132138
cancelButton,
@@ -175,6 +181,14 @@ const setupEventHandlers = (
175181
// Обработчик закрытия по Esc (вне формы редактирования)
176182
document.addEventListener('keydown', (evt) => {
177183
if (isEscapeKey(evt) && overlay && !overlay.classList.contains('hidden')) {
184+
// 1. Если ошибка открыта — закрываем только ошибку (приоритет)
185+
if (isErrorShown) {
186+
evt.preventDefault();
187+
removeErrorMessage();
188+
return; // Прерываем выполнение, чтобы не закрывать форму
189+
}
190+
191+
// 2. Если ошибки нет — закрываем форму
178192
const isInInput = document.activeElement === hashtagsInput || document.activeElement === descriptionInput;
179193
if (!isInInput) {
180194
evt.preventDefault();
@@ -193,4 +207,4 @@ const setupEventHandlers = (
193207
}
194208
};
195209

196-
export { setupEventHandlers, showSuccessMessage, showErrorMessage};
210+
export { setupEventHandlers, showSuccessMessage, showErrorMessage };

0 commit comments

Comments
 (0)