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: {
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
}
}
}
- 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
}) {
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')
await installPlugin({
url: server.url,
accessToken: server.accessToken,
- path: getPluginTestPath('-three')
+ path: getPluginTestPath('-video-constants')
})
})
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 () {
})
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)
expect(languages['al_bhed']).to.not.exist
expect(languages['al_bhed2']).to.not.exist
+ expect(languages['al_bhed3']).to.not.exist
}
{