From 7cd4d2ba10106c10602c86f74f55743ded588896 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 9 Jul 2019 11:45:19 +0200 Subject: WIP plugins: add theme support --- server/controllers/api/config.ts | 43 +++++++++++++++++++++++++------------- server/controllers/api/users/me.ts | 1 + 2 files changed, 29 insertions(+), 15 deletions(-) (limited to 'server/controllers') diff --git a/server/controllers/api/config.ts b/server/controllers/api/config.ts index 8563b7437..088234074 100644 --- a/server/controllers/api/config.ts +++ b/server/controllers/api/config.ts @@ -1,6 +1,6 @@ import * as express from 'express' import { snakeCase } from 'lodash' -import { ServerConfig, ServerConfigPlugin, UserRight } from '../../../shared' +import { ServerConfig, UserRight } from '../../../shared' import { About } from '../../../shared/models/server/about.model' import { CustomConfig } from '../../../shared/models/server/custom-config.model' import { isSignupAllowed, isSignupAllowedForCurrentIP } from '../../helpers/signup' @@ -16,7 +16,7 @@ import { isNumeric } from 'validator' import { objectConverter } from '../../helpers/core-utils' import { CONFIG, reloadConfig } from '../../initializers/config' import { PluginManager } from '../../lib/plugins/plugin-manager' -import { PluginType } from '../../../shared/models/plugins/plugin.type' +import { getThemeOrDefault } from '../../lib/plugins/theme-utils' const packageJSON = require('../../../../package.json') const configRouter = express.Router() @@ -56,19 +56,23 @@ async function getConfig (req: express.Request, res: express.Response) { .filter(key => CONFIG.TRANSCODING.ENABLED && CONFIG.TRANSCODING.RESOLUTIONS[key] === true) .map(r => parseInt(r, 10)) - const plugins: ServerConfigPlugin[] = [] const registeredPlugins = PluginManager.Instance.getRegisteredPlugins() - for (const pluginName of Object.keys(registeredPlugins)) { - const plugin = registeredPlugins[ pluginName ] - if (plugin.type !== PluginType.PLUGIN) continue - - plugins.push({ - name: plugin.name, - version: plugin.version, - description: plugin.description, - clientScripts: plugin.clientScripts - }) - } + .map(p => ({ + name: p.name, + version: p.version, + description: p.description, + clientScripts: p.clientScripts + })) + + const registeredThemes = PluginManager.Instance.getRegisteredThemes() + .map(t => ({ + name: t.name, + version: t.version, + description: t.description, + clientScripts: t.clientScripts + })) + + const defaultTheme = getThemeOrDefault(CONFIG.THEME.DEFAULT) const json: ServerConfig = { instance: { @@ -82,7 +86,13 @@ async function getConfig (req: express.Request, res: express.Response) { css: CONFIG.INSTANCE.CUSTOMIZATIONS.CSS } }, - plugins, + plugin: { + registered: registeredPlugins + }, + theme: { + registered: registeredThemes, + default: defaultTheme + }, email: { enabled: Emailer.isEnabled() }, @@ -240,6 +250,9 @@ function customConfig (): CustomConfig { javascript: CONFIG.INSTANCE.CUSTOMIZATIONS.JAVASCRIPT } }, + theme: { + default: CONFIG.THEME.DEFAULT + }, services: { twitter: { username: CONFIG.SERVICES.TWITTER.USERNAME, diff --git a/server/controllers/api/users/me.ts b/server/controllers/api/users/me.ts index a078334fe..e7ed3de64 100644 --- a/server/controllers/api/users/me.ts +++ b/server/controllers/api/users/me.ts @@ -183,6 +183,7 @@ async function updateMe (req: express.Request, res: express.Response) { if (body.autoPlayVideo !== undefined) user.autoPlayVideo = body.autoPlayVideo if (body.videosHistoryEnabled !== undefined) user.videosHistoryEnabled = body.videosHistoryEnabled if (body.videoLanguages !== undefined) user.videoLanguages = body.videoLanguages + if (body.theme !== undefined) user.theme = body.theme if (body.email !== undefined) { if (CONFIG.SIGNUP.REQUIRES_EMAIL_VERIFICATION) { -- cgit v1.2.3