mobx-tanstack-query-api 0.1.2 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/package.json +1 -1
- package/runtime/endpoint-infinite-query.d.ts +1 -0
- package/runtime/endpoint-infinite-query.d.ts.map +1 -1
- package/runtime/endpoint-infinite-query.js +10 -9
- package/runtime/endpoint-infinite-query.types.d.ts +2 -2
- package/runtime/endpoint-infinite-query.types.d.ts.map +1 -1
- package/runtime/endpoint-query.d.ts +3 -1
- package/runtime/endpoint-query.d.ts.map +1 -1
- package/runtime/endpoint-query.js +60 -33
package/README.md
CHANGED
package/package.json
CHANGED
|
@@ -9,6 +9,7 @@ export declare class EndpointInfiniteQuery<TEndpoint extends AnyEndpoint, TQuery
|
|
|
9
9
|
response: TEndpoint['__response'] | null;
|
|
10
10
|
params: TEndpoint['__params'] | null;
|
|
11
11
|
private uniqKey?;
|
|
12
|
+
private paramsFn;
|
|
12
13
|
constructor(endpoint: AnyEndpoint, queryClient: EndpointQueryClient, queryOptionsInput: EndpointInfiniteQueryOptions<TEndpoint, TQueryFnData, TError, TPageParam, TData> | (() => EndpointInfiniteQueryFlattenOptions<TEndpoint, TQueryFnData, TError, TPageParam, TData>));
|
|
13
14
|
update({ params, ...options }: EndpointInfiniteQueryUpdateOptionsAllVariants<TEndpoint, TQueryFnData, TError, TPageParam, TData>): void;
|
|
14
15
|
start(params: MaybeFalsy<TEndpoint['__params']>): Promise<QueryObserverResult<TData, TError>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint-infinite-query.d.ts","sourceRoot":"","sources":["../../src/runtime/endpoint-infinite-query.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAS,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EACL,mCAAmC,EACnC,4BAA4B,EAC5B,6CAA6C,EAC9C,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"endpoint-infinite-query.d.ts","sourceRoot":"","sources":["../../src/runtime/endpoint-infinite-query.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAS,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EACL,mCAAmC,EACnC,4BAA4B,EAC5B,6CAA6C,EAC9C,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,qBAAa,qBAAqB,CAChC,SAAS,SAAS,WAAW,EAC7B,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAC9C,MAAM,GAAG,YAAY,EACrB,UAAU,GAAG,OAAO,EACpB,KAAK,GAAG,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,CAC9C,SAAQ,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IAenE,OAAO,CAAC,QAAQ;IAdlB,QAAQ,EAAE,SAAS,CAAC,YAAY,CAAC,GAAG,IAAI,CAAQ;IAChD,MAAM,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,CAAQ;IAE5C,OAAO,CAAC,OAAO,CAAC,CAAuB;IAEvC,OAAO,CAAC,QAAQ,CAMJ;gBAGF,QAAQ,EAAE,WAAW,EAC7B,WAAW,EAAE,mBAAmB,EAEhC,iBAAiB,EACb,4BAA4B,CAC1B,SAAS,EACT,YAAY,EACZ,MAAM,EACN,UAAU,EACV,KAAK,CACN,GACD,CAAC,MAAM,mCAAmC,CACxC,SAAS,EACT,YAAY,EACZ,MAAM,EACN,UAAU,EACV,KAAK,CACN,CAAC;IAoGR,MAAM,CAAC,EACL,MAAM,EACN,GAAG,OAAO,EACX,EAAE,6CAA6C,CAC9C,SAAS,EACT,YAAY,EACZ,MAAM,EACN,UAAU,EACV,KAAK,CACN;IAOK,KAAK,CACT,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,GACxC,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CAK/C"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { makeObservable, observable, runInAction } from 'mobx';
|
|
2
2
|
import { InfiniteQuery } from 'mobx-tanstack-query';
|
|
3
|
-
import { buildOptionsFromParams
|
|
3
|
+
import { buildOptionsFromParams } from './endpoint-query.js';
|
|
4
4
|
export class EndpointInfiniteQuery extends InfiniteQuery {
|
|
5
5
|
endpoint;
|
|
6
6
|
response = null;
|
|
7
7
|
params = null;
|
|
8
8
|
uniqKey;
|
|
9
|
+
paramsFn;
|
|
9
10
|
constructor(endpoint, queryClient, queryOptionsInput) {
|
|
10
|
-
const { uniqKey, transform: transformResponse, ...queryOptions } = typeof queryOptionsInput === 'function'
|
|
11
|
+
const { uniqKey, transform: transformResponse, params: paramsFn, ...queryOptions } = typeof queryOptionsInput === 'function'
|
|
11
12
|
? queryOptionsInput()
|
|
12
13
|
: queryOptionsInput;
|
|
13
14
|
super({
|
|
@@ -18,16 +19,15 @@ export class EndpointInfiniteQuery extends InfiniteQuery {
|
|
|
18
19
|
const extraOptions = {};
|
|
19
20
|
let willEnableManually;
|
|
20
21
|
let params;
|
|
22
|
+
const pageParam = query.options.initialPageParam;
|
|
21
23
|
if (typeof queryOptionsInput === 'function') {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
params = dynamicParams;
|
|
24
|
+
Object.assign(extraOptions, queryOptionsInput());
|
|
25
|
+
params = paramsFn(pageParam);
|
|
25
26
|
willEnableManually = false;
|
|
26
27
|
}
|
|
27
28
|
else {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
params = dynamicParams == null ? {} : dynamicParams();
|
|
29
|
+
willEnableManually = queryOptionsInput.enabled === false;
|
|
30
|
+
params = paramsFn(pageParam);
|
|
31
31
|
}
|
|
32
32
|
const builtOptions = buildOptionsFromParams(endpoint, params, uniqKey);
|
|
33
33
|
// const dynamicOuterOptions = getDynamicOptions?.(query);
|
|
@@ -53,7 +53,7 @@ export class EndpointInfiniteQuery extends InfiniteQuery {
|
|
|
53
53
|
};
|
|
54
54
|
},
|
|
55
55
|
queryFn: async (ctx) => {
|
|
56
|
-
const params =
|
|
56
|
+
const params = paramsFn(ctx.pageParam ?? queryOptions.initialPageParam);
|
|
57
57
|
runInAction(() => {
|
|
58
58
|
this.response = null;
|
|
59
59
|
this.params = params;
|
|
@@ -79,6 +79,7 @@ export class EndpointInfiniteQuery extends InfiniteQuery {
|
|
|
79
79
|
},
|
|
80
80
|
});
|
|
81
81
|
this.endpoint = endpoint;
|
|
82
|
+
this.paramsFn = paramsFn;
|
|
82
83
|
this.uniqKey = uniqKey;
|
|
83
84
|
observable.ref(this, 'response');
|
|
84
85
|
observable.ref(this, 'params');
|
|
@@ -8,7 +8,7 @@ type ShortInfiniteQueryConfig<TQueryFnData, TError = DefaultError, TPageParam =
|
|
|
8
8
|
};
|
|
9
9
|
export type EndpointInfiniteQueryFlattenOptions<TEndpoint extends AnyEndpoint, TQueryFnData = TEndpoint['__response']['data'], TError = DefaultError, TPageParam = unknown, TData = InfiniteData<TQueryFnData, TPageParam>> = ShortInfiniteQueryConfig<NoInfer<TQueryFnData>, TError, TPageParam, TData> & {
|
|
10
10
|
uniqKey?: EndpointQueryUniqKey;
|
|
11
|
-
params
|
|
11
|
+
params: (pageParam: NoInfer<TPageParam>) => MaybeFalsy<TEndpoint['__params']>;
|
|
12
12
|
/**
|
|
13
13
|
* Transform response to QueryFnData
|
|
14
14
|
*/
|
|
@@ -16,7 +16,7 @@ export type EndpointInfiniteQueryFlattenOptions<TEndpoint extends AnyEndpoint, T
|
|
|
16
16
|
};
|
|
17
17
|
export type EndpointInfiniteQueryOptions<TEndpoint extends AnyEndpoint, TQueryFnData = TEndpoint['__response']['data'], TError = DefaultError, TPageParam = unknown, TData = InfiniteData<TQueryFnData, TPageParam>> = ShortInfiniteQueryConfig<NoInfer<TQueryFnData>, TError, TPageParam, TData> & {
|
|
18
18
|
uniqKey?: EndpointQueryUniqKey;
|
|
19
|
-
params
|
|
19
|
+
params: (pageParam: NoInfer<TPageParam>) => MaybeFalsy<TEndpoint['__params']>;
|
|
20
20
|
/**
|
|
21
21
|
* Transform response to QueryFnData
|
|
22
22
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint-infinite-query.types.d.ts","sourceRoot":"","sources":["../../src/runtime/endpoint-infinite-query.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,KAAK,wBAAwB,CAC3B,YAAY,EACZ,MAAM,GAAG,YAAY,EACrB,UAAU,GAAG,OAAO,EACpB,KAAK,GAAG,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,IAC5C,IAAI,CACN,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EACnE,iBAAiB,CAClB,GAAG;IACF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mCAAmC,CAC7C,SAAS,SAAS,WAAW,EAC7B,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAC9C,MAAM,GAAG,YAAY,EACrB,UAAU,GAAG,OAAO,EACpB,KAAK,GAAG,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,IAC5C,wBAAwB,CAC1B,OAAO,CAAC,YAAY,CAAC,EACrB,MAAM,EACN,UAAU,EACV,KAAK,CACN,GAAG;IACF,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAE/B,MAAM,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"endpoint-infinite-query.types.d.ts","sourceRoot":"","sources":["../../src/runtime/endpoint-infinite-query.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,13 +7,15 @@ import { AnyEndpoint } from './endpoint.types.js';
|
|
|
7
7
|
export declare class EndpointQuery<TEndpoint extends AnyEndpoint, TQueryFnData = TEndpoint['__response']['data'], TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData> extends Query<TQueryFnData, TError, TData, TQueryData> {
|
|
8
8
|
private endpoint;
|
|
9
9
|
response: TEndpoint['__response'] | null;
|
|
10
|
-
params: TEndpoint['__params'] | null;
|
|
11
10
|
private uniqKey?;
|
|
11
|
+
private _observableData;
|
|
12
12
|
constructor(endpoint: AnyEndpoint, queryClient: EndpointQueryClient, queryOptionsInput: EndpointQueryOptions<TEndpoint, TQueryFnData, TError, TData, TQueryData> | (() => EndpointQueryFlattenOptions<TEndpoint, TQueryFnData, TError, TData, TQueryData>));
|
|
13
|
+
get params(): MaybeFalsy<TEndpoint["__params"]>;
|
|
13
14
|
update({ params, ...options }: Omit<QueryUpdateOptionsAllVariants<TQueryFnData, TError, TData, TQueryData>, ExcludedQueryKeys> & {
|
|
14
15
|
params?: MaybeFalsy<TEndpoint['__params']>;
|
|
15
16
|
}): void;
|
|
16
17
|
start(params: MaybeFalsy<TEndpoint['__params']>): Promise<QueryObserverResult<TData, TError>>;
|
|
18
|
+
destroy(): void;
|
|
17
19
|
}
|
|
18
20
|
export declare const getParamsFromContext: (ctx: QueryFunctionContext<any, any>) => AnyEndpoint["__params"];
|
|
19
21
|
export declare const buildOptionsFromParams: (endpoint: AnyEndpoint, params: MaybeFalsy<AnyObject>, uniqKey: Maybe<EndpointQueryUniqKey>) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint-query.d.ts","sourceRoot":"","sources":["../../src/runtime/endpoint-query.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"endpoint-query.d.ts","sourceRoot":"","sources":["../../src/runtime/endpoint-query.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAU9B,OAAO,EAAE,KAAK,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAQlD,qBAAa,aAAa,CACxB,SAAS,SAAS,WAAW,EAC7B,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAC9C,MAAM,GAAG,YAAY,EACrB,KAAK,GAAG,YAAY,EACpB,UAAU,GAAG,YAAY,CACzB,SAAQ,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC;IAQpD,OAAO,CAAC,QAAQ;IAPlB,QAAQ,EAAE,SAAS,CAAC,YAAY,CAAC,GAAG,IAAI,CAAQ;IAEhD,OAAO,CAAC,OAAO,CAAC,CAAuB;IAEvC,OAAO,CAAC,eAAe,CAAoC;gBAGjD,QAAQ,EAAE,WAAW,EAC7B,WAAW,EAAE,mBAAmB,EAChC,iBAAiB,EACb,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,GACxE,CAAC,MAAM,2BAA2B,CAChC,SAAS,EACT,YAAY,EACZ,MAAM,EACN,KAAK,EACL,UAAU,CACX,CAAC;IA+HR,IAAI,MAAM,sCAET;IAED,MAAM,CAAC,EACL,MAAM,EACN,GAAG,OAAO,EACX,EAAE,IAAI,CACL,6BAA6B,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,EACtE,iBAAiB,CAClB,GAAG;QACF,MAAM,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;KAC5C;IAUK,KAAK,CACT,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,GACxC,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAS9C,OAAO,IAAI,IAAI;CAOhB;AAED,eAAO,MAAM,oBAAoB,GAAI,KAAK,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,KAChC,WAAW,CAAC,UAAU,CAC7D,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,UAAU,WAAW,EACrB,QAAQ,UAAU,CAAC,SAAS,CAAC,EAC7B,SAAS,KAAK,CAAC,oBAAoB,CAAC,KACnC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,GAAG,EAAE,CAAA;CAerC,CAAC"}
|
|
@@ -1,61 +1,70 @@
|
|
|
1
|
-
import { makeObservable, observable, runInAction } from 'mobx';
|
|
1
|
+
import { action, comparer, computed, makeObservable, observable, reaction, runInAction, } from 'mobx';
|
|
2
2
|
import { Query } from 'mobx-tanstack-query';
|
|
3
|
+
import { callFunction } from 'yummies/common';
|
|
3
4
|
export class EndpointQuery extends Query {
|
|
4
5
|
endpoint;
|
|
5
6
|
response = null;
|
|
6
|
-
params = null;
|
|
7
7
|
uniqKey;
|
|
8
|
+
_observableData;
|
|
8
9
|
constructor(endpoint, queryClient, queryOptionsInput) {
|
|
9
10
|
const { uniqKey, transform: transformResponse, ...queryOptions } = typeof queryOptionsInput === 'function'
|
|
10
11
|
? queryOptionsInput()
|
|
11
12
|
: queryOptionsInput;
|
|
13
|
+
const _observableData = {
|
|
14
|
+
params: null,
|
|
15
|
+
dynamicOptions: undefined,
|
|
16
|
+
};
|
|
17
|
+
makeObservable(_observableData, {
|
|
18
|
+
params: observable.ref,
|
|
19
|
+
dynamicOptions: observable,
|
|
20
|
+
});
|
|
21
|
+
const disposeFn = reaction(() => {
|
|
22
|
+
if (typeof queryOptionsInput === 'function') {
|
|
23
|
+
const { params, abortSignal, select, onDone, onError, onInit, enableOnDemand, ...dynamicOptions } = queryOptionsInput();
|
|
24
|
+
return {
|
|
25
|
+
params,
|
|
26
|
+
dynamicOptions: Object.keys(dynamicOptions).length > 0
|
|
27
|
+
? dynamicOptions
|
|
28
|
+
: undefined,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
return {
|
|
33
|
+
params: callFunction(queryOptionsInput.params),
|
|
34
|
+
dynamicOptions: undefined,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}, action(({ params, dynamicOptions }) => {
|
|
38
|
+
_observableData.params = params;
|
|
39
|
+
_observableData.dynamicOptions = dynamicOptions;
|
|
40
|
+
}), {
|
|
41
|
+
fireImmediately: true,
|
|
42
|
+
});
|
|
12
43
|
super({
|
|
13
44
|
...queryOptions,
|
|
14
45
|
queryClient,
|
|
15
46
|
meta: endpoint.toQueryMeta(queryOptions.meta),
|
|
16
47
|
options: (query) => {
|
|
17
|
-
const
|
|
18
|
-
let willEnableManually;
|
|
19
|
-
let params;
|
|
20
|
-
if (typeof queryOptionsInput === 'function') {
|
|
21
|
-
const { params: dynamicParams, ...dynamicOptions } = queryOptionsInput();
|
|
22
|
-
Object.assign(extraOptions, dynamicOptions);
|
|
23
|
-
params = dynamicParams;
|
|
24
|
-
willEnableManually = false;
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
const { params: dynamicParams, ...otherOptions } = queryOptionsInput;
|
|
28
|
-
willEnableManually = otherOptions.enabled === false;
|
|
29
|
-
params = dynamicParams == null ? {} : dynamicParams();
|
|
30
|
-
}
|
|
31
|
-
const builtOptions = buildOptionsFromParams(endpoint, params, uniqKey);
|
|
48
|
+
const builtOptions = buildOptionsFromParams(endpoint, _observableData.params, uniqKey);
|
|
32
49
|
// const dynamicOuterOptions = getDynamicOptions?.(query);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
// isEnabled = dynamicOuterOptions.enabled;
|
|
37
|
-
// }
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
// const outerDynamicEnabled =
|
|
41
|
-
// dynamicOuterOptions?.enabled == null ||
|
|
42
|
-
// !!dynamicOuterOptions.enabled;
|
|
43
|
-
// isEnabled = builtOptions.enabled && outerDynamicEnabled;
|
|
44
|
-
isEnabled = builtOptions.enabled;
|
|
45
|
-
}
|
|
50
|
+
const isEnabled = typeof queryOptionsInput !== 'function' &&
|
|
51
|
+
queryOptionsInput.enabled !== false &&
|
|
52
|
+
builtOptions.enabled;
|
|
46
53
|
return {
|
|
47
54
|
...query.options,
|
|
48
55
|
...builtOptions,
|
|
49
56
|
// ...dynamicOuterOptions,
|
|
50
57
|
enabled: isEnabled,
|
|
51
|
-
...
|
|
58
|
+
..._observableData.dynamicOptions,
|
|
52
59
|
};
|
|
53
60
|
},
|
|
54
61
|
queryFn: async (ctx) => {
|
|
55
62
|
const params = getParamsFromContext(ctx);
|
|
56
63
|
runInAction(() => {
|
|
57
64
|
this.response = null;
|
|
58
|
-
|
|
65
|
+
if (!comparer.structural(params, _observableData.params)) {
|
|
66
|
+
_observableData.params = params;
|
|
67
|
+
}
|
|
59
68
|
});
|
|
60
69
|
let requestParams = params.request;
|
|
61
70
|
if (requestParams) {
|
|
@@ -80,18 +89,36 @@ export class EndpointQuery extends Query {
|
|
|
80
89
|
this.endpoint = endpoint;
|
|
81
90
|
this.uniqKey = uniqKey;
|
|
82
91
|
observable.ref(this, 'response');
|
|
83
|
-
|
|
92
|
+
computed.struct(this, 'params');
|
|
84
93
|
makeObservable(this);
|
|
94
|
+
this._observableData = _observableData;
|
|
95
|
+
this.abortController.signal.addEventListener('abort', disposeFn);
|
|
96
|
+
}
|
|
97
|
+
get params() {
|
|
98
|
+
return this._observableData.params;
|
|
85
99
|
}
|
|
86
100
|
update({ params, ...options }) {
|
|
101
|
+
runInAction(() => {
|
|
102
|
+
this._observableData.params = params;
|
|
103
|
+
});
|
|
87
104
|
return super.update({
|
|
88
105
|
...buildOptionsFromParams(this.endpoint, params, this.uniqKey),
|
|
89
106
|
...options,
|
|
90
107
|
});
|
|
91
108
|
}
|
|
92
109
|
async start(params) {
|
|
110
|
+
runInAction(() => {
|
|
111
|
+
this._observableData.params = params;
|
|
112
|
+
});
|
|
93
113
|
return await super.start(buildOptionsFromParams(this.endpoint, params, this.uniqKey));
|
|
94
114
|
}
|
|
115
|
+
destroy() {
|
|
116
|
+
super.destroy();
|
|
117
|
+
runInAction(() => {
|
|
118
|
+
this._observableData.params = undefined;
|
|
119
|
+
this._observableData.dynamicOptions = undefined;
|
|
120
|
+
});
|
|
121
|
+
}
|
|
95
122
|
}
|
|
96
123
|
export const getParamsFromContext = (ctx) => {
|
|
97
124
|
return (ctx.queryKey.at(-2) || {});
|