Fix mobile agent timeline catch-up

This commit is contained in:
Mohamed Boudra
2026-05-29 09:31:16 +07:00
parent 2e1b907c63
commit 65ace20880
11 changed files with 410 additions and 77 deletions
@@ -167,12 +167,14 @@ function deriveBootstrapTailTimelinePolicy({
function shouldResolveTimelineInit({
hasActiveInitDeferred,
hasNewer,
isInitializing,
initRequestDirection,
responseDirection,
reset,
}: {
hasActiveInitDeferred: boolean;
hasNewer: boolean;
isInitializing: boolean;
initRequestDirection: InitRequestDirection;
responseDirection: TimelineDirection;
@@ -184,6 +186,9 @@ function shouldResolveTimelineInit({
if (reset) {
return true;
}
if (responseDirection === "after" && hasNewer) {
return false;
}
return responseDirection === initRequestDirection;
}
@@ -652,12 +657,16 @@ export function processTimelineResponse(
// ------------------------------------------------------------------
const shouldResolveDeferredInit = shouldResolveTimelineInit({
hasActiveInitDeferred,
hasNewer: payload.hasNewer,
isInitializing,
initRequestDirection,
responseDirection: payload.direction,
reset: payload.reset,
});
const clearInitializing = shouldResolveDeferredInit || (isInitializing && !hasActiveInitDeferred);
const timelineResponseComplete = payload.direction !== "after" || !payload.hasNewer;
const clearInitializing =
(shouldResolveDeferredInit || (isInitializing && !hasActiveInitDeferred)) &&
timelineResponseComplete;
const initResolution: "resolve" | "reject" | null = shouldResolveDeferredInit ? "resolve" : null;