Уведомления в PRO-dela: как не пропустить задачу
Уведомление — это не текст. Это состояние: прочитано или нет, к какой сущности относится, куда ведёт переход.
Кажется мелочью, но именно отсюда растут все нормальные продуктовые решения вокруг уведомлений. Если уведомление — просто текст, который куда-то улетел, вы физически не можете построить ни счётчик непрочитанных, ни фильтр, ни надёжный push поверх него: нечему быть источником истины.
В PRO-dela это разведено с самого начала: запись в базе — источник истины и история, realtime-канал — синхронизация активного интерфейса, пока вы онлайн, push через FCM — фоновый канал для случая, когда вкладка закрыта. Ни один из двух последних не подменяет первый: если приложение было закрыто в момент события, ни realtime, ни push не сработают, но запись всё равно дождётся вас в списке.
Отдельно интересно, как разведены push-настройки. На уровне данных они уже разложены на шесть независимых категорий — задачи, упоминания, приглашения, обсуждения, сообщения, счета, — и сервер отдельно проверяет каждую перед отправкой. А в интерфейсе пока один переключатель на все шесть сразу. Это не баг и не недосмотр, а честный снимок текущего состояния продукта: данные для гранулярной настройки уже есть, UI для неё — ещё нет.
Разобрали, как это устроено целиком: https://pro-dela.ru/articles/notifications-and-alerts?utm_source=setka&utm_medium=social&utm_campaign=functional2-notifications
В вашем продукте уведомление — это отдельная сущность со своим состоянием или просто текст, который отправили и забыли?