Skip to content

Commit bbf0a18

Browse files
committed
bug #1921 [Live] Fix typing for loading hooks + HookManager (YummYume)
This PR was merged into the 2.x branch. Discussion ---------- [Live] Fix typing for loading hooks + HookManager | Q | A | ------------- | --- | Bug fix? | yes | New feature? | no | Issues | | License | MIT See #1916 (comment) for context Fixes the typo on the loading hooks and add the hook typing to the `HookManager` (was forgotten in my first pr) Commits ------- 9428547 Fix typing for loading hooks + HookManager
2 parents 2ba61b1 + 9428547 commit bbf0a18

File tree

4 files changed

+23
-11
lines changed

4 files changed

+23
-11
lines changed

src/LiveComponent/assets/dist/Component/index.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ export type ComponentHooks = {
1313
'response:error': (backendResponse: BackendResponse, controls: {
1414
displayError: boolean;
1515
}) => MaybePromise;
16-
'loading.state.started': (element: HTMLElement, request: BackendRequest) => MaybePromise;
17-
'loading.state.finished': (element: HTMLElement) => MaybePromise;
16+
'loading.state:started': (element: HTMLElement, request: BackendRequest) => MaybePromise;
17+
'loading.state:finished': (element: HTMLElement) => MaybePromise;
1818
'model:set': (model: string, value: any, component: Component) => MaybePromise;
1919
};
2020
export type ComponentHookName = keyof ComponentHooks;
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1+
import type { ComponentHookName, ComponentHookCallback } from './Component';
12
export default class {
23
private hooks;
3-
register(hookName: string, callback: (...args: any[]) => void): void;
4-
unregister(hookName: string, callback: (...args: any[]) => void): void;
5-
triggerHook(hookName: string, ...args: any[]): void;
4+
register<T extends string | ComponentHookName = ComponentHookName>(hookName: T, callback: ComponentHookCallback<T>): void;
5+
unregister<T extends string | ComponentHookName = ComponentHookName>(hookName: T, callback: ComponentHookCallback<T>): void;
6+
triggerHook<T extends string | ComponentHookName = ComponentHookName>(hookName: T, ...args: Parameters<ComponentHookCallback<T>>): void;
67
}

src/LiveComponent/assets/src/Component/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ export type ComponentHooks = {
2222
'request:started': (requestConfig: any) => MaybePromise,
2323
'render:finished': (component: Component) => MaybePromise,
2424
'response:error': (backendResponse: BackendResponse, controls: { displayError: boolean }) => MaybePromise,
25-
'loading.state.started': (element: HTMLElement, request: BackendRequest) => MaybePromise,
26-
'loading.state.finished': (element: HTMLElement) => MaybePromise,
25+
'loading.state:started': (element: HTMLElement, request: BackendRequest) => MaybePromise,
26+
'loading.state:finished': (element: HTMLElement) => MaybePromise,
2727
'model:set': (model: string, value: any, component: Component) => MaybePromise,
2828
};
2929

src/LiveComponent/assets/src/HookManager.ts

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
1+
import type { ComponentHookName, ComponentHookCallback } from './Component';
2+
13
export default class {
2-
private hooks: Map<string, Array<(...args: any[]) => void>> = new Map();
4+
private hooks: Map<ComponentHookName | string, Array<(...args: any[]) => void>> = new Map();
35

4-
register(hookName: string, callback: (...args: any[]) => void): void {
6+
register<T extends string | ComponentHookName = ComponentHookName>(
7+
hookName: T,
8+
callback: ComponentHookCallback<T>
9+
): void {
510
const hooks = this.hooks.get(hookName) || [];
611
hooks.push(callback);
712
this.hooks.set(hookName, hooks);
813
}
914

10-
unregister(hookName: string, callback: (...args: any[]) => void): void {
15+
unregister<T extends string | ComponentHookName = ComponentHookName>(
16+
hookName: T,
17+
callback: ComponentHookCallback<T>
18+
): void {
1119
const hooks = this.hooks.get(hookName) || [];
1220
const index = hooks.indexOf(callback);
1321
if (index === -1) {
@@ -18,7 +26,10 @@ export default class {
1826
this.hooks.set(hookName, hooks);
1927
}
2028

21-
triggerHook(hookName: string, ...args: any[]): void {
29+
triggerHook<T extends string | ComponentHookName = ComponentHookName>(
30+
hookName: T,
31+
...args: Parameters<ComponentHookCallback<T>>
32+
): void {
2233
const hooks = this.hooks.get(hookName) || [];
2334
hooks.forEach((callback) => callback(...args));
2435
}

0 commit comments

Comments
 (0)