@@ -38,7 +38,6 @@ export default class EventIndex extends EventEmitter {
38
38
this . _eventsPerCrawl = 100 ;
39
39
this . _crawler = null ;
40
40
this . _currentCheckpoint = null ;
41
- this . liveEventsForIndex = new Set ( ) ;
42
41
}
43
42
44
43
async init ( ) {
@@ -188,16 +187,11 @@ export default class EventIndex extends EventEmitter {
188
187
return ;
189
188
}
190
189
191
- // If the event is not yet decrypted mark it for the
192
- // Event.decrypted callback.
193
190
if ( ev . isBeingDecrypted ( ) ) {
194
- const eventId = ev . getId ( ) ;
195
- this . liveEventsForIndex . add ( eventId ) ;
196
- } else {
197
- // If the event is decrypted or is unencrypted add it to the
198
- // index now.
199
- await this . addLiveEventToIndex ( ev ) ;
191
+ await ev . _decryptionPromise ;
200
192
}
193
+
194
+ await this . addLiveEventToIndex ( ev ) ;
201
195
}
202
196
203
197
onRoomStateEvent = async ( ev , state ) => {
@@ -219,7 +213,6 @@ export default class EventIndex extends EventEmitter {
219
213
const eventId = ev . getId ( ) ;
220
214
221
215
// If the event isn't in our live event set, ignore it.
222
- if ( ! this . liveEventsForIndex . delete ( eventId ) ) return ;
223
216
if ( err ) return ;
224
217
await this . addLiveEventToIndex ( ev ) ;
225
218
}
@@ -523,18 +516,18 @@ export default class EventIndex extends EventEmitter {
523
516
}
524
517
} ) ;
525
518
526
- const decryptionPromises = [ ] ;
527
-
528
- matrixEvents . forEach ( ev => {
529
- if ( ev . isBeingDecrypted ( ) || ev . isDecryptionFailure ( ) ) {
530
- // TODO the decryption promise is a private property, this
531
- // should either be made public or we should convert the
532
- // event that gets fired when decryption is done into a
533
- // promise using the once event emitter method:
534
- // https://nodejs.org/api/events.html#events_events_once_emitter_name
535
- decryptionPromises . push ( ev . _decryptionPromise ) ;
536
- }
537
- } ) ;
519
+ const decryptionPromises = matrixEvents
520
+ . filter ( event => event . isEncrypted ( ) )
521
+ . map ( event => {
522
+ if ( event . shouldAttemptDecryption ( ) ) {
523
+ return event . attemptDecryption ( client . _crypto , {
524
+ isRetry : true ,
525
+ emit : false ,
526
+ } ) ;
527
+ } else {
528
+ return event . _decryptionPromise ;
529
+ }
530
+ } ) ;
538
531
539
532
// Let us wait for all the events to get decrypted.
540
533
await Promise . all ( decryptionPromises ) ;
0 commit comments