1
0
Fork 0
mirror of https://github.com/Chocobozzz/PeerTube.git synced 2025-10-03 17:59:37 +02:00

WIP plugins: add theme support

This commit is contained in:
Chocobozzz 2019-07-09 11:45:19 +02:00 committed by Chocobozzz
parent 8d76959e11
commit 7cd4d2ba10
34 changed files with 311 additions and 38 deletions

View file

@ -11,6 +11,7 @@ import { PLUGIN_GLOBAL_CSS_PATH } from '../../initializers/constants'
import { PluginType } from '../../../shared/models/plugins/plugin.type'
import { installNpmPlugin, installNpmPluginFromDisk, removeNpmPlugin } from './yarn'
import { outputFile } from 'fs-extra'
import { ServerConfigPlugin } from '../../../shared/models/server'
export interface RegisteredPlugin {
name: string
@ -47,7 +48,7 @@ export class PluginManager {
private constructor () {
}
async registerPlugins () {
async registerPluginsAndThemes () {
await this.resetCSSGlobalFile()
const plugins = await PluginModel.listEnabledPluginsAndThemes()
@ -63,12 +64,20 @@ export class PluginManager {
this.sortHooksByPriority()
}
getRegisteredPluginOrTheme (name: string) {
return this.registeredPlugins[name]
}
getRegisteredPlugin (name: string) {
return this.registeredPlugins[ name ]
const registered = this.getRegisteredPluginOrTheme(name)
if (!registered || registered.type !== PluginType.PLUGIN) return undefined
return registered
}
getRegisteredTheme (name: string) {
const registered = this.getRegisteredPlugin(name)
const registered = this.getRegisteredPluginOrTheme(name)
if (!registered || registered.type !== PluginType.THEME) return undefined
@ -76,7 +85,11 @@ export class PluginManager {
}
getRegisteredPlugins () {
return this.registeredPlugins
return this.getRegisteredPluginsOrThemes(PluginType.PLUGIN)
}
getRegisteredThemes () {
return this.getRegisteredPluginsOrThemes(PluginType.THEME)
}
async runHook (hookName: string, param?: any) {
@ -309,6 +322,19 @@ export class PluginManager {
}
}
private getRegisteredPluginsOrThemes (type: PluginType) {
const plugins: RegisteredPlugin[] = []
for (const pluginName of Object.keys(this.registeredPlugins)) {
const plugin = this.registeredPlugins[ pluginName ]
if (plugin.type !== type) continue
plugins.push(plugin)
}
return plugins
}
static get Instance () {
return this.instance || (this.instance = new this())
}