X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Fplugins%2Fplugin-manager.ts;h=1305f660ff3333ff1c0feec816dd8770c51a85c6;hb=e5540d2760f7dba7a2e81c78938558c8991e619d;hp=6c2f4764e4169f28e826ca970e22bdc75c6131a1;hpb=9213df1d79f9dcbf6d51d27434a98375f7b95411;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/plugins/plugin-manager.ts b/server/lib/plugins/plugin-manager.ts index 6c2f4764e..1305f660f 100644 --- a/server/lib/plugins/plugin-manager.ts +++ b/server/lib/plugins/plugin-manager.ts @@ -5,7 +5,13 @@ import { basename, join } from 'path' import { decachePlugin } from '@server/helpers/decache' import { MOAuthTokenUser, MUser } from '@server/types/models' import { getCompleteLocale } from '@shared/core-utils' -import { ClientScript, PluginPackageJson, PluginTranslation, PluginTranslationPaths, RegisterServerHookOptions } from '@shared/models' +import { + ClientScriptJSON, + PluginPackageJSON, + PluginTranslation, + PluginTranslationPathsJSON, + RegisterServerHookOptions +} from '@shared/models' import { getHookType, internalRunHook } from '../../../shared/core-utils/plugins/hooks' import { PluginType } from '../../../shared/models/plugins/plugin.type' import { ServerHook, ServerHookName } from '../../../shared/models/plugins/server/server-hook.model' @@ -31,7 +37,7 @@ export interface RegisteredPlugin { path: string staticDirs: { [name: string]: string } - clientScripts: { [name: string]: ClientScript } + clientScripts: { [name: string]: ClientScriptJSON } css: string[] @@ -271,6 +277,8 @@ export class PluginManager implements ServerHook { logger.info('Regenerating registered plugin CSS to global file.') await this.regeneratePluginGlobalCSS() } + + ClientHtml.invalidCache() } // ###################### Installation ###################### @@ -392,7 +400,7 @@ export class PluginManager implements ServerHook { registerHelpers = result.registerStore } - const clientScripts: { [id: string]: ClientScript } = {} + const clientScripts: { [id: string]: ClientScriptJSON } = {} for (const c of packageJSON.clientScripts) { clientScripts[c.script] = c } @@ -413,9 +421,11 @@ export class PluginManager implements ServerHook { } await this.addTranslations(plugin, npmName, packageJSON.translations) + + ClientHtml.invalidCache() } - private async registerPlugin (plugin: PluginModel, pluginPath: string, packageJSON: PluginPackageJson) { + private async registerPlugin (plugin: PluginModel, pluginPath: string, packageJSON: PluginPackageJSON) { const npmName = PluginModel.buildNpmName(plugin.name, plugin.type) // Delete cache if needed @@ -442,7 +452,7 @@ export class PluginManager implements ServerHook { // ###################### Translations ###################### - private async addTranslations (plugin: PluginModel, npmName: string, translationPaths: PluginTranslationPaths) { + private async addTranslations (plugin: PluginModel, npmName: string, translationPaths: PluginTranslationPathsJSON) { for (const locale of Object.keys(translationPaths)) { const path = translationPaths[locale] const json = await readJSON(join(this.getPluginPath(plugin.name, plugin.type), path)) @@ -467,8 +477,6 @@ export class PluginManager implements ServerHook { // ###################### CSS ###################### private resetCSSGlobalFile () { - ClientHtml.invalidCache() - return outputFile(PLUGIN_GLOBAL_CSS_PATH, '') } @@ -476,8 +484,6 @@ export class PluginManager implements ServerHook { for (const cssPath of cssRelativePaths) { await this.concatFiles(join(pluginPath, cssPath), PLUGIN_GLOBAL_CSS_PATH) } - - ClientHtml.invalidCache() } private concatFiles (input: string, output: string) { @@ -513,7 +519,7 @@ export class PluginManager implements ServerHook { private getPackageJSON (pluginName: string, pluginType: PluginType) { const pluginPath = join(this.getPluginPath(pluginName, pluginType), 'package.json') - return readJSON(pluginPath) as Promise + return readJSON(pluginPath) as Promise } private getPluginPath (pluginName: string, pluginType: PluginType) { @@ -572,7 +578,7 @@ export class PluginManager implements ServerHook { } } - private sanitizeAndCheckPackageJSONOrThrow (packageJSON: PluginPackageJson, pluginType: PluginType) { + private sanitizeAndCheckPackageJSONOrThrow (packageJSON: PluginPackageJSON, pluginType: PluginType) { if (!packageJSON.staticDirs) packageJSON.staticDirs = {} if (!packageJSON.css) packageJSON.css = [] if (!packageJSON.clientScripts) packageJSON.clientScripts = []