diff --git a/webapp/packages/core-blocks/src/useDataResource.ts b/webapp/packages/core-blocks/src/useDataResource.ts index 1e4a8052f8..3a23e64efc 100644 --- a/webapp/packages/core-blocks/src/useDataResource.ts +++ b/webapp/packages/core-blocks/src/useDataResource.ts @@ -20,10 +20,13 @@ interface KeyWithIncludes { includes: TIncludes; } -interface IActions { +interface IActions< + TResource, + TKeyArg extends CachedDataResourceParam, +> { active?: boolean; isActive?: (resource: TResource) => Promise | boolean; - onLoad?: (resource: TResource) => Promise | any; + onLoad?: (resource: TResource, key: TKeyArg | null) => Promise | any; onData?: ( data: CachedResourceData, resource: TResource, @@ -55,7 +58,7 @@ export function useDataResource< keyObj: TResource extends any ? TKeyArg | null | KeyWithIncludes : never, - actions?: IActions + actions?: IActions ): IMapResourceResult; export function useDataResource< @@ -71,7 +74,7 @@ export function useDataResource< keyObj: TResource extends any ? TKeyArg | null | KeyWithIncludes : never, - actions?: IActions + actions?: IActions ): IMapResourceResult { // eslint-disable-next-line react-hooks/rules-of-hooks const resource = ctor instanceof CachedDataResource ? ctor : useService(ctor); @@ -113,7 +116,7 @@ export function useDataResource< this.firstRender = false; this.loading = true; - await actions?.onLoad?.(resource); + await actions?.onLoad?.(resource, key); if (key === null) { return; diff --git a/webapp/packages/core-blocks/src/useMapResource.ts b/webapp/packages/core-blocks/src/useMapResource.ts index 4399f65225..2a3c55b40d 100644 --- a/webapp/packages/core-blocks/src/useMapResource.ts +++ b/webapp/packages/core-blocks/src/useMapResource.ts @@ -24,7 +24,7 @@ interface IActions< > { active?: boolean; isActive?: (resource: TResource) => Promise | boolean; - onLoad?: (resource: TResource) => Promise | boolean | void; + onLoad?: (resource: TResource, key: TKeyArg | null) => Promise | boolean | void; onData?: ( data: CachedMapResourceLoader< TKeyArg, @@ -231,7 +231,7 @@ export function useMapResource< keyRef.loadedKey = key; this.loading = true; - const prevent = await actions?.onLoad?.(resource); + const prevent = await actions?.onLoad?.(resource, key); if (key === null || prevent === true) { setException(null); @@ -273,6 +273,7 @@ export function useMapResource< } }, }), { + preloaded: computed, exception: observable.ref, loading: observable.ref, }, {