team113 / messenger

Open-source front-end part of messenger by team113
GNU Affero General Public License v3.0
17 stars 13 forks source link

Introduce `ChatEvent`s debouncing when initially subscribing to `chatEvents` #792

Closed SleepySquash closed 1 month ago

SleepySquash commented 9 months ago

Background

HiveRxChat обрабатывает события по принципу FIFO, т.е. один за другим.

Problem to solve

Из-за того, что на chatEvents может идти подписка с версией, отстающей от актуальной, поэтому события налетают один за другим, то показывая звонок, то его скрывая, то показывая какие-то вещи, то их скрывая, итд.

Possible solutions

  1. Ввести какой-нибудь debounce на события - т.е. копить события и обрабатывать их все разом, а не ожидать каждые 300-400 мс нового события.
  2. Вообще в теории обработки некоторых событий можно было бы избежать, т.к. recentChats возвращает уже актуальное состояние чата с актуальным ongoingCallом, актуальным lastItemом, итд.
SleepySquash commented 1 month ago

Fixed by #1106