diff --git a/client/src/app/core/plugins/plugin.service.ts b/client/src/app/core/plugins/plugin.service.ts index 6a1a46e73..a3de98390 100644 --- a/client/src/app/core/plugins/plugin.service.ts +++ b/client/src/app/core/plugins/plugin.service.ts @@ -250,6 +250,11 @@ export class PluginService implements ClientHook { return environment.apiUrl + `${pathPrefix}/${plugin.name}/${plugin.version}/static` }, + getBaseRouterRoute: () => { + const pathPrefix = this.getPluginPathPrefix(pluginInfo.isTheme) + return environment.apiUrl + `${pathPrefix}/${plugin.name}/${plugin.version}/router` + }, + getSettings: () => { const path = PluginService.BASE_PLUGIN_API_URL + '/' + npmName + '/public-settings' diff --git a/client/src/standalone/videos/embed.ts b/client/src/standalone/videos/embed.ts index 4ce5c78e8..a367feb8e 100644 --- a/client/src/standalone/videos/embed.ts +++ b/client/src/standalone/videos/embed.ts @@ -781,6 +781,8 @@ export class PeerTubeEmbed { return { getBaseStaticRoute: unimplemented, + getBaseRouterRoute: unimplemented, + getSettings: unimplemented, isLoggedIn: unimplemented, diff --git a/client/src/types/register-client-option.model.ts b/client/src/types/register-client-option.model.ts index 8802edc32..59bcbc5ff 100644 --- a/client/src/types/register-client-option.model.ts +++ b/client/src/types/register-client-option.model.ts @@ -19,6 +19,8 @@ export type RegisterClientOptions = { export type RegisterClientHelpers = { getBaseStaticRoute: () => string + getBaseRouterRoute: () => string + isLoggedIn: () => boolean getAuthHeader: () => { 'Authorization': string } | undefined diff --git a/support/doc/plugins/guide.md b/support/doc/plugins/guide.md index d3b9db0ed..db1f1863c 100644 --- a/support/doc/plugins/guide.md +++ b/support/doc/plugins/guide.md @@ -21,6 +21,7 @@ - [Notifier](#notifier) - [Markdown Renderer](#markdown-renderer) - [Auth header](#auth-header) + - [Plugin router route](#plugin-router-route) - [Custom Modal](#custom-modal) - [Translate](#translate) - [Get public settings](#get-public-settings) @@ -561,6 +562,27 @@ function register (...) { } ``` +#### Plugin router route + +**PeerTube >= 3.3** + +To get your plugin router route, you can use `peertubeHelpers.getBaseRouterRoute()`: + +```js +function register (...) { + registerHook({ + target: 'action:video-watch.video.loaded', + handler: ({ video }) => { + fetch(peertubeHelpers.getBaseRouterRoute() + '/my/plugin/api', { + method: 'GET', + headers: peertubeHelpers.getAuthHeader() + }).then(res => res.json()) + .then(data => console.log('Hi %s.', data)) + } + }) +} +``` + #### Custom Modal To show a custom modal: