HiveRxChat обрабатывает события по принципу FIFO, т.е. один за другим.
Problem to solve
Из-за того, что на chatEvents может идти подписка с версией, отстающей от актуальной, поэтому события налетают один за другим, то показывая звонок, то его скрывая, то показывая какие-то вещи, то их скрывая, итд.
Possible solutions
Ввести какой-нибудь debounce на события - т.е. копить события и обрабатывать их все разом, а не ожидать каждые 300-400 мс нового события.
Вообще в теории обработки некоторых событий можно было бы избежать, т.к. recentChats возвращает уже актуальное состояние чата с актуальным ongoingCallом, актуальным lastItemом, итд.
Background
HiveRxChat
обрабатывает события по принципу FIFO, т.е. один за другим.Problem to solve
Из-за того, что на
chatEvents
может идти подписка с версией, отстающей от актуальной, поэтому события налетают один за другим, то показывая звонок, то его скрывая, то показывая какие-то вещи, то их скрывая, итд.Possible solutions
debounce
на события - т.е. копить события и обрабатывать их все разом, а не ожидать каждые 300-400 мс нового события.recentChats
возвращает уже актуальное состояние чата с актуальнымongoingCall
ом, актуальнымlastItem
ом, итд.