Не успел я анонсировать свое участие в новом марафоне #зимавместе, как участие это оказалось под большим вопросам. А благодарить за это я сейчас буду доблестных разработчиков, которые поломали чеклист. Итак,
frank , подойди поближе, нагнись пониже, баг описывать буду.
На данный момент мой чеклист выглядит как-то так, хотя два поста в марафоне уже есть (а этот будет третьим):
Сколько бы ссылок на посты я не проставил, после перезагрузки страницы все эти ссылки девственно чисты, как слеза комсомолки, а статистика по нулям, кроме выбранного количества заданий.
Итак, имеем: Yandex Browser 22.11.0.2484 stable (64-bit), Ubuntu 22.04 LTS
Блокировщики рекламы отключены для всего ЖЖ (хоть это и неудобно, там иногда такое лезет, что хоть святых выноси), трафику ничто не препятствует
Что делаем:
1. Проставляем ссылки на посты в пунктах чеклиста
2. Видим вроде бы корректный результат
однако...
3. Обновляем страницу (как вариант, просто закрываем вкладку или браузер целиком, затем снова открываем)
4. И видим фигу
А самое интересное мы при этом видим в консоли браузера (я ж не просто с горы упал, а, на минуточку, и во фронтенд могу)
Выглядит так, что websocket соединение, по которому должны быть приняты данные от бэкенда, закрывается раньше времени. А вот на чьей стороне оно закрывается и почему, это нам
frank расскажет. Баг-репорт я отправил (ticket id: 2174474), там то же самое описано, только более формальным языком.
В конче концов, не дело клиента дебажить проблему, внесенную разработчиком сервиса. Хотя, если без дебага не обойтись, готов поучаствовать но за отдельную плату.
Так что пока я посты писать буду как бы в стол. И, если проблема не решится в разумные сроки, то какой мне смысл продолжать участие в марафоне, если я не могу об этом участии отчитаться?
Обновлено: оказывается, теперь при добавлении ссылки на запись обязательно нажатие клавиши Enter. Тогда обмен данными с бэкендом отрабатывает, и значения счетчиков сохраняются.
Технические подробности: проблема в том, что изменение счетчиков на странице, причем корявое (если добавить ссылки на одну запись к двум заданиям, то без нажатия клавиши посчитается только одно), повешено на
React hook useEffect(), который вызывается при каждом изменении на странице (и при изменении поля ввода в том числе), а обмен данными с бэкендом - на нажатие клавиши Enter. И после успешного обмена данными (бэкенд возвращает заголовок записи) счетчики снова обновляются, теперь уже правильно.
Раньше, по крайней мере летом, все висело только на useEffect(), нажатие Enter не было обязательным.
Рекомендации:
frank, надо убирать обновление локальных счетчиков с useEffect(), это вводит в заблуждение, и оставить только на нажатие Enter. Желательно еще всплывашку повесить с подсказкой, т.к. на данный момент поведение вообще не документировано и не является интуитивным.
А теперь мне интересно, что ответит техподдержка на мой тикет и ответит ли вообще? Будет повод сравнить подходы и клиентоориентированность.