@@ -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
108119async 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
234240async 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
289290async 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