From ad91e7006e41f8ee5b8dcefee30f99e8ca44133a Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 10 Jul 2019 16:59:53 +0200 Subject: WIP plugins: plugin settings on server side --- shared/models/plugins/install-plugin.model.ts | 3 +++ shared/models/plugins/manage-plugin.model.ts | 3 +++ shared/models/plugins/peertube-plugin.model.ts | 12 ++++++++++++ shared/models/plugins/plugin-library.model.ts | 3 ++- shared/models/plugins/plugin-settings-manager.model.ts | 7 +++++++ shared/models/plugins/register-hook.model.ts | 5 +++++ shared/models/plugins/register-options.model.ts | 11 +++++++++++ shared/models/plugins/register-options.type.ts | 5 ----- shared/models/plugins/register-setting.model.ts | 6 ++++++ shared/models/plugins/register.model.ts | 5 ----- shared/models/users/user-right.enum.ts | 4 +++- 11 files changed, 52 insertions(+), 12 deletions(-) create mode 100644 shared/models/plugins/install-plugin.model.ts create mode 100644 shared/models/plugins/manage-plugin.model.ts create mode 100644 shared/models/plugins/peertube-plugin.model.ts create mode 100644 shared/models/plugins/plugin-settings-manager.model.ts create mode 100644 shared/models/plugins/register-hook.model.ts create mode 100644 shared/models/plugins/register-options.model.ts delete mode 100644 shared/models/plugins/register-options.type.ts create mode 100644 shared/models/plugins/register-setting.model.ts delete mode 100644 shared/models/plugins/register.model.ts (limited to 'shared') diff --git a/shared/models/plugins/install-plugin.model.ts b/shared/models/plugins/install-plugin.model.ts new file mode 100644 index 000000000..03d87fe57 --- /dev/null +++ b/shared/models/plugins/install-plugin.model.ts @@ -0,0 +1,3 @@ +export interface InstallPlugin { + npmName: string +} diff --git a/shared/models/plugins/manage-plugin.model.ts b/shared/models/plugins/manage-plugin.model.ts new file mode 100644 index 000000000..612b3056c --- /dev/null +++ b/shared/models/plugins/manage-plugin.model.ts @@ -0,0 +1,3 @@ +export interface ManagePlugin { + npmName: string +} diff --git a/shared/models/plugins/peertube-plugin.model.ts b/shared/models/plugins/peertube-plugin.model.ts new file mode 100644 index 000000000..2a1dfb3a7 --- /dev/null +++ b/shared/models/plugins/peertube-plugin.model.ts @@ -0,0 +1,12 @@ +export interface PeerTubePlugin { + name: string + type: number + version: string + enabled: boolean + uninstalled: boolean + peertubeEngine: string + description: string + settings: any + createdAt: Date + updatedAt: Date +} diff --git a/shared/models/plugins/plugin-library.model.ts b/shared/models/plugins/plugin-library.model.ts index 8eb18d720..df6499b6b 100644 --- a/shared/models/plugins/plugin-library.model.ts +++ b/shared/models/plugins/plugin-library.model.ts @@ -1,6 +1,7 @@ -import { RegisterOptions } from './register-options.type' +import { RegisterOptions } from './register-options.model' export interface PluginLibrary { register: (options: RegisterOptions) => void + unregister: () => Promise } diff --git a/shared/models/plugins/plugin-settings-manager.model.ts b/shared/models/plugins/plugin-settings-manager.model.ts new file mode 100644 index 000000000..63390a190 --- /dev/null +++ b/shared/models/plugins/plugin-settings-manager.model.ts @@ -0,0 +1,7 @@ +import * as Bluebird from 'bluebird' + +export interface PluginSettingsManager { + getSetting: (name: string) => Bluebird + + setSetting: (name: string, value: string) => Bluebird +} diff --git a/shared/models/plugins/register-hook.model.ts b/shared/models/plugins/register-hook.model.ts new file mode 100644 index 000000000..0ed2157bd --- /dev/null +++ b/shared/models/plugins/register-hook.model.ts @@ -0,0 +1,5 @@ +export interface RegisterHookOptions { + target: string + handler: Function + priority?: number +} diff --git a/shared/models/plugins/register-options.model.ts b/shared/models/plugins/register-options.model.ts new file mode 100644 index 000000000..e60ce3fe0 --- /dev/null +++ b/shared/models/plugins/register-options.model.ts @@ -0,0 +1,11 @@ +import { RegisterHookOptions } from './register-hook.model' +import { RegisterSettingOptions } from './register-setting.model' +import { PluginSettingsManager } from './plugin-settings-manager.model' + +export type RegisterOptions = { + registerHook: (options: RegisterHookOptions) => void + + registerSetting: (options: RegisterSettingOptions) => void + + settingsManager: PluginSettingsManager +} diff --git a/shared/models/plugins/register-options.type.ts b/shared/models/plugins/register-options.type.ts deleted file mode 100644 index a074f3931..000000000 --- a/shared/models/plugins/register-options.type.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { RegisterHookOptions } from './register.model' - -export type RegisterOptions = { - registerHook: (options: RegisterHookOptions) => void -} diff --git a/shared/models/plugins/register-setting.model.ts b/shared/models/plugins/register-setting.model.ts new file mode 100644 index 000000000..e7af75dca --- /dev/null +++ b/shared/models/plugins/register-setting.model.ts @@ -0,0 +1,6 @@ +export interface RegisterSettingOptions { + name: string + label: string + type: 'input' + default?: string +} diff --git a/shared/models/plugins/register.model.ts b/shared/models/plugins/register.model.ts deleted file mode 100644 index 0ed2157bd..000000000 --- a/shared/models/plugins/register.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface RegisterHookOptions { - target: string - handler: Function - priority?: number -} diff --git a/shared/models/users/user-right.enum.ts b/shared/models/users/user-right.enum.ts index 71701bdb4..4a28a229d 100644 --- a/shared/models/users/user-right.enum.ts +++ b/shared/models/users/user-right.enum.ts @@ -31,5 +31,7 @@ export enum UserRight { UPDATE_ANY_VIDEO_PLAYLIST, SEE_ALL_VIDEOS, - CHANGE_VIDEO_OWNERSHIP + CHANGE_VIDEO_OWNERSHIP, + + MANAGE_PLUGINS } -- cgit v1.2.3