]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/commitdiff
fix plugin storage return value when storing a Json array
authorlutangar <johan.dufour@gmail.com>
Wed, 15 Dec 2021 08:35:17 +0000 (09:35 +0100)
committerChocobozzz <chocobozzz@cpy.re>
Thu, 16 Dec 2021 09:17:39 +0000 (10:17 +0100)
server/models/server/plugin.ts
server/tests/fixtures/peertube-plugin-test-six/main.js
server/tests/plugins/plugin-storage.ts

index a8de64dd4854b079d7d41d7d8a18a8807cff1975..c791787821d5fdd3a807366bb89236fccee6fb70 100644 (file)
@@ -197,15 +197,11 @@ export class PluginModel extends Model<Partial<AttributesOnly<PluginModel>>> {
         if (!c) return undefined
         const value = c.value
 
-        if (typeof value === 'string' && value.startsWith('{')) {
-          try {
-            return JSON.parse(value)
-          } catch {
-            return value
-          }
+        try {
+          return JSON.parse(value)
+        } catch {
+          return value
         }
-
-        return c.value
       })
   }
 
index 858bdb2df1ba64189950506e3e8eb3ea3bff4d6b..4a9d56ea798de8927679160f5a376ae88adc83cc 100644 (file)
@@ -11,9 +11,14 @@ async function register ({
   {
     await storageManager.storeData('superkey', { value: 'toto' })
     await storageManager.storeData('anotherkey', { value: 'toto2' })
+    await storageManager.storeData('storedArrayKey', ['toto', 'toto2'])
 
     const result = await storageManager.getData('superkey')
     logger.info('superkey stored value is %s', result.value)
+
+    const storedArrayValue = await storageManager.getData('storedArrayKey')
+    logger.info('storedArrayKey value type is %s', typeof storedArrayValue)
+    logger.info('storedArrayKey stored value is %s', storedArrayValue.join(', '))
   }
 
   {
index e20c36dbacb38f8daca9973f03d56b1f72052e15..ac519045d663a5f1cdd271bfadab06fafab666cc 100644 (file)
@@ -27,10 +27,14 @@ describe('Test plugin storage', function () {
   })
 
   describe('DB storage', function () {
-
     it('Should correctly store a subkey', async function () {
       await server.servers.waitUntilLog('superkey stored value is toto')
     })
+
+    it('Should correctly retrieve an array as array from the storage.', async function () {
+      await server.servers.waitUntilLog('storedArrayKey value type is array')
+      await server.servers.waitUntilLog('storedArrayKey stored value is toto, toto2')
+    })
   })
 
   describe('Disk storage', function () {