From 799ece6aae8ef55b50b6193de3c4d46e7bb258f5 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 15 Jun 2021 15:18:11 +0200 Subject: Add ability to delete previously added constants --- server/lib/plugins/register-helpers.ts | 28 ++++++++----- .../fixtures/peertube-plugin-test-three/main.js | 44 --------------------- .../peertube-plugin-test-three/package.json | 20 ---------- .../peertube-plugin-test-video-constants/main.js | 46 ++++++++++++++++++++++ .../package.json | 20 ++++++++++ server/tests/plugins/video-constants.ts | 6 ++- 6 files changed, 89 insertions(+), 75 deletions(-) delete mode 100644 server/tests/fixtures/peertube-plugin-test-three/main.js delete mode 100644 server/tests/fixtures/peertube-plugin-test-three/package.json create mode 100644 server/tests/fixtures/peertube-plugin-test-video-constants/main.js create mode 100644 server/tests/fixtures/peertube-plugin-test-video-constants/package.json (limited to 'server') 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-three/main.js deleted file mode 100644 index f2b89bcf0..000000000 --- a/server/tests/fixtures/peertube-plugin-test-three/main.js +++ /dev/null @@ -1,44 +0,0 @@ -async function register ({ - registerHook, - registerSetting, - settingsManager, - storageManager, - videoCategoryManager, - videoLicenceManager, - videoLanguageManager, - videoPrivacyManager, - playlistPrivacyManager -}) { - videoLanguageManager.addLanguage('al_bhed', 'Al Bhed') - videoLanguageManager.addLanguage('al_bhed2', 'Al Bhed 2') - videoLanguageManager.deleteLanguage('en') - videoLanguageManager.deleteLanguage('fr') - - videoCategoryManager.addCategory(42, 'Best category') - videoCategoryManager.addCategory(43, 'High best category') - videoCategoryManager.deleteCategory(1) // Music - videoCategoryManager.deleteCategory(2) // Films - - videoLicenceManager.addLicence(42, 'Best licence') - videoLicenceManager.addLicence(43, 'High best licence') - videoLicenceManager.deleteLicence(1) // Attribution - videoLicenceManager.deleteLicence(7) // Public domain - - videoPrivacyManager.deletePrivacy(2) - playlistPrivacyManager.deletePlaylistPrivacy(3) -} - -async function unregister () { - return -} - -module.exports = { - register, - unregister -} - -// ############################################################################ - -function addToCount (obj) { - return Object.assign({}, obj, { count: obj.count + 1 }) -} diff --git a/server/tests/fixtures/peertube-plugin-test-three/package.json b/server/tests/fixtures/peertube-plugin-test-three/package.json deleted file mode 100644 index 41d4c93fe..000000000 --- a/server/tests/fixtures/peertube-plugin-test-three/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "peertube-plugin-test-three", - "version": "0.0.1", - "description": "Plugin test 3", - "engine": { - "peertube": ">=1.3.0" - }, - "keywords": [ - "peertube", - "plugin" - ], - "homepage": "https://github.com/Chocobozzz/PeerTube", - "author": "Chocobozzz", - "bugs": "https://github.com/Chocobozzz/PeerTube/issues", - "library": "./main.js", - "staticDirs": {}, - "css": [], - "clientScripts": [], - "translations": {} -} diff --git a/server/tests/fixtures/peertube-plugin-test-video-constants/main.js b/server/tests/fixtures/peertube-plugin-test-video-constants/main.js new file mode 100644 index 000000000..3e650e0a1 --- /dev/null +++ b/server/tests/fixtures/peertube-plugin-test-video-constants/main.js @@ -0,0 +1,46 @@ +async function register ({ + registerHook, + registerSetting, + settingsManager, + storageManager, + videoCategoryManager, + videoLicenceManager, + videoLanguageManager, + videoPrivacyManager, + playlistPrivacyManager +}) { + 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') + videoCategoryManager.deleteCategory(1) // Music + videoCategoryManager.deleteCategory(2) // Films + + videoLicenceManager.addLicence(42, 'Best licence') + videoLicenceManager.addLicence(43, 'High best licence') + videoLicenceManager.deleteLicence(1) // Attribution + videoLicenceManager.deleteLicence(7) // Public domain + + videoPrivacyManager.deletePrivacy(2) + playlistPrivacyManager.deletePlaylistPrivacy(3) +} + +async function unregister () { + return +} + +module.exports = { + register, + unregister +} + +// ############################################################################ + +function addToCount (obj) { + return Object.assign({}, obj, { count: obj.count + 1 }) +} diff --git a/server/tests/fixtures/peertube-plugin-test-video-constants/package.json b/server/tests/fixtures/peertube-plugin-test-video-constants/package.json new file mode 100644 index 000000000..0fcf39933 --- /dev/null +++ b/server/tests/fixtures/peertube-plugin-test-video-constants/package.json @@ -0,0 +1,20 @@ +{ + "name": "peertube-plugin-test-video-constants", + "version": "0.0.1", + "description": "Plugin test video constants", + "engine": { + "peertube": ">=1.3.0" + }, + "keywords": [ + "peertube", + "plugin" + ], + "homepage": "https://github.com/Chocobozzz/PeerTube", + "author": "Chocobozzz", + "bugs": "https://github.com/Chocobozzz/PeerTube/issues", + "library": "./main.js", + "staticDirs": {}, + "css": [], + "clientScripts": [], + "translations": {} +} 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 } { -- cgit v1.2.3