diff --git a/app/lib/dal/indexDAL/leveldb/indexers/LevelMIndexExpiresOnIndexer.ts b/app/lib/dal/indexDAL/leveldb/indexers/LevelMIndexExpiresOnIndexer.ts index 483a8595155c0de2aa35fde3288e4e952f4ccd7e..a72e77acf086b0a846719ab468d015922dccecfc 100644 --- a/app/lib/dal/indexDAL/leveldb/indexers/LevelMIndexExpiresOnIndexer.ts +++ b/app/lib/dal/indexDAL/leveldb/indexers/LevelMIndexExpiresOnIndexer.ts @@ -59,13 +59,20 @@ export class LevelMIndexExpiresOnIndexer extends LevelDBDataIndex<Pubkey[], Mind } }) - ) - // Case 2: expiration REVERT - const values: MindexEntry[] = Underscore.values(newStateByPub).map(entries => reduce(entries)) - const byExpiredOn = reduceGroupBy(values, "expired_on") - await Promise.all(Underscore.keys(byExpiredOn) - .map(async expiresOn => this.addAllKeysToExpiresOn(pint(expiresOn), byExpiredOn[expiresOn].map(e => e.pub))) - ) + ); + // Case 2: REVERT expired = put back the value of `expires_on` + const values: MindexEntry[] = Underscore.values( + newStateByPub + ).map((entries) => reduce(entries)); + const byExpiresOnForExpired = reduceGroupBy(values, "expires_on"); + await Promise.all( + Underscore.keys(byExpiresOnForExpired).map(async (expiresOn) => + this.addAllKeysToExpiresOn( + pint(expiresOn), + byExpiresOnForExpired[expiresOn].map((e) => e.pub) + ) + ) + ); } async addAllKeysToExpiresOn(expiresOn: number, pubkeys: Pubkey[]): Promise<void> { @@ -75,7 +82,9 @@ export class LevelMIndexExpiresOnIndexer extends LevelDBDataIndex<Pubkey[], Mind entry = [] } for (const pub of pubkeys) { - entry.push(pub) + if (!entry.includes(pub)) { + entry.push(pub); + } } await this.put(key, entry) }