- return PluginModel
- .findAndCountAll(query)
- .then(({ rows, count }) => {
- return { total: count, data: rows }
- })
+ return Promise.all([
+ PluginModel.count(query),
+ PluginModel.findAll<MPlugin>(query)
+ ]).then(([ total, data ]) => ({ total, data }))
+ }
+
+ static listInstalled (): Promise<MPlugin[]> {
+ const query = {
+ where: {
+ uninstalled: false
+ }
+ }
+
+ return PluginModel.findAll(query)
+ }
+
+ static normalizePluginName (npmName: string) {
+ return npmName.replace(/^peertube-((theme)|(plugin))-/, '')
+ }
+
+ static getTypeFromNpmName (npmName: string) {
+ return npmName.startsWith('peertube-plugin-')
+ ? PluginType.PLUGIN
+ : PluginType.THEME
+ }
+
+ static buildNpmName (name: string, type: PluginType) {
+ if (type === PluginType.THEME) return 'peertube-theme-' + name
+
+ return 'peertube-plugin-' + name
+ }
+
+ getPublicSettings (registeredSettings: RegisterServerSettingOptions[]) {
+ const result: SettingEntries = {}
+ const settings = this.settings || {}
+
+ for (const r of registeredSettings) {
+ if (r.private !== false) continue
+
+ result[r.name] = settings[r.name] ?? r.default ?? null
+ }
+
+ return result