@@ -118,36 +118,50 @@ export function createLiveShredsAtoms() {
118118
119119 if ( ! prev || ! slotRange ) return ;
120120
121- const nowDelta = new Date ( ) . getTime ( ) - prev . referenceTs ;
122-
123- let shouldDeleteSlot = false ;
124- for (
125- let slotNumber = slotRange . max ;
126- slotNumber >= slotRange . min ;
127- slotNumber --
128- ) {
129- const slot = prev . slots [ slotNumber ] ;
130- if ( ! slot ) continue ;
131-
132- if (
133- ! shouldDeleteSlot &&
134- slot . completionTsDelta != null &&
135- nowDelta - slot . completionTsDelta > xRangeMs + delayMs
121+ if ( slotRange . max - slotRange . min > 50 ) {
122+ // only keep 50 slots
123+ for (
124+ let slotNumber = slotRange . min ;
125+ slotNumber <= slotRange . max - 50 ;
126+ slotNumber ++
136127 ) {
137- // once we find a slot that is complete and far enough in the past, delete all slot numbers less it
138- shouldDeleteSlot = true ;
139- }
128+ const slot = prev . slots [ slotNumber ] ;
129+ if ( ! slot ) continue ;
140130
141- if ( shouldDeleteSlot ) {
142131 delete prev . slots [ slotNumber ] ;
143132 }
133+ } else {
134+ // delete slots outside visible range
135+ const nowDelta = new Date ( ) . getTime ( ) - prev . referenceTs ;
136+
137+ let shouldDeleteSlot = false ;
138+ for (
139+ let slotNumber = slotRange . max ;
140+ slotNumber >= slotRange . min ;
141+ slotNumber --
142+ ) {
143+ const slot = prev . slots [ slotNumber ] ;
144+ if ( ! slot ) continue ;
145+
146+ if (
147+ ! shouldDeleteSlot &&
148+ slot . completionTsDelta != null &&
149+ nowDelta - slot . completionTsDelta > xRangeMs + delayMs
150+ ) {
151+ // once we find a slot that is complete and far enough in the past, delete all slot numbers less it
152+ shouldDeleteSlot = true ;
153+ }
154+
155+ if ( shouldDeleteSlot ) {
156+ delete prev . slots [ slotNumber ] ;
157+ }
158+ }
144159 }
145160
161+ // update range to reflect remaining slots
146162 const remainingSlotNumbers = Object . keys ( prev . slots ) . map (
147163 ( slotNumber ) => parseInt ( slotNumber ) ,
148164 ) ;
149-
150- // update range to reflect remaining slots
151165 set ( _slotRangeAtom , ( prevRange ) => {
152166 if ( ! prevRange || ! remainingSlotNumbers . length ) {
153167 return ;
0 commit comments