unfollow-fix

This commit is contained in:
2025-05-31 17:18:31 +03:00
parent 90260534eb
commit 0140fcd522
8 changed files with 1088 additions and 39 deletions

View File

@@ -7,6 +7,13 @@
- Интеграция с функцией `get_with_stat` для единого подхода к получению статистики
### Исправлено
- **КРИТИЧНО**: Ошибка в функции `unfollow` с некорректным состоянием UI:
- **Проблема**: При попытке отписки от несуществующей подписки сервер возвращал ошибку "following was not found" с пустым списком подписок `[]`, что приводило к тому, что клиент не обновлял UI состояние из-за условия `if (result && !result.error)`
- **Решение**:
- Функция `unfollow` теперь всегда возвращает актуальный список подписок из кэша/БД, даже если подписка не найдена
- Добавлена инвалидация кэша подписок после операций follow/unfollow: `author:follows-{entity_type}s:{follower_id}`
- Улучшено логирование для отладки операций подписок
- **Результат**: UI корректно отображает реальное состояние подписок пользователя
- Ошибка "'dict' object has no attribute 'id'" в функции `load_shouts_search`:
- Исправлен доступ к атрибуту `id` у объектов shout, которые возвращаются как словари из `get_shouts_with_links`
- Заменен `shout.id` на `shout["id"]` и `shout.score` на `shout["score"]` в функции поиска публикаций
@@ -26,6 +33,15 @@
- Улучшена документация функции с описанием обработки результатов запроса
- Оптимизирована сортировка и группировка результатов для корректной работы с joined eager loads
### Улучшено
- Система кэширования подписок:
- Добавлена автоматическая инвалидация кэша после операций follow/unfollow
- Унифицирована обработка ошибок в мутациях подписок
- Добавлен тестовый скрипт `test_unfollow_fix.py` для проверки исправлений
- Документация системы подписок:
- Обновлен `docs/follower.md` с подробным описанием исправлений
- Добавлены примеры кода и диаграммы потока данных
#### [0.4.23] - 2025-05-25
### Исправлено