Skip to content

Commit 994687d

Browse files
committed
refactor: clarify post-action snapshot policies
1 parent beba083 commit 994687d

1 file changed

Lines changed: 27 additions & 31 deletions

File tree

src/daemon/handlers/snapshot-capture.ts

Lines changed: 27 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -69,16 +69,33 @@ type SnapshotAttempt = {
6969
freshness?: AndroidFreshnessCaptureMeta;
7070
};
7171

72-
type AndroidFreshnessReason = 'empty-interactive' | 'sharp-drop' | 'stuck-route';
73-
type AndroidFreshnessMode = 'default' | 'ref-refresh';
74-
const INTERACTION_CHANGE_RECHECK_DELAY_MS = 500;
75-
76-
export async function captureSnapshot(params: CaptureSnapshotParams): Promise<{
72+
type CaptureSnapshotResult = {
7773
snapshot: SnapshotState;
7874
analysis?: AndroidSnapshotAnalysis;
7975
androidSnapshot?: AndroidSnapshotBackendMetadata;
8076
freshness?: AndroidFreshnessCaptureMeta;
81-
}> {
77+
};
78+
79+
type AndroidFreshnessReason = 'empty-interactive' | 'sharp-drop' | 'stuck-route';
80+
type AndroidFreshnessMode = 'default' | 'ref-refresh';
81+
const INTERACTION_CHANGE_RECHECK_DELAY_MS = 500;
82+
83+
export async function captureSnapshot(params: CaptureSnapshotParams): Promise<CaptureSnapshotResult> {
84+
const postActionResult = await capturePostActionAwareSnapshot(params);
85+
if (postActionResult) return postActionResult;
86+
87+
const data = await captureSnapshotData(params);
88+
clearAndroidSnapshotFreshness(params.session);
89+
return {
90+
snapshot: buildSnapshotState(data, resolveSnapshotStateFlags(params)),
91+
analysis: data.analysis,
92+
androidSnapshot: data.androidSnapshot,
93+
};
94+
}
95+
96+
async function capturePostActionAwareSnapshot(
97+
params: CaptureSnapshotParams,
98+
): Promise<CaptureSnapshotResult | undefined> {
8299
const pendingInteractionOutcome = getActivePendingInteractionOutcome(params.session);
83100
if (pendingInteractionOutcome && params.session) {
84101
return await captureInteractionOutcomeAwareSnapshot(
@@ -96,24 +113,13 @@ export async function captureSnapshot(params: CaptureSnapshotParams): Promise<{
96113
if (freshness && params.device.platform === 'android') {
97114
return await captureAndroidFreshnessAwareSnapshot(params, freshness);
98115
}
99-
const data = await captureSnapshotData(params);
100-
clearAndroidSnapshotFreshness(params.session);
101-
return {
102-
snapshot: buildSnapshotState(data, resolveSnapshotStateFlags(params)),
103-
analysis: data.analysis,
104-
androidSnapshot: data.androidSnapshot,
105-
};
116+
return undefined;
106117
}
107118

108119
async function captureInteractionOutcomeAwareSnapshot(
109120
params: CaptureSnapshotParams & { session: SessionState },
110121
pending: NonNullable<SessionState['pendingInteractionOutcome']>,
111-
): Promise<{
112-
snapshot: SnapshotState;
113-
analysis?: AndroidSnapshotAnalysis;
114-
androidSnapshot?: AndroidSnapshotBackendMetadata;
115-
freshness?: AndroidFreshnessCaptureMeta;
116-
}> {
122+
): Promise<CaptureSnapshotResult> {
117123
const session = params.session;
118124

119125
const startedAt = Date.now();
@@ -234,12 +240,7 @@ export async function captureSnapshotData(params: CaptureSnapshotParams): Promis
234240
async function captureAndroidFreshnessAwareSnapshot(
235241
params: CaptureSnapshotParams,
236242
freshness: NonNullable<SessionState['androidSnapshotFreshness']>,
237-
): Promise<{
238-
snapshot: SnapshotState;
239-
analysis?: AndroidSnapshotAnalysis;
240-
androidSnapshot?: AndroidSnapshotBackendMetadata;
241-
freshness?: AndroidFreshnessCaptureMeta;
242-
}> {
243+
): Promise<CaptureSnapshotResult> {
243244
const latest = await captureAndroidFreshnessAwareAttempt(params, freshness);
244245
return {
245246
snapshot: latest.snapshot,
@@ -288,12 +289,7 @@ async function captureAndroidFreshnessAwareAttempt(
288289

289290
async function capturePostGestureAwareSnapshot(
290291
params: CaptureSnapshotParams & { session: SessionState },
291-
): Promise<{
292-
snapshot: SnapshotState;
293-
analysis?: AndroidSnapshotAnalysis;
294-
androidSnapshot?: AndroidSnapshotBackendMetadata;
295-
freshness?: AndroidFreshnessCaptureMeta;
296-
}> {
292+
): Promise<CaptureSnapshotResult> {
297293
const latest = await capturePostGestureStabilizedResult({
298294
session: params.session,
299295
capture: async () => await capturePostActionSnapshotAttempt(params),

0 commit comments

Comments
 (0)