From 799ece6aae8ef55b50b6193de3c4d46e7bb258f5 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 15 Jun 2021 15:18:11 +0200 Subject: [PATCH] Add ability to delete previously added constants --- server/lib/plugins/register-helpers.ts | 28 +++++++++++++------ .../main.js | 2 ++ .../package.json | 4 +-- server/tests/plugins/video-constants.ts | 6 ++-- 4 files changed, 27 insertions(+), 13 deletions(-) rename server/tests/fixtures/{peertube-plugin-test-three => peertube-plugin-test-video-constants}/main.js (91%) rename server/tests/fixtures/{peertube-plugin-test-three => peertube-plugin-test-video-constants}/package.json (78%) diff --git a/server/lib/plugins/register-helpers.ts b/server/lib/plugins/register-helpers.ts index f5b573370..09275f9ba 100644 --- a/server/lib/plugins/register-helpers.ts +++ b/server/lib/plugins/register-helpers.ts @@ -37,18 +37,20 @@ type VideoConstant = { [key in number | string]: string } type UpdatedVideoConstant = { [name in AlterableVideoConstant]: { - added: { key: number | string, label: string }[] - deleted: { key: number | string, label: string }[] + [ npmName: string]: { + added: { key: number | string, label: string }[] + deleted: { key: number | string, label: string }[] + } } } export class RegisterHelpers { private readonly updatedVideoConstants: UpdatedVideoConstant = { - playlistPrivacy: { added: [], deleted: [] }, - privacy: { added: [], deleted: [] }, - language: { added: [], deleted: [] }, - licence: { added: [], deleted: [] }, - category: { added: [], deleted: [] } + playlistPrivacy: { }, + privacy: { }, + language: { }, + licence: { }, + category: { } } private readonly transcodingProfiles: { @@ -377,7 +379,7 @@ export class RegisterHelpers { const { npmName, type, obj, key } = parameters if (!obj[key]) { - logger.warn('Cannot delete %s %s by plugin %s: key does not exist.', type, npmName, key) + logger.warn('Cannot delete %s by plugin %s: key %s does not exist.', type, npmName, key) return false } @@ -388,7 +390,15 @@ export class RegisterHelpers { } } - this.updatedVideoConstants[type][npmName].deleted.push({ key, label: obj[key] }) + const updatedConstants = this.updatedVideoConstants[type][npmName] + + const alreadyAdded = updatedConstants.added.find(a => a.key === key) + if (alreadyAdded) { + updatedConstants.added.filter(a => a.key !== key) + } else if (obj[key]) { + updatedConstants.deleted.push({ key, label: obj[key] }) + } + delete obj[key] return true diff --git a/server/tests/fixtures/peertube-plugin-test-three/main.js b/server/tests/fixtures/peertube-plugin-test-video-constants/main.js similarity index 91% rename from server/tests/fixtures/peertube-plugin-test-three/main.js rename to server/tests/fixtures/peertube-plugin-test-video-constants/main.js index f2b89bcf0..3e650e0a1 100644 --- a/server/tests/fixtures/peertube-plugin-test-three/main.js +++ b/server/tests/fixtures/peertube-plugin-test-video-constants/main.js @@ -11,8 +11,10 @@ async function register ({ }) { videoLanguageManager.addLanguage('al_bhed', 'Al Bhed') videoLanguageManager.addLanguage('al_bhed2', 'Al Bhed 2') + videoLanguageManager.addLanguage('al_bhed3', 'Al Bhed 3') videoLanguageManager.deleteLanguage('en') videoLanguageManager.deleteLanguage('fr') + videoLanguageManager.deleteLanguage('al_bhed3') videoCategoryManager.addCategory(42, 'Best category') videoCategoryManager.addCategory(43, 'High best category') diff --git a/server/tests/fixtures/peertube-plugin-test-three/package.json b/server/tests/fixtures/peertube-plugin-test-video-constants/package.json similarity index 78% rename from server/tests/fixtures/peertube-plugin-test-three/package.json rename to server/tests/fixtures/peertube-plugin-test-video-constants/package.json index 41d4c93fe..0fcf39933 100644 --- a/server/tests/fixtures/peertube-plugin-test-three/package.json +++ b/server/tests/fixtures/peertube-plugin-test-video-constants/package.json @@ -1,7 +1,7 @@ { - "name": "peertube-plugin-test-three", + "name": "peertube-plugin-test-video-constants", "version": "0.0.1", - "description": "Plugin test 3", + "description": "Plugin test video constants", "engine": { "peertube": ">=1.3.0" }, diff --git a/server/tests/plugins/video-constants.ts b/server/tests/plugins/video-constants.ts index 5ee41fee1..eb014c596 100644 --- a/server/tests/plugins/video-constants.ts +++ b/server/tests/plugins/video-constants.ts @@ -32,7 +32,7 @@ describe('Test plugin altering video constants', function () { await installPlugin({ url: server.url, accessToken: server.accessToken, - path: getPluginTestPath('-three') + path: getPluginTestPath('-video-constants') }) }) @@ -45,6 +45,7 @@ describe('Test plugin altering video constants', function () { expect(languages['al_bhed']).to.equal('Al Bhed') expect(languages['al_bhed2']).to.equal('Al Bhed 2') + expect(languages['al_bhed3']).to.not.exist }) it('Should have updated categories', async function () { @@ -116,7 +117,7 @@ describe('Test plugin altering video constants', function () { }) it('Should uninstall the plugin and reset languages, categories, licences and privacies', async function () { - await uninstallPlugin({ url: server.url, accessToken: server.accessToken, npmName: 'peertube-plugin-test-three' }) + await uninstallPlugin({ url: server.url, accessToken: server.accessToken, npmName: 'peertube-plugin-test-video-constants' }) { const res = await getVideoLanguages(server.url) @@ -127,6 +128,7 @@ describe('Test plugin altering video constants', function () { expect(languages['al_bhed']).to.not.exist expect(languages['al_bhed2']).to.not.exist + expect(languages['al_bhed3']).to.not.exist } { -- 2.41.0