From bbb498718a5a6d5116d6a204169daae224b863aa Mon Sep 17 00:00:00 2001
From: cgeek <cem.moreau@gmail.com>
Date: Mon, 22 Aug 2022 13:01:28 +0200
Subject: [PATCH] fix(1434): put back value of `expires_on`, not `expired_on`

---
 .../indexers/LevelMIndexExpiresOnIndexer.ts   | 25 +++++++++++++------
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/app/lib/dal/indexDAL/leveldb/indexers/LevelMIndexExpiresOnIndexer.ts b/app/lib/dal/indexDAL/leveldb/indexers/LevelMIndexExpiresOnIndexer.ts
index 483a85951..a72e77acf 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)
   }
-- 
GitLab