feat(core-blocks): CB-2420 pass key to onLoad fn in use*Resource

This commit is contained in:
Wroud
2022-08-23 14:19:04 +03:00
parent e63e93f0b7
commit f1e37e20ed
2 changed files with 11 additions and 7 deletions
@@ -20,10 +20,13 @@ interface KeyWithIncludes<TKey, TIncludes> {
includes: TIncludes;
}
interface IActions<TResource> {
interface IActions<
TResource,
TKeyArg extends CachedDataResourceParam<TResource>,
> {
active?: boolean;
isActive?: (resource: TResource) => Promise<boolean> | boolean;
onLoad?: (resource: TResource) => Promise<any> | any;
onLoad?: (resource: TResource, key: TKeyArg | null) => Promise<any> | any;
onData?: (
data: CachedResourceData<TResource>,
resource: TResource,
@@ -55,7 +58,7 @@ export function useDataResource<
keyObj: TResource extends any
? TKeyArg | null | KeyWithIncludes<TKeyArg, TIncludes>
: never,
actions?: IActions<TResource>
actions?: IActions<TResource, TKeyArg>
): IMapResourceResult<TResource, TIncludes>;
export function useDataResource<
@@ -71,7 +74,7 @@ export function useDataResource<
keyObj: TResource extends any
? TKeyArg | null | KeyWithIncludes<TKeyArg, TIncludes>
: never,
actions?: IActions<TResource>
actions?: IActions<TResource, TKeyArg>
): IMapResourceResult<TResource, TIncludes> {
// 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;
@@ -24,7 +24,7 @@ interface IActions<
> {
active?: boolean;
isActive?: (resource: TResource) => Promise<boolean> | boolean;
onLoad?: (resource: TResource) => Promise<boolean | void> | boolean | void;
onLoad?: (resource: TResource, key: TKeyArg | null) => Promise<boolean | void> | 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,
}, {