]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/assets/player/peertube-chunk-store.ts
Reset published date on publish
[github/Chocobozzz/PeerTube.git] / client / src / assets / player / peertube-chunk-store.ts
index 005e98a81203b36ea3113013fed54762c02600d0..e14e31c0466c23285eb4f68d64a2b08b5d7e3e5a 100644 (file)
@@ -155,17 +155,17 @@ export class PeertubeChunkStore extends EventEmitter {
         this.cleanerInterval = null
       }
 
+      if (this.db) {
+        await this.db.close()
+
+        await this.dropDatabase(this.databaseName)
+      }
+
       if (this.expirationDB) {
         await this.expirationDB.close()
         this.expirationDB = null
       }
 
-      if (this.db) {
-        console.log('Destroying IndexDB database %s.', this.databaseName)
-        await this.db.close()
-        await this.db.delete()
-      }
-
       return cb()
     } catch (err) {
       console.error('Cannot destroy peertube chunk store.', err)
@@ -181,9 +181,11 @@ export class PeertubeChunkStore extends EventEmitter {
     }, PeertubeChunkStore.CLEANER_INTERVAL_MS)
   }
 
-  private checkExpiration () {
-    this.expirationDB.transaction('rw', this.expirationDB.databases, async () => {
-      try {
+  private async checkExpiration () {
+    let databasesToDeleteInfo: { name: string }[] = []
+
+    try {
+      await this.expirationDB.transaction('rw', this.expirationDB.databases, async () => {
         // Update our database expiration since we are alive
         await this.expirationDB.databases.put({
           name: this.databaseName,
@@ -191,24 +193,30 @@ export class PeertubeChunkStore extends EventEmitter {
         })
 
         const now = new Date().getTime()
-        const databasesToDeleteInfo = await this.expirationDB.databases.where('expiration').below(now).toArray()
-
-        for (const databaseToDeleteInfo of databasesToDeleteInfo) {
-          await this.dropDatabase(databaseToDeleteInfo.name)
+        databasesToDeleteInfo = await this.expirationDB.databases.where('expiration').below(now).toArray()
+      })
+    } catch (err) {
+      console.error('Cannot update expiration of fetch expired databases.', err)
+    }
 
-          await this.expirationDB.databases.where({ name: databaseToDeleteInfo.name }).delete()
-        }
-      } catch (err) {
-        console.error('Cannot check expiration.', err)
-      }
-    })
+    for (const databaseToDeleteInfo of databasesToDeleteInfo) {
+      await this.dropDatabase(databaseToDeleteInfo.name)
+    }
   }
 
-  private dropDatabase (databaseName: string) {
+  private async dropDatabase (databaseName: string) {
     const dbToDelete = new ChunkDatabase(databaseName)
+    console.log('Destroying IndexDB database %s.', databaseName)
+
+    try {
+      await dbToDelete.delete()
 
-    console.log('Deleting %s.', databaseName)
-    return dbToDelete.delete()
+      await this.expirationDB.transaction('rw', this.expirationDB.databases, () => {
+        return this.expirationDB.databases.where({ name: databaseName }).delete()
+      })
+    } catch (err) {
+      console.error('Cannot delete %s.', databaseName, err)
+    }
   }
 
   private nextTick (cb, err, val?) {