Нашла лыжа на камень

Dec 03, 2022 21:58


Не успел я анонсировать свое участие в новом марафоне #зимавместе, как участие это оказалось под большим вопросам. А благодарить за это я сейчас буду доблестных разработчиков, которые поломали чеклист. Итак, 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. Желательно еще всплывашку повесить с подсказкой, т.к. на данный момент поведение вообще не документировано и не является интуитивным.

А теперь мне интересно, что ответит техподдержка на мой тикет и ответит ли вообще? Будет повод сравнить подходы и клиентоориентированность.

#зимавместе, ЖЖ, баги чеклиста

Previous post Next post
Up