@@ -21,10 +21,23 @@ var UI = (function(UI, $, undefined) {
21
21
return ( Date . now ( ) - parseInt ( tx . attachmentTimestamp ) ) < ( 11 * 60 * 1000 )
22
22
}
23
23
24
+ const TTL = 30 * 60 * 1000
25
+
26
+ function hasTimeToLive ( origin ) {
27
+ if ( ! origin ) {
28
+ return false
29
+ }
30
+ if ( origin . attachmentTimestamp > Date . now ( ) ) {
31
+ return false
32
+ }
33
+ return ( Date . now ( ) - origin . attachmentTimestamp ) < TTL
34
+ }
35
+
24
36
UI . handleHistory = function ( ) {
25
37
var modal ;
26
38
27
39
const bundlesToTailsMap = new Map ( )
40
+ const bundlesToOriginsMap = new Map ( )
28
41
const promotableTailsMap = new Map ( )
29
42
const inconsistentTails = new Set ( )
30
43
@@ -78,7 +91,7 @@ var UI = (function(UI, $, undefined) {
78
91
$modal . find ( ".contents" ) . html ( html ) ;
79
92
$modal . find ( ".hash" ) . html ( "<strong><span data-i18n='hash'>" + UI . t ( "hash" ) + "</span>:</strong> " + UI . formatForClipboard ( hash ) ) ;
80
93
81
- $modal . find ( ".persistence" ) . html ( "<span data-i18n='persistence'>" + UI . t ( "persistence" ) + "</span>: " + ( persistence ? " <span data-i18n='" + status + "'>" + UI . t ( status ) + "</span>" : "<span data-i18n='pending'>" + UI . t ( "pending" ) + "</span>" ) ) . show ( ) ;
94
+ $modal . find ( ".persistence" ) . html ( "<span data-i18n='persistence'>" + UI . t ( "persistence" ) + "</span>: <span data-i18n='" + status + "'>" + UI . t ( status ) + "</span>" ) . show ( ) ;
82
95
$modal . find ( ".btn" ) . data ( "hash" , hash ) ;
83
96
$modal . find ( ".btn" ) . data ( "bundle" , bundleHash )
84
97
@@ -152,8 +165,9 @@ var UI = (function(UI, $, undefined) {
152
165
renderBundleModal ( persistence , false , false , status )
153
166
} else if ( consistentTail &&
154
167
! inconsistentTails . has ( consistentTail . hash ) &&
155
- isAboveMaxDepth ( consistentTail ) ) {
156
- renderBundleModal ( false , true , false )
168
+ isAboveMaxDepth ( consistentTail ) &&
169
+ hasTimeToLive ( bundlesToOriginsMap . get ( bundleHash ) ) ) {
170
+ renderBundleModal ( false , true , false , 'pending' )
157
171
} else {
158
172
promotableTails = promotableTails . filter ( tx => ! inconsistentTails . has ( tx . hash ) && isAboveMaxDepth ( tx ) )
159
173
@@ -162,12 +176,16 @@ var UI = (function(UI, $, undefined) {
162
176
if ( consistentTail ) {
163
177
bundlesToTailsMap . set ( bundleHash , consistentTail )
164
178
165
- renderBundleModal ( persistence , true , false )
179
+ if ( ! bundlesToOriginsMap . has ( bundleHash ) ) {
180
+ bundlesToOriginsMap . set ( consistentTail )
181
+ }
182
+
183
+ renderBundleModal ( false , true , false , 'pending' )
166
184
} else {
167
185
bundlesToTailsMap . delete ( bundleHash )
168
186
promotableTails = [ ]
169
187
170
- renderBundleModal ( persistence , false , true )
188
+ renderBundleModal ( false , false , true , 'pending' )
171
189
}
172
190
} ) . catch ( ( ) => {
173
191
_isRenderingModal = false
@@ -267,7 +285,7 @@ var UI = (function(UI, $, undefined) {
267
285
268
286
return getFirstConsistentTail ( promotableTails , 0 , inconsistentTails )
269
287
. then ( newConsistentTail => {
270
- if ( newConsistentTail ) {
288
+ if ( newConsistentTail && hasTimeToLive ( bundlesToOriginsMap . get ( bundleHash ) ) ) {
271
289
bundlesToTailsMap . set ( bundleHash , newConsistentTail )
272
290
273
291
setTimeout ( ( ) => _promote ( newConsistentTail ) , 0 )
@@ -300,7 +318,7 @@ var UI = (function(UI, $, undefined) {
300
318
301
319
getFirstConsistentTail ( promotableTails , 0 , inconsistentTails )
302
320
. then ( newConsistentTail => {
303
- if ( newConsistentTail ) {
321
+ if ( newConsistentTail && hasTimeToLive ( bundlesToOriginsMap . get ( bundleHash ) ) ) {
304
322
bundlesToTailsMap . set ( bundleHash , newConsistentTail )
305
323
306
324
setTimeout ( ( ) => _promote ( newConsistentTail ) , 0 )
@@ -353,6 +371,7 @@ var UI = (function(UI, $, undefined) {
353
371
354
372
bundlesToTailsMap . set ( bundle [ 0 ] . bundle , bundle [ 0 ] )
355
373
promotableTails . push ( bundle [ 0 ] )
374
+ bundlesToOriginsMap . set ( bundle [ 0 ] . bundle , bundle [ 0 ] )
356
375
}
357
376
358
377
UI . isLocked = false ;
0 commit comments