KamoCRM

Stop the text branch's retry storm, pin the observer re-root

Fixkamo-internal
Ya
26 Agosti 2026, 08:05 UTC
Mwandishi
kamo
Ahadi ya
cb7962f

voipApi.getConversations goes through apiCall, which throws on any non-2xx — unlike loadMore's other two branches, which fetch() directly and check res.ok. The text branch had no catch around it, so a backend 500 became an unhandled promise rejection, hasMore never flipped false, and the sentinel's IntersectionObserver kept re-firing the same failing call forever. It now catches and degrades exactly like its siblings: stop pagination, keep whatever rows are already loaded, never throw. Also adds coverage the extraction out of the old chats-list component never got: that the sentinel's IntersectionObserver effect actually re-roots once scrollRoot.current is populated on a later render (a scroll-root ref that starts null and never gets a real re-render checked would otherwise root the observer on the viewport forever — the exact bug this hook exists to avoid). That behavior was already correct; this test only closes the gap that it was untested. A mutation check (scrollRoot.current -> scrollRoot in the deps array) confirmed the new test actually fails against that regression.

Mabadiliko yote

Je, unaona nini kuhusu usafiri?

Kila kitu kinaingia kwenye tovuti yako mwenyewe. Anza kwenye mpango wa bure na usome ukurasa huu tena katika mwezi mmoja.

Kuwa Huru MileleMtazamo wa bei