aboutsummaryrefslogtreecommitdiffhomepage
path: root/shared
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2019-07-22 15:40:13 +0200
committerChocobozzz <chocobozzz@cpy.re>2019-07-24 10:58:16 +0200
commit93cae47925e4dd68b7d34a41927b2740b4fab1b4 (patch)
treef649ab49fab1886b434e164591990cc99b234466 /shared
parent587568e1cc0e33c023c1ac62dd28fef313285250 (diff)
downloadPeerTube-93cae47925e4dd68b7d34a41927b2740b4fab1b4.tar.gz
PeerTube-93cae47925e4dd68b7d34a41927b2740b4fab1b4.tar.zst
PeerTube-93cae47925e4dd68b7d34a41927b2740b4fab1b4.zip
Add client hooks
Diffstat (limited to 'shared')
-rw-r--r--shared/core-utils/plugins/hooks.ts2
-rw-r--r--shared/models/plugins/client-hook.model.ts39
-rw-r--r--shared/models/plugins/plugin-client-scope.type.ts1
-rw-r--r--shared/models/plugins/plugin-scope.type.ts1
-rw-r--r--shared/models/plugins/server-hook.model.ts2
-rw-r--r--shared/models/server/server-config.model.ts3
6 files changed, 44 insertions, 4 deletions
diff --git a/shared/core-utils/plugins/hooks.ts b/shared/core-utils/plugins/hooks.ts
index 3d59a7428..5405e0529 100644
--- a/shared/core-utils/plugins/hooks.ts
+++ b/shared/core-utils/plugins/hooks.ts
@@ -29,7 +29,7 @@ async function internalRunHook <T> (handler: Function, hookType: HookType, resul
29 } 29 }
30 30
31 if (hookType === HookType.ACTION) { 31 if (hookType === HookType.ACTION) {
32 if (isCatchable(p)) p.catch(err => onError(err)) 32 if (isCatchable(p)) p.catch((err: any) => onError(err))
33 33
34 return undefined 34 return undefined
35 } 35 }
diff --git a/shared/models/plugins/client-hook.model.ts b/shared/models/plugins/client-hook.model.ts
new file mode 100644
index 000000000..89400003e
--- /dev/null
+++ b/shared/models/plugins/client-hook.model.ts
@@ -0,0 +1,39 @@
1export type ClientFilterHookName =
2 'filter:api.videos.list.trending.params' |
3 'filter:api.videos.list.trending.result' |
4
5 'filter:api.videos.list.local.params' |
6 'filter:api.videos.list.local.result' |
7
8 'filter:api.videos.list.recently-added.params' |
9 'filter:api.videos.list.recently-added.result' |
10
11 'filter:api.videos.list.user-subscriptions.params' |
12 'filter:api.videos.list.user-subscriptions.result' |
13
14 'filter:api.video-watch.video.get.params' |
15 'filter:api.video-watch.video.get.result' |
16
17 'filter:api.video-watch.video-threads.list.params' |
18 'filter:api.video-watch.video-threads.list.result' |
19
20 'filter:api.video-watch.video-thread-replies.list.params' |
21 'filter:api.video-watch.video-thread-replies.list.result' |
22
23 'filter:api.search.videos.list.params' |
24 'filter:api.search.videos.list.result' |
25 'filter:api.search.video-channels.list.params' |
26 'filter:api.search.video-channels.list.result'
27
28export type ClientActionHookName =
29 'action:application.init' |
30
31 'action:video-watch.init' |
32
33 'action:video-watch.video.loaded'
34
35export type ClientHookName = ClientActionHookName | ClientFilterHookName
36
37export interface ClientHook {
38 runHook <T> (hookName: ClientHookName, result?: T, params?: any): Promise<T>
39}
diff --git a/shared/models/plugins/plugin-client-scope.type.ts b/shared/models/plugins/plugin-client-scope.type.ts
new file mode 100644
index 000000000..a2112eed7
--- /dev/null
+++ b/shared/models/plugins/plugin-client-scope.type.ts
@@ -0,0 +1 @@
export type PluginClientScope = 'common' | 'video-watch'
diff --git a/shared/models/plugins/plugin-scope.type.ts b/shared/models/plugins/plugin-scope.type.ts
deleted file mode 100644
index b63ae43ec..000000000
--- a/shared/models/plugins/plugin-scope.type.ts
+++ /dev/null
@@ -1 +0,0 @@
1export type PluginScope = 'common' | 'video-watch'
diff --git a/shared/models/plugins/server-hook.model.ts b/shared/models/plugins/server-hook.model.ts
index a7f88f3c4..6729e2dab 100644
--- a/shared/models/plugins/server-hook.model.ts
+++ b/shared/models/plugins/server-hook.model.ts
@@ -30,5 +30,5 @@ export type ServerActionHookName =
30export type ServerHookName = ServerFilterHookName | ServerActionHookName 30export type ServerHookName = ServerFilterHookName | ServerActionHookName
31 31
32export interface ServerHook { 32export interface ServerHook {
33 runHook (hookName: ServerHookName, params?: any) 33 runHook <T> (hookName: ServerHookName, result?: T, params?: any): Promise<T>
34} 34}
diff --git a/shared/models/server/server-config.model.ts b/shared/models/server/server-config.model.ts
index 3498f86d7..49bb01708 100644
--- a/shared/models/server/server-config.model.ts
+++ b/shared/models/server/server-config.model.ts
@@ -1,11 +1,12 @@
1import { NSFWPolicyType } from '../videos/nsfw-policy.type' 1import { NSFWPolicyType } from '../videos/nsfw-policy.type'
2import { ClientScript } from '../plugins/plugin-package-json.model' 2import { ClientScript } from '../plugins/plugin-package-json.model'
3import { PluginClientScope } from '../plugins/plugin-scope.type'
3 4
4export interface ServerConfigPlugin { 5export interface ServerConfigPlugin {
5 name: string 6 name: string
6 version: string 7 version: string
7 description: string 8 description: string
8 clientScripts: { [name: string]: ClientScript } 9 clientScripts: { [name in PluginClientScope]: ClientScript }
9} 10}
10 11
11export interface ServerConfigTheme extends ServerConfigPlugin { 12export interface ServerConfigTheme extends ServerConfigPlugin {