ConverseJS upstream update:
* update ConverseJS version * remove concord theme from settings (and migrate to peertube) * added cyberpunk theme * fixed settings localization
This commit is contained in:
@ -3,11 +3,77 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { RegisterServerOptions } from '@peertube/peertube-types'
|
||||
import { pluginShortName } from '../helpers'
|
||||
|
||||
async function migrateSettings (options: RegisterServerOptions): Promise<void> {
|
||||
const logger = options.peertubeHelpers.logger
|
||||
logger.info('Checking if there is a migration script to launch...')
|
||||
// 2022-10-10: as we removed the «chat-type» settings, there is no migration needed for now.
|
||||
// 2024-09-02: concord theme was removed from ConverseJS, must change if used.
|
||||
await _migrateConverseTheme(options)
|
||||
}
|
||||
|
||||
async function _migrateConverseTheme (options: RegisterServerOptions): Promise<void> {
|
||||
const peertubeHelpers = options.peertubeHelpers
|
||||
const logger = peertubeHelpers.logger
|
||||
// NB: we cant use safely settingsManager.getSetting, because settings are not registered yet.
|
||||
logger.info('Checking if we need to migrate converse-theme')
|
||||
if (!/^[-a-z]+$/.test(pluginShortName)) {
|
||||
// to prevent sql injection... be sure there is no special char here.
|
||||
throw new Error(`Wrong pluginShortName '${pluginShortName}'`)
|
||||
}
|
||||
const [results] = await peertubeHelpers.database.query(
|
||||
'SELECT "settings" FROM "plugin"' +
|
||||
' WHERE "plugin"."name" = :pluginShortName',
|
||||
{
|
||||
replacements: {
|
||||
pluginShortName
|
||||
}
|
||||
}
|
||||
)
|
||||
if (!Array.isArray(results)) {
|
||||
throw new Error('_migrateConverseTheme: query result is not an array.')
|
||||
}
|
||||
if (results.length === 0) {
|
||||
logger.error('Plugin not found in database')
|
||||
return
|
||||
}
|
||||
if (results.length > 1) {
|
||||
logger.error('Multiple lines for plugin in database, dont know which one to migrate... Aborting.')
|
||||
return
|
||||
}
|
||||
const settings = results[0].settings
|
||||
if (!settings) {
|
||||
logger.info('Plugin settings are empty in database, no migration needed.')
|
||||
return
|
||||
}
|
||||
if (typeof settings !== 'object') {
|
||||
logger.error('Plugin settings in database seems to be invalid json')
|
||||
return
|
||||
}
|
||||
if (!('converse-theme' in settings)) {
|
||||
logger.debug('The setting converse-theme is not here, no need to migrate.')
|
||||
return
|
||||
}
|
||||
if (settings['converse-theme'] !== 'concord') {
|
||||
logger.debug('The setting converse-theme is not set to concord, no need to migrate.')
|
||||
return
|
||||
}
|
||||
|
||||
logger.info('The setting converse-theme is set to concord, we must replace by peertube..')
|
||||
await peertubeHelpers.database.query(
|
||||
'UPDATE "plugin" ' +
|
||||
' SET "settings" = "settings" || :value ' +
|
||||
' WHERE "name" = :pluginShortName',
|
||||
{
|
||||
replacements: {
|
||||
pluginShortName,
|
||||
value: JSON.stringify({
|
||||
'converse-theme': 'peertube'
|
||||
})
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
export {
|
||||
|
@ -526,9 +526,9 @@ function initThemingSettings ({ registerSetting }: RegisterServerOptions): void
|
||||
default: 'peertube' as ConverseJSTheme,
|
||||
private: false,
|
||||
options: [
|
||||
{ value: 'peertube', label: loc('peertube') },
|
||||
{ value: 'default', label: loc('default') },
|
||||
{ value: 'concord', label: loc('concord') }
|
||||
{ value: 'peertube', label: loc('converse_theme_option_peertube') },
|
||||
{ value: 'default', label: loc('converse_theme_option_default') },
|
||||
{ value: 'cyberpunk', label: loc('converse_theme_option_cyberpunk') }
|
||||
] as Array<{value: ConverseJSTheme, label: string}>,
|
||||
descriptionHTML: loc('converse_theme_description')
|
||||
})
|
||||
|
Reference in New Issue
Block a user