From bfa1a32b34e14975e8f9ad43b5c9799fe5ced38a Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 24 Jul 2019 11:55:08 +0200 Subject: [PATCH] Add client hook/register typings --- .github/CONTRIBUTING.md | 7 ++++++- client/src/app/core/plugins/plugin.service.ts | 3 ++- client/src/types/client-script.model.ts | 7 +++++++ client/src/types/register-client-option.model.ts | 9 +++++++++ support/doc/plugins/guide.md | 5 +++++ 5 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 client/src/types/client-script.model.ts create mode 100644 client/src/types/register-client-option.model.ts diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 1672ebfa9..6fc80b6aa 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -7,8 +7,9 @@ Interested in contributing? Awesome! * [Translate](#translate) * [Give your feedback](#give-your-feedback) * [Write documentation](#write-documentation) - * [Develop](#develop) * [Improve the website](#improve-the-website) + * [Develop](#develop) + * [Write a plugin or a theme](#plugins--themes) ## Translate @@ -199,3 +200,7 @@ $ npm run mocha -- --exit --require ts-node/register/type-check --bail server/te Instance configurations are in `config/test-{1,2,3,4,5,6}.yaml`. Note that only instance 2 has transcoding enabled. + +## Plugins & Themes + +See the dedicated documentation: https://docs.joinpeertube.org/#/contribute-plugins diff --git a/client/src/app/core/plugins/plugin.service.ts b/client/src/app/core/plugins/plugin.service.ts index e4a73de81..1294edd7d 100644 --- a/client/src/app/core/plugins/plugin.service.ts +++ b/client/src/app/core/plugins/plugin.service.ts @@ -3,6 +3,7 @@ import { Router } from '@angular/router' import { ServerConfigPlugin } from '@shared/models' import { ServerService } from '@app/core/server/server.service' import { ClientScript } from '@shared/models/plugins/plugin-package-json.model' +import { ClientScript as ClientScriptModule } from '../../../types/client-script.model' import { environment } from '../../../environments/environment' import { ReplaySubject } from 'rxjs' import { first, shareReplay } from 'rxjs/operators' @@ -186,7 +187,7 @@ export class PluginService implements ClientHook { console.log('Loading script %s of plugin %s.', clientScript.script, plugin.name) return import(/* webpackIgnore: true */ clientScript.script) - .then(script => script.register({ registerHook, peertubeHelpers })) + .then((script: ClientScriptModule) => script.register({ registerHook, peertubeHelpers })) .then(() => this.sortHooksByPriority()) } diff --git a/client/src/types/client-script.model.ts b/client/src/types/client-script.model.ts new file mode 100644 index 000000000..6197fcac9 --- /dev/null +++ b/client/src/types/client-script.model.ts @@ -0,0 +1,7 @@ +import { RegisterClientOptions } from './register-client-option.model' + +export interface ClientScript { + register: (options: RegisterClientOptions) => Promise + + unregister: () => Promise +} diff --git a/client/src/types/register-client-option.model.ts b/client/src/types/register-client-option.model.ts new file mode 100644 index 000000000..42d689403 --- /dev/null +++ b/client/src/types/register-client-option.model.ts @@ -0,0 +1,9 @@ +import { RegisterClientHookOptions } from '@shared/models/plugins/register-client-hook.model' + +export type RegisterClientOptions = { + registerHook: (options: RegisterClientHookOptions) => void + + peertubeHelpers: { + getBaseStaticRoute: () => string + } +} diff --git a/support/doc/plugins/guide.md b/support/doc/plugins/guide.md index 0b2d337eb..8f8884d00 100644 --- a/support/doc/plugins/guide.md +++ b/support/doc/plugins/guide.md @@ -262,6 +262,11 @@ Every time you want to publish another version of your plugin/theme, just update and republish it on NPM. Remember that the PeerTube index will take into account your new plugin/theme version after ~24 hours. +## Plugin & Theme hooks/helpers API + +See the dedicated documentation: https://docs.joinpeertube.org/#/api-plugins + + ## Tips ### Compatibility with PeerTube -- 2.41.0