@@ -10,6 +10,7 @@ import {
1010 InstantRecordingUploader ,
1111 initialLocalRecordingState ,
1212 initiateMultipartUpload ,
13+ isRecordingSpoolUploaded ,
1314 isUserCancellationError ,
1415 type LocalRecordingState ,
1516 listRecordingSpoolSessions ,
@@ -758,6 +759,12 @@ const sweepOrphanedRecordingSpools = async () => {
758759 remainingSessions . add ( orphan . sessionId ) ;
759760 continue ;
760761 }
762+ if ( isRecordingSpoolUploaded ( orphan . sessionId ) ) {
763+ void deleteRecoveredRecordingSpool ( orphan . sessionId ) . catch (
764+ ( ) => undefined ,
765+ ) ;
766+ continue ;
767+ }
761768 const manifest = manifestsBySession . get ( orphan . sessionId ) ;
762769 // A surviving manifest belongs to a previous offscreen document. This
763770 // document is the extension's only spool writer, so the shared live
@@ -2037,14 +2044,30 @@ const finalizeRecording = async (recording: ActiveRecording) => {
20372044 fps : recording . fps ,
20382045 subpath : recording . subpath ,
20392046 } ) ;
2040- await recording . spool . dispose ( ) ;
2041- await recording . cameraSpool ?. dispose ( ) ;
2042- await recording . inputSidecar ?. dispose ( ) . catch ( ( ) => undefined ) ;
2043- await Promise . all (
2044- recording . audioSidecars . map ( ( sidecar ) =>
2045- sidecar . disposeBackup ( ) . catch ( ( ) => undefined ) ,
2047+ recording . spool . markUploaded ( ) ;
2048+ recording . cameraSpool ?. markUploaded ( ) ;
2049+ if ( recording . inputSidecar ?. isUploadCompleted ) {
2050+ recording . inputSidecar . spool . markUploaded ( ) ;
2051+ }
2052+ for ( const sidecar of recording . audioSidecars ) {
2053+ sidecar . markUploadedBackup ( ) ;
2054+ }
2055+ void Promise . all ( [
2056+ recording . spool . dispose ( ) . catch ( ( error ) => {
2057+ console . error ( "Failed to remove uploaded screen backup" , error ) ;
2058+ } ) ,
2059+ recording . cameraSpool ?. dispose ( ) . catch ( ( error ) => {
2060+ console . error ( "Failed to remove uploaded camera backup" , error ) ;
2061+ } ) ,
2062+ recording . inputSidecar ?. dispose ( ) . catch ( ( error ) => {
2063+ console . error ( "Failed to remove uploaded input backup" , error ) ;
2064+ } ) ,
2065+ ...recording . audioSidecars . map ( ( sidecar ) =>
2066+ sidecar . disposeBackup ( ) . catch ( ( error ) => {
2067+ console . error ( "Failed to remove uploaded audio backup" , error ) ;
2068+ } ) ,
20462069 ) ,
2047- ) ;
2070+ ] ) ;
20482071 await removeFailedRecording ( recording . spool . sessionId ) . catch (
20492072 ( ) => undefined ,
20502073 ) ;
0 commit comments