Add client hook/register typings

This commit is contained in:
Chocobozzz 2019-07-24 11:55:08 +02:00
parent 9ae88819c2
commit bfa1a32b34
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
5 changed files with 29 additions and 2 deletions

View File

@ -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

View File

@ -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())
}

View File

@ -0,0 +1,7 @@
import { RegisterClientOptions } from './register-client-option.model'
export interface ClientScript {
register: (options: RegisterClientOptions) => Promise<any>
unregister: () => Promise<any>
}

View File

@ -0,0 +1,9 @@
import { RegisterClientHookOptions } from '@shared/models/plugins/register-client-hook.model'
export type RegisterClientOptions = {
registerHook: (options: RegisterClientHookOptions) => void
peertubeHelpers: {
getBaseStaticRoute: () => string
}
}

View File

@ -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