@ic-reactor/react 3.7.0 → 3.9.0
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 +158 -9
- package/dist/auth/authentication-manager.d.ts +37 -5
- package/dist/auth/authentication-manager.d.ts.map +1 -1
- package/dist/auth/authentication-manager.js +242 -52
- package/dist/auth/authentication-manager.js.map +1 -1
- package/dist/auth/createIdentityAttributeHooks.d.ts +2 -2
- package/dist/auth/createIdentityAttributeHooks.d.ts.map +1 -1
- package/dist/auth/identity-attributes-manager.d.ts +12 -5
- package/dist/auth/identity-attributes-manager.d.ts.map +1 -1
- package/dist/auth/identity-attributes-manager.js +42 -28
- package/dist/auth/identity-attributes-manager.js.map +1 -1
- package/dist/auth/identity-attributes.d.ts +1 -1
- package/dist/auth/identity-attributes.d.ts.map +1 -1
- package/dist/auth/identity-attributes.js +1 -1
- package/dist/auth/identity-attributes.js.map +1 -1
- package/dist/auth/index.d.ts +7 -7
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +7 -7
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/types.d.ts +123 -16
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/createActorHooks.d.ts +4 -4
- package/dist/createActorHooks.d.ts.map +1 -1
- package/dist/createActorHooks.js +6 -6
- package/dist/createActorHooks.js.map +1 -1
- package/dist/createInfiniteQuery.d.ts +12 -10
- package/dist/createInfiniteQuery.d.ts.map +1 -1
- package/dist/createInfiniteQuery.js +20 -17
- package/dist/createInfiniteQuery.js.map +1 -1
- package/dist/createMutation.d.ts +1 -1
- package/dist/createMutation.d.ts.map +1 -1
- package/dist/createMutation.js +22 -2
- package/dist/createMutation.js.map +1 -1
- package/dist/createQuery.d.ts +1 -1
- package/dist/createQuery.d.ts.map +1 -1
- package/dist/createQuery.js +6 -2
- package/dist/createQuery.js.map +1 -1
- package/dist/createSuspenseInfiniteQuery.d.ts +11 -10
- package/dist/createSuspenseInfiniteQuery.d.ts.map +1 -1
- package/dist/createSuspenseInfiniteQuery.js +18 -16
- package/dist/createSuspenseInfiniteQuery.js.map +1 -1
- package/dist/createSuspenseQuery.d.ts +1 -1
- package/dist/createSuspenseQuery.d.ts.map +1 -1
- package/dist/createSuspenseQuery.js +6 -2
- package/dist/createSuspenseQuery.js.map +1 -1
- package/dist/defineReactor.d.ts +54 -4
- package/dist/defineReactor.d.ts.map +1 -1
- package/dist/defineReactor.js +77 -7
- package/dist/defineReactor.js.map +1 -1
- package/dist/hooks/createAuthHooks.d.ts +2 -2
- package/dist/hooks/createAuthHooks.d.ts.map +1 -1
- package/dist/hooks/createAuthHooks.js +7 -2
- package/dist/hooks/createAuthHooks.js.map +1 -1
- package/dist/hooks/useActorInfiniteQuery.d.ts.map +1 -1
- package/dist/hooks/useActorInfiniteQuery.js +16 -2
- package/dist/hooks/useActorInfiniteQuery.js.map +1 -1
- package/dist/hooks/useActorMethod.d.ts.map +1 -1
- package/dist/hooks/useActorMethod.js +66 -33
- package/dist/hooks/useActorMethod.js.map +1 -1
- package/dist/hooks/useActorMutation.d.ts +8 -1
- package/dist/hooks/useActorMutation.d.ts.map +1 -1
- package/dist/hooks/useActorMutation.js +9 -1
- package/dist/hooks/useActorMutation.js.map +1 -1
- package/dist/hooks/useActorSuspenseInfiniteQuery.d.ts.map +1 -1
- package/dist/hooks/useActorSuspenseInfiniteQuery.js +16 -2
- package/dist/hooks/useActorSuspenseInfiniteQuery.js.map +1 -1
- package/dist/index.d.ts +11 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -11
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +8 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +14 -5
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +21 -10
- package/dist/utils.js.map +1 -1
- package/llms.txt +1 -1
- package/package.json +14 -9
- package/src/auth/authentication-manager.ts +267 -64
- package/src/auth/createIdentityAttributeHooks.ts +2 -2
- package/src/auth/identity-attributes-manager.ts +53 -44
- package/src/auth/identity-attributes.ts +2 -2
- package/src/auth/index.ts +7 -7
- package/src/auth/types.ts +134 -18
- package/src/createActorHooks.ts +9 -9
- package/src/createInfiniteQuery.ts +49 -35
- package/src/createMutation.ts +33 -3
- package/src/createQuery.ts +10 -3
- package/src/createSuspenseInfiniteQuery.ts +45 -33
- package/src/createSuspenseQuery.ts +10 -3
- package/src/defineReactor.ts +136 -14
- package/src/hooks/createAuthHooks.ts +8 -3
- package/src/hooks/useActorInfiniteQuery.ts +25 -3
- package/src/hooks/useActorMethod.ts +82 -34
- package/src/hooks/useActorMutation.ts +19 -4
- package/src/hooks/useActorSuspenseInfiniteQuery.ts +25 -3
- package/src/index.ts +11 -11
- package/src/types.ts +8 -2
- package/src/utils.ts +21 -10
- package/src/defineReactor.test.ts +0 -70
- package/src/hooks/useActorInfiniteQuery.test.tsx +0 -457
- package/src/hooks/useActorMethod.test.tsx +0 -798
- package/src/hooks/useActorMutation.test.tsx +0 -220
- package/src/hooks/useActorQuery.test.tsx +0 -287
- package/src/hooks/useActorSuspenseInfiniteQuery.test.tsx +0 -472
- package/src/hooks/useActorSuspenseQuery.test.tsx +0 -254
- package/src/utils.test.ts +0 -14
package/dist/defineReactor.js
CHANGED
|
@@ -33,24 +33,65 @@
|
|
|
33
33
|
* name: "index",
|
|
34
34
|
* idlFactory: indexIdl,
|
|
35
35
|
* clientManager: ledger.clientManager,
|
|
36
|
+
* authentication: ledger.authentication, // one Internet Identity session
|
|
36
37
|
* })
|
|
37
38
|
* ```
|
|
39
|
+
*
|
|
40
|
+
* @example Internet Identity is wired up out of the box
|
|
41
|
+
* ```typescript
|
|
42
|
+
* const { useAuth, useIdentityAttributes } = defineReactor<_SERVICE>({
|
|
43
|
+
* name: "backend",
|
|
44
|
+
* idlFactory,
|
|
45
|
+
* // Needed when the app is served from more than one origin.
|
|
46
|
+
* auth: { derivationOrigin: "https://app.example.com" },
|
|
47
|
+
* })
|
|
48
|
+
*
|
|
49
|
+
* function LoginButton() {
|
|
50
|
+
* const { login, logout, isAuthenticated, principal } = useAuth()
|
|
51
|
+
* return isAuthenticated
|
|
52
|
+
* ? <button onClick={() => logout()}>{principal?.toText()}</button>
|
|
53
|
+
* : <button onClick={() => login()}>Sign in</button>
|
|
54
|
+
* }
|
|
55
|
+
* ```
|
|
38
56
|
*/
|
|
39
57
|
import { ClientManager, Reactor, DisplayReactor } from "@ic-reactor/core";
|
|
40
58
|
import { QueryClient } from "@tanstack/react-query";
|
|
41
|
-
import { createActorHooks } from "./createActorHooks";
|
|
59
|
+
import { createActorHooks } from "./createActorHooks.js";
|
|
60
|
+
import { AuthenticationManager } from "./auth/authentication-manager.js";
|
|
61
|
+
import { IdentityAttributesManager } from "./auth/identity-attributes-manager.js";
|
|
62
|
+
import { createIdentityAttributeHooks } from "./auth/createIdentityAttributeHooks.js";
|
|
63
|
+
import { createAuthHooks } from "./hooks/createAuthHooks.js";
|
|
42
64
|
export function defineReactor(params
|
|
43
65
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
44
66
|
) {
|
|
45
|
-
const { clientManager: providedClientManager, queryClient: providedQueryClient, display, agentOptions, name, idlFactory, canisterId, pollingOptions, } = params;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
67
|
+
const { clientManager: providedClientManager, queryClient: providedQueryClient, authentication: providedAuthentication, auth, display, agentOptions, name, idlFactory, canisterId, pollingOptions, } = params;
|
|
68
|
+
// A shared AuthenticationManager updates the identity on its own
|
|
69
|
+
// ClientManager. Giving this reactor a different one would leave its calls
|
|
70
|
+
// anonymous after sign-in, so adopt the manager's rather than building a new
|
|
71
|
+
// one, and refuse an explicit mismatch instead of splitting them silently.
|
|
72
|
+
if (providedClientManager &&
|
|
73
|
+
providedAuthentication &&
|
|
74
|
+
providedAuthentication.clientManager !== providedClientManager) {
|
|
75
|
+
throw new Error(`[ic-reactor] defineReactor("${name}") received an \`authentication\` manager bound to a different \`clientManager\`. ` +
|
|
76
|
+
`Sign-in would update the authentication manager's agent while this reactor calls through another one, ` +
|
|
77
|
+
`leaving its calls anonymous. Pass \`clientManager: authentication.clientManager\`, or omit \`clientManager\` to adopt it.`);
|
|
78
|
+
}
|
|
79
|
+
// `auth` configures a manager this call would build; an existing one is
|
|
80
|
+
// already constructed, so these options could only be dropped on the floor.
|
|
81
|
+
if (providedAuthentication && auth) {
|
|
82
|
+
throw new Error(`[ic-reactor] defineReactor("${name}") received both \`authentication\` and \`auth\`. ` +
|
|
83
|
+
`The supplied manager is already configured, so \`auth\` (${Object.keys(auth).join(", ")}) would be ignored. ` +
|
|
84
|
+
`Pass those options where that AuthenticationManager is created, or drop \`authentication\` to build one here.`);
|
|
85
|
+
}
|
|
49
86
|
const clientManager = providedClientManager ??
|
|
87
|
+
providedAuthentication?.clientManager ??
|
|
50
88
|
new ClientManager({
|
|
51
|
-
queryClient,
|
|
89
|
+
queryClient: providedQueryClient ?? new QueryClient(),
|
|
52
90
|
agentOptions,
|
|
53
91
|
});
|
|
92
|
+
// Always report the QueryClient actually in use: when a ClientManager is
|
|
93
|
+
// supplied or adopted, its own QueryClient is the one queries run against.
|
|
94
|
+
const queryClient = clientManager.queryClient;
|
|
54
95
|
const reactorConfig = {
|
|
55
96
|
clientManager,
|
|
56
97
|
name,
|
|
@@ -70,6 +111,35 @@ export function defineReactor(params
|
|
|
70
111
|
})
|
|
71
112
|
: new Reactor(reactorConfig);
|
|
72
113
|
const hooks = createActorHooks(reactor);
|
|
73
|
-
|
|
114
|
+
// Auth is built on first use. `AuthenticationManager` dynamically imports the
|
|
115
|
+
// optional `@icp-sdk/auth` peer as soon as it is constructed, and reactors
|
|
116
|
+
// that never touch authentication should not pay for that.
|
|
117
|
+
let authenticationInstance;
|
|
118
|
+
const getAuthentication = () => (authenticationInstance ?? (authenticationInstance = providedAuthentication ??
|
|
119
|
+
new AuthenticationManager({ ...auth, clientManager })));
|
|
120
|
+
let identityAttributesInstance;
|
|
121
|
+
const getIdentityAttributes = () => (identityAttributesInstance ?? (identityAttributesInstance = new IdentityAttributesManager(getAuthentication())));
|
|
122
|
+
let authHooks;
|
|
123
|
+
const getAuthHooks = () => (authHooks ?? (authHooks = createAuthHooks(getAuthentication())));
|
|
124
|
+
let attributeHooks;
|
|
125
|
+
const getAttributeHooks = () => (attributeHooks ?? (attributeHooks = createIdentityAttributeHooks(getIdentityAttributes())));
|
|
126
|
+
return {
|
|
127
|
+
...hooks,
|
|
128
|
+
reactor,
|
|
129
|
+
clientManager,
|
|
130
|
+
queryClient,
|
|
131
|
+
// Stable wrappers: the hook call order inside them never changes, so the
|
|
132
|
+
// rules of hooks still hold.
|
|
133
|
+
useAuth: () => getAuthHooks().useAuth(),
|
|
134
|
+
useAgentState: () => getAuthHooks().useAgentState(),
|
|
135
|
+
useUserPrincipal: () => getAuthHooks().useUserPrincipal(),
|
|
136
|
+
useIdentityAttributes: () => getAttributeHooks().useIdentityAttributes(),
|
|
137
|
+
get authentication() {
|
|
138
|
+
return getAuthentication();
|
|
139
|
+
},
|
|
140
|
+
get identityAttributes() {
|
|
141
|
+
return getIdentityAttributes();
|
|
142
|
+
},
|
|
143
|
+
};
|
|
74
144
|
}
|
|
75
145
|
//# sourceMappingURL=defineReactor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defineReactor.js","sourceRoot":"","sources":["../src/defineReactor.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"defineReactor.js","sourceRoot":"","sources":["../src/defineReactor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AuthenticationManager } from "../auth/authentication-manager";
|
|
2
|
-
import type { AuthenticationSignInOptions } from "../auth/types";
|
|
1
|
+
import type { AuthenticationManager } from "../auth/authentication-manager.js";
|
|
2
|
+
import type { AuthenticationSignInOptions } from "../auth/types.js";
|
|
3
3
|
import type { AgentState } from "@ic-reactor/core";
|
|
4
4
|
import type { Principal } from "@icp-sdk/core/principal";
|
|
5
5
|
import type { Identity } from "@icp-sdk/core/agent";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createAuthHooks.d.ts","sourceRoot":"","sources":["../../src/hooks/createAuthHooks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"createAuthHooks.d.ts","sourceRoot":"","sources":["../../src/hooks/createAuthHooks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AAC9E,OAAO,KAAK,EAAa,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAEnD,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAA;IACjD,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,2BAA2B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/D,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1D,eAAe,EAAE,OAAO,CAAA;IACxB,gBAAgB,EAAE,OAAO,CAAA;IACzB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;IAC3B,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IACzB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAA;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,UAAU,CAAA;IAC/B,gBAAgB,EAAE,MAAM,SAAS,GAAG,IAAI,CAAA;IACxC,OAAO,EAAE,MAAM,aAAa,CAAA;CAC7B;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe,GAC1B,gBAAgB,qBAAqB,KACpC,qBA2GF,CAAA"}
|
|
@@ -52,7 +52,9 @@ export const createAuthHooks = (authentication) => {
|
|
|
52
52
|
const { isAuthenticated, isAuthenticating, identity, error } = useAuthState();
|
|
53
53
|
// Track if we've already initialized to avoid duplicate calls
|
|
54
54
|
const initializedRef = useRef(false);
|
|
55
|
-
// Auto-initialize on first mount to restore previous session
|
|
55
|
+
// Auto-initialize on first mount to restore previous session.
|
|
56
|
+
// `prepareClient` also warms up the AuthClient so a later `login()` can
|
|
57
|
+
// open the identity provider window inside the click handler.
|
|
56
58
|
useEffect(() => {
|
|
57
59
|
if (!initializedRef.current) {
|
|
58
60
|
initializedRef.current = true;
|
|
@@ -60,7 +62,10 @@ export const createAuthHooks = (authentication) => {
|
|
|
60
62
|
.prepareClient()
|
|
61
63
|
.catch(() => undefined)
|
|
62
64
|
.then(() => clientManager.initialize())
|
|
63
|
-
.then(() => authentication.authenticate())
|
|
65
|
+
.then(() => authentication.authenticate())
|
|
66
|
+
// Failures are already reflected in authState/agentState; without
|
|
67
|
+
// this the rejection escapes as an unhandled promise rejection.
|
|
68
|
+
.catch(() => undefined);
|
|
64
69
|
}
|
|
65
70
|
}, []);
|
|
66
71
|
const principal = useMemo(() => (identity ? identity.getPrincipal() : null), [identity]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createAuthHooks.js","sourceRoot":"","sources":["../../src/hooks/createAuthHooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAwBxE;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,cAAqC,EACd,EAAE;IACzB,MAAM,EAAE,aAAa,EAAE,GAAG,cAAc,CAAA;IACxC;;;OAGG;IACH,MAAM,aAAa,GAAG,GAAe,EAAE,CACrC,oBAAoB,CAClB,CAAC,QAAQ,EAAE,EAAE,CAAC,aAAa,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EACzD,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU;IAC9B,kDAAkD;IAClD,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,CAC/B,CAAA;IAEH;;;OAGG;IACH,MAAM,YAAY,GAAG,GAAc,EAAE,CACnC,oBAAoB,CAClB,CAAC,QAAQ,EAAE,EAAE,CAAC,cAAc,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EACzD,GAAG,EAAE,CAAC,cAAc,CAAC,SAAS;IAC9B,kDAAkD;IAClD,GAAG,EAAE,CAAC,cAAc,CAAC,SAAS,CAC/B,CAAA;IAEH;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,OAAO,GAAG,GAAkB,EAAE;QAClC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,cAAc,CAAA;QACtD,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,GAC1D,YAAY,EAAE,CAAA;QAEhB,8DAA8D;QAC9D,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;QAEpC,
|
|
1
|
+
{"version":3,"file":"createAuthHooks.js","sourceRoot":"","sources":["../../src/hooks/createAuthHooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAwBxE;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,cAAqC,EACd,EAAE;IACzB,MAAM,EAAE,aAAa,EAAE,GAAG,cAAc,CAAA;IACxC;;;OAGG;IACH,MAAM,aAAa,GAAG,GAAe,EAAE,CACrC,oBAAoB,CAClB,CAAC,QAAQ,EAAE,EAAE,CAAC,aAAa,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EACzD,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU;IAC9B,kDAAkD;IAClD,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,CAC/B,CAAA;IAEH;;;OAGG;IACH,MAAM,YAAY,GAAG,GAAc,EAAE,CACnC,oBAAoB,CAClB,CAAC,QAAQ,EAAE,EAAE,CAAC,cAAc,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EACzD,GAAG,EAAE,CAAC,cAAc,CAAC,SAAS;IAC9B,kDAAkD;IAClD,GAAG,EAAE,CAAC,cAAc,CAAC,SAAS,CAC/B,CAAA;IAEH;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,OAAO,GAAG,GAAkB,EAAE;QAClC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,cAAc,CAAA;QACtD,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,GAC1D,YAAY,EAAE,CAAA;QAEhB,8DAA8D;QAC9D,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;QAEpC,8DAA8D;QAC9D,wEAAwE;QACxE,8DAA8D;QAC9D,SAAS,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC5B,cAAc,CAAC,OAAO,GAAG,IAAI,CAAA;gBAC7B,cAAc;qBACX,aAAa,EAAE;qBACf,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;qBACtB,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;qBACtC,IAAI,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;oBAC1C,kEAAkE;oBAClE,gEAAgE;qBAC/D,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC,EAAE,EAAE,CAAC,CAAA;QAEN,MAAM,SAAS,GAAG,OAAO,CACvB,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACjD,CAAC,QAAQ,CAAC,CACX,CAAA;QAED,OAAO;YACL,YAAY;YACZ,KAAK;YACL,MAAM;YACN,eAAe;YACf,gBAAgB;YAChB,SAAS;YACT,QAAQ;YACR,KAAK;SACN,CAAA;IACH,CAAC,CAAA;IAED;;;;;;;;;;OAUG;IACH,MAAM,gBAAgB,GAAG,GAAqB,EAAE;QAC9C,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,EAAE,CAAA;QACnC,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IAClD,CAAC,CAAA;IAED,OAAO;QACL,OAAO;QACP,aAAa;QACb,gBAAgB;KACjB,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useActorInfiniteQuery.d.ts","sourceRoot":"","sources":["../../src/hooks/useActorInfiniteQuery.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useActorInfiniteQuery.d.ts","sourceRoot":"","sources":["../../src/hooks/useActorInfiniteQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useMemo, useCallback } from "react";
|
|
2
2
|
import { useInfiniteQuery, } from "@tanstack/react-query";
|
|
3
|
-
import { normalizeQueryData } from "../utils";
|
|
3
|
+
import { mergeFactoryQueryKey, normalizeQueryData } from "../utils.js";
|
|
4
4
|
/**
|
|
5
5
|
* Hook for executing infinite/paginated query calls on a canister.
|
|
6
6
|
*
|
|
@@ -17,7 +17,21 @@ export const useActorInfiniteQuery = ({ reactor, functionName, getArgs, callConf
|
|
|
17
17
|
// Always pass queryKey through generateQueryKey so it is merged with the
|
|
18
18
|
// reactor/function identity. Using the custom key verbatim would cause cache
|
|
19
19
|
// collisions if two different actors or methods share the same key string.
|
|
20
|
-
const baseQueryKey = useMemo(() => reactor.generateQueryKey({
|
|
20
|
+
const baseQueryKey = useMemo(() => reactor.generateQueryKey({
|
|
21
|
+
functionName,
|
|
22
|
+
// Fold the call arguments into the key. They live in the `getArgs`
|
|
23
|
+
// closure rather than in the config, so without this two hooks on the
|
|
24
|
+
// same method with different arguments share one cache entry and
|
|
25
|
+
// serve each other's pages.
|
|
26
|
+
queryKey: mergeFactoryQueryKey(queryKey, undefined, getArgs(options.initialPageParam)),
|
|
27
|
+
}, callConfig), [
|
|
28
|
+
queryKey,
|
|
29
|
+
reactor,
|
|
30
|
+
functionName,
|
|
31
|
+
callConfig,
|
|
32
|
+
getArgs,
|
|
33
|
+
options.initialPageParam,
|
|
34
|
+
]);
|
|
21
35
|
// Memoize queryFn to prevent recreation on every render
|
|
22
36
|
const queryFn = useCallback(async ({ pageParam }) => {
|
|
23
37
|
const args = getArgs(pageParam);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useActorInfiniteQuery.js","sourceRoot":"","sources":["../../src/hooks/useActorInfiniteQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAEL,gBAAgB,GAIjB,MAAM,uBAAuB,CAAA;AAW9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"useActorInfiniteQuery.js","sourceRoot":"","sources":["../../src/hooks/useActorInfiniteQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAEL,gBAAgB,GAIjB,MAAM,uBAAuB,CAAA;AAW9B,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAqEtE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAKnC,EACA,OAAO,EACP,YAAY,EACZ,OAAO,EACP,UAAU,EACV,QAAQ,EACR,GAAG,OAAO,EAMX,EAAuE,EAAE;IACxE,yEAAyE;IACzE,6EAA6E;IAC7E,2EAA2E;IAC3E,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CACH,OAAO,CAAC,gBAAgB,CACtB;QACE,YAAY;QACZ,mEAAmE;QACnE,sEAAsE;QACtE,iEAAiE;QACjE,4BAA4B;QAC5B,QAAQ,EAAE,oBAAoB,CAC5B,QAAQ,EACR,SAAS,EACT,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAClC;KACF,EACD,UAAU,CACX,EACH;QACE,QAAQ;QACR,OAAO;QACP,YAAY;QACZ,UAAU;QACV,OAAO;QACP,OAAO,CAAC,gBAAgB;KACzB,CACF,CAAA;IAED,wDAAwD;IACxD,MAAM,OAAO,GAAG,WAAW,CACzB,KAAK,EAAE,EAAE,SAAS,EAA6B,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;QAC/B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;YACtC,YAAY;YACZ,IAAI;YACJ,UAAU;SACX,CAAC,CAAA;QACF,OAAO,kBAAkB,CACvB,MAAqD,CACtD,CAAA;IACH,CAAC,EACD,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC,CAC7C,CAAA;IAED,OAAO,gBAAgB,CACrB;QACE,QAAQ,EAAE,YAAY;QACtB,OAAO;QACP,GAAG,OAAO;KACJ,EACR,OAAO,CAAC,WAAW,CACmD,CAAA;AAC1E,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useActorMethod.d.ts","sourceRoot":"","sources":["../../src/hooks/useActorMethod.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useActorMethod.d.ts","sourceRoot":"","sources":["../../src/hooks/useActorMethod.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useCallback, useMemo } from "react";
|
|
1
|
+
import { useCallback, useEffect, useMemo, useRef } from "react";
|
|
2
2
|
import { useQuery, useMutation, } from "@tanstack/react-query";
|
|
3
3
|
/**
|
|
4
4
|
* A unified hook for calling canister methods that automatically handles
|
|
@@ -12,38 +12,63 @@ export function useActorMethod({ reactor, functionName, args, callConfig, queryK
|
|
|
12
12
|
return reactor.isQueryMethod(functionName);
|
|
13
13
|
}, [reactor, functionName]);
|
|
14
14
|
const functionType = isQuery ? "query" : "update";
|
|
15
|
-
//
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
15
|
+
// Latest callbacks, read at dispatch time: this keeps a rerendered closure
|
|
16
|
+
// from being ignored, and keeps callback identity out of the effect deps.
|
|
17
|
+
const onSuccessRef = useRef(onSuccess);
|
|
18
|
+
const onErrorRef = useRef(onError);
|
|
19
|
+
onSuccessRef.current = onSuccess;
|
|
20
|
+
onErrorRef.current = onError;
|
|
21
|
+
// Build the key for a given set of call arguments.
|
|
22
|
+
//
|
|
23
|
+
// A custom `queryKey` is appended to the canister/function prefix rather than
|
|
24
|
+
// replacing it, matching `useActorQuery`. Used verbatim it would carry no
|
|
25
|
+
// canister id, so the entry would be invisible to the canister-scoped
|
|
26
|
+
// invalidation `ClientManager.updateAgent` runs on identity change and would
|
|
27
|
+
// keep serving the previous principal's data after sign-in or sign-out.
|
|
28
|
+
const buildQueryKey = useCallback((keyArgs) => reactor.generateQueryKey({ functionName, args: keyArgs, queryKey: customQueryKey }, callConfig), [reactor, functionName, callConfig, customQueryKey]);
|
|
29
|
+
const queryKey = useMemo(() => buildQueryKey(args), [buildQueryKey, args]);
|
|
24
30
|
// ============================================================================
|
|
25
31
|
// Query Implementation
|
|
26
32
|
// ============================================================================
|
|
27
33
|
const queryResult = useQuery({
|
|
28
34
|
queryKey,
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
catch (error) {
|
|
40
|
-
onError?.(error);
|
|
41
|
-
throw error;
|
|
42
|
-
}
|
|
43
|
-
},
|
|
35
|
+
// Callbacks deliberately do NOT live here: a queryFn runs once per fetch
|
|
36
|
+
// attempt, so `onError` fired on every retry (four times with the default
|
|
37
|
+
// QueryClient) and `onSuccess` never fired when data came from the cache
|
|
38
|
+
// or a deduped sibling. They are dispatched from the settled observer
|
|
39
|
+
// result below instead.
|
|
40
|
+
queryFn: () => reactor.callMethod({
|
|
41
|
+
functionName,
|
|
42
|
+
args,
|
|
43
|
+
callConfig,
|
|
44
|
+
}),
|
|
44
45
|
enabled: isQuery && enabled,
|
|
45
46
|
...queryOptions,
|
|
46
47
|
}, reactor.queryClient);
|
|
48
|
+
// Dispatch the query callbacks from the settled observer result, once per
|
|
49
|
+
// distinct outcome. TanStack v5 removed `onSuccess`/`onError` from useQuery
|
|
50
|
+
// for exactly this reason, so the settle timestamps are what identify a new
|
|
51
|
+
// result: they also advance for a cache hit on a fresh mount, which is the
|
|
52
|
+
// case that previously never notified at all.
|
|
53
|
+
const notifiedSuccessAt = useRef(undefined);
|
|
54
|
+
const notifiedErrorAt = useRef(undefined);
|
|
55
|
+
const { status, data, error, dataUpdatedAt, errorUpdatedAt } = queryResult;
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
if (!isQuery)
|
|
58
|
+
return;
|
|
59
|
+
if (status === "success" && dataUpdatedAt !== notifiedSuccessAt.current) {
|
|
60
|
+
notifiedSuccessAt.current = dataUpdatedAt;
|
|
61
|
+
onSuccessRef.current?.(data);
|
|
62
|
+
}
|
|
63
|
+
}, [isQuery, status, data, dataUpdatedAt]);
|
|
64
|
+
useEffect(() => {
|
|
65
|
+
if (!isQuery)
|
|
66
|
+
return;
|
|
67
|
+
if (status === "error" && errorUpdatedAt !== notifiedErrorAt.current) {
|
|
68
|
+
notifiedErrorAt.current = errorUpdatedAt;
|
|
69
|
+
onErrorRef.current?.(error);
|
|
70
|
+
}
|
|
71
|
+
}, [isQuery, status, error, errorUpdatedAt]);
|
|
47
72
|
// ============================================================================
|
|
48
73
|
// Mutation Implementation
|
|
49
74
|
// ============================================================================
|
|
@@ -58,7 +83,7 @@ export function useActorMethod({ reactor, functionName, args, callConfig, queryK
|
|
|
58
83
|
return result;
|
|
59
84
|
},
|
|
60
85
|
onSuccess: (data) => {
|
|
61
|
-
|
|
86
|
+
onSuccessRef.current?.(data);
|
|
62
87
|
// Invalidate specified queries after successful mutation
|
|
63
88
|
if (invalidateQueries && invalidateQueries.length > 0) {
|
|
64
89
|
invalidateQueries.forEach((key) => {
|
|
@@ -67,7 +92,7 @@ export function useActorMethod({ reactor, functionName, args, callConfig, queryK
|
|
|
67
92
|
}
|
|
68
93
|
},
|
|
69
94
|
onError: (error) => {
|
|
70
|
-
|
|
95
|
+
onErrorRef.current?.(error);
|
|
71
96
|
},
|
|
72
97
|
}, reactor.queryClient);
|
|
73
98
|
// ============================================================================
|
|
@@ -77,9 +102,14 @@ export function useActorMethod({ reactor, functionName, args, callConfig, queryK
|
|
|
77
102
|
if (isQuery) {
|
|
78
103
|
// For queries, refetch with new args if provided
|
|
79
104
|
if (callArgs !== undefined) {
|
|
105
|
+
// Key on the args actually being called. Reusing the hook's
|
|
106
|
+
// mount-time key would store this result under the previous args'
|
|
107
|
+
// entry — poisoning it for every other reader — and let fetchQuery
|
|
108
|
+
// dedupe onto an in-flight request for the old args, returning that
|
|
109
|
+
// response as though it answered this one.
|
|
80
110
|
try {
|
|
81
111
|
const result = await reactor.queryClient.fetchQuery({
|
|
82
|
-
queryKey,
|
|
112
|
+
queryKey: buildQueryKey(callArgs),
|
|
83
113
|
queryFn: () => reactor.callMethod({
|
|
84
114
|
functionName,
|
|
85
115
|
args: callArgs,
|
|
@@ -87,11 +117,16 @@ export function useActorMethod({ reactor, functionName, args, callConfig, queryK
|
|
|
87
117
|
}),
|
|
88
118
|
staleTime: 0,
|
|
89
119
|
});
|
|
90
|
-
|
|
120
|
+
// Dispatched here rather than by the observer effect: this result
|
|
121
|
+
// lands under the called args' key, which the mounted observer (bound
|
|
122
|
+
// to the hook's own args) does not watch. That separation is also why
|
|
123
|
+
// this can no longer double-fire the way it did when both wrote to
|
|
124
|
+
// the same key.
|
|
125
|
+
onSuccessRef.current?.(result);
|
|
91
126
|
return result;
|
|
92
127
|
}
|
|
93
128
|
catch (error) {
|
|
94
|
-
|
|
129
|
+
onErrorRef.current?.(error);
|
|
95
130
|
return undefined;
|
|
96
131
|
}
|
|
97
132
|
}
|
|
@@ -110,11 +145,9 @@ export function useActorMethod({ reactor, functionName, args, callConfig, queryK
|
|
|
110
145
|
reactor,
|
|
111
146
|
functionName,
|
|
112
147
|
callConfig,
|
|
113
|
-
|
|
148
|
+
buildQueryKey,
|
|
114
149
|
queryResult,
|
|
115
150
|
mutationResult,
|
|
116
|
-
onSuccess,
|
|
117
|
-
onError,
|
|
118
151
|
]);
|
|
119
152
|
// ============================================================================
|
|
120
153
|
// Reset Function
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useActorMethod.js","sourceRoot":"","sources":["../../src/hooks/useActorMethod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"useActorMethod.js","sourceRoot":"","sources":["../../src/hooks/useActorMethod.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,14 @@ export interface UseActorMutationParameters<Service, Method extends FunctionName
|
|
|
5
5
|
reactor: Reactor<Service, Transform>;
|
|
6
6
|
functionName: Method;
|
|
7
7
|
callConfig?: CallConfig;
|
|
8
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Queries to invalidate upon successful mutation.
|
|
10
|
+
*
|
|
11
|
+
* `undefined` entries are skipped, so the common
|
|
12
|
+
* `[maybeQuery?.getQueryKey()]` idiom is safe when the optional query object
|
|
13
|
+
* is absent.
|
|
14
|
+
*/
|
|
15
|
+
invalidateQueries?: (QueryKey | undefined)[];
|
|
9
16
|
/**
|
|
10
17
|
* Callback for canister-level business logic errors.
|
|
11
18
|
* Called when the canister returns a Result { Err: E } variant.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useActorMutation.d.ts","sourceRoot":"","sources":["../../src/hooks/useActorMutation.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,kBAAkB,EAClB,iBAAiB,EACjB,QAAQ,EACT,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,OAAO,EACP,WAAW,EACX,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAEhB,aAAa,EACb,SAAS,EACT,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,MAAM,WAAW,0BAA0B,CACzC,OAAO,EACP,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,EACpC,SAAS,SAAS,YAAY,GAAG,QAAQ,CACzC,SAAQ,IAAI,CACZ,kBAAkB,CAChB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAC3C,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAC5C,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CACxC,EACD,YAAY,CACb;IACC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IACpC,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"useActorMutation.d.ts","sourceRoot":"","sources":["../../src/hooks/useActorMutation.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,kBAAkB,EAClB,iBAAiB,EACjB,QAAQ,EACT,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,OAAO,EACP,WAAW,EACX,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAEhB,aAAa,EACb,SAAS,EACT,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,MAAM,WAAW,0BAA0B,CACzC,OAAO,EACP,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,EACpC,SAAS,SAAS,YAAY,GAAG,QAAQ,CACzC,SAAQ,IAAI,CACZ,kBAAkB,CAChB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAC3C,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAC5C,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CACxC,EACD,YAAY,CACb;IACC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IACpC,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAA;IAC5C;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAChB,KAAK,EAAE,aAAa,CAClB,uBAAuB,CACrB,SAAS,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAClD,CAAC,SAAS,CAAC,CACb,EACD,SAAS,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,KAC/C,IAAI,CAAA;CACV;AAED,MAAM,MAAM,sBAAsB,CAChC,OAAO,EACP,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,EACpC,SAAS,SAAS,YAAY,GAAG,QAAQ,IACvC,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,CAAA;AAE3E,MAAM,MAAM,sBAAsB,CAChC,OAAO,EACP,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,EACpC,SAAS,SAAS,YAAY,GAAG,QAAQ,IACvC,iBAAiB,CACnB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAC3C,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAC5C,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CACxC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,gBAAgB,GAC3B,OAAO,EACP,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,EACpC,SAAS,SAAS,YAAY,GAAG,QAAQ,EACzC,2GASC,0BAA0B,CAC3B,OAAO,EACP,MAAM,EACN,SAAS,CACV,KAAG,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAkEpD,CAAA"}
|
|
@@ -27,7 +27,15 @@ export const useActorMutation = ({ reactor, functionName, invalidateQueries, onS
|
|
|
27
27
|
const mutationFn = useCallback(async (args) => reactor.callMethod({ functionName, callConfig, args }), [reactor, functionName, callConfig]);
|
|
28
28
|
const handleSuccess = useCallback(async (...params) => {
|
|
29
29
|
if (invalidateQueries) {
|
|
30
|
-
|
|
30
|
+
// Skip undefined entries. React Query reads `{ queryKey: undefined }`
|
|
31
|
+
// as "match everything", so a single undefined — which the natural
|
|
32
|
+
// `invalidateQueries: [maybeQuery?.getQueryKey()]` idiom produces
|
|
33
|
+
// whenever the optional query object is absent — would invalidate every
|
|
34
|
+
// query in the client, including an app's unrelated non-canister ones.
|
|
35
|
+
// `createMutation.invalidateAll` already filters the same way.
|
|
36
|
+
await Promise.all(invalidateQueries
|
|
37
|
+
.filter((queryKey) => queryKey !== undefined)
|
|
38
|
+
.map((queryKey) => reactor.queryClient.invalidateQueries({ queryKey })));
|
|
31
39
|
}
|
|
32
40
|
await onSuccess?.(...params);
|
|
33
41
|
}, [reactor, invalidateQueries, onSuccess]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useActorMutation.js","sourceRoot":"","sources":["../../src/hooks/useActorMutation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EACL,WAAW,GAIZ,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAOL,eAAe,GAKhB,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"useActorMutation.js","sourceRoot":"","sources":["../../src/hooks/useActorMutation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EACL,WAAW,GAIZ,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAOL,eAAe,GAKhB,MAAM,kBAAkB,CAAA;AAyDzB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAI9B,EACA,OAAO,EACP,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,OAAO,EACP,eAAe,EACf,UAAU,EACV,GAAG,OAAO,EAKX,EAAsD,EAAE;IACvD,MAAM,UAAU,GAAG,WAAW,CAC5B,KAAK,EAAE,IAA6C,EAAE,EAAE,CACtD,OAAO,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EACxD,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,CACpC,CAAA;IAED,MAAM,aAAa,GAAG,WAAW,CAC/B,KAAK,EACH,GAAG,MAQF,EACD,EAAE;QACF,IAAI,iBAAiB,EAAE,CAAC;YACtB,sEAAsE;YACtE,mEAAmE;YACnE,kEAAkE;YAClE,wEAAwE;YACxE,uEAAuE;YACvE,+DAA+D;YAC/D,MAAM,OAAO,CAAC,GAAG,CACf,iBAAiB;iBACd,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC;iBAC5C,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAChB,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,CACpD,CACJ,CAAA;QACH,CAAC;QACD,MAAM,SAAS,EAAE,CAAC,GAAG,MAAM,CAAC,CAAA;IAC9B,CAAC,EACD,CAAC,OAAO,EAAE,iBAAiB,EAAE,SAAS,CAAC,CACxC,CAAA;IAED,MAAM,WAAW,GAAG,WAAW,CAC7B,CACE,KAAmD,EACnD,SAAkD,EAClD,OAAgB,EAChB,QAAiB,EACjB,EAAE;QACF,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,eAAe,EAAE,CAAC,KAAY,EAAE,SAAS,CAAC,CAAA;QAC5C,CAAC;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAc,EAAE,QAAe,CAAC,CAAA;IAC9D,CAAC,EACD,CAAC,eAAe,EAAE,OAAO,CAAC,CAC3B,CAAA;IAED,MAAM,eAAe,GAAG,OAAO,CAC7B,GAAG,EAAE,CAAC,CAAC;QACL,GAAG,OAAO;QACV,UAAU;QACV,SAAS,EAAE,aAAa;QACxB,OAAO,EAAE,WAAW;KACrB,CAAC;IACF,uDAAuD;IACvD,CAAC,UAAU,EAAE,aAAa,EAAE,WAAW,CAAC,CACzC,CAAA;IAED,OAAO,WAAW,CAAC,eAAe,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;AAC1D,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useActorSuspenseInfiniteQuery.d.ts","sourceRoot":"","sources":["../../src/hooks/useActorSuspenseInfiniteQuery.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useActorSuspenseInfiniteQuery.d.ts","sourceRoot":"","sources":["../../src/hooks/useActorSuspenseInfiniteQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useMemo, useCallback } from "react";
|
|
2
2
|
import { useSuspenseInfiniteQuery, } from "@tanstack/react-query";
|
|
3
|
-
import { normalizeQueryData } from "../utils";
|
|
3
|
+
import { mergeFactoryQueryKey, normalizeQueryData } from "../utils.js";
|
|
4
4
|
/**
|
|
5
5
|
* Hook for executing suspense-enabled infinite/paginated query calls on a canister.
|
|
6
6
|
*
|
|
@@ -17,7 +17,21 @@ export const useActorSuspenseInfiniteQuery = ({ reactor, functionName, getArgs,
|
|
|
17
17
|
// Always pass queryKey through generateQueryKey so it is merged with the
|
|
18
18
|
// reactor/function identity. Using the custom key verbatim would cause cache
|
|
19
19
|
// collisions if two different actors or methods share the same key string.
|
|
20
|
-
const baseQueryKey = useMemo(() => reactor.generateQueryKey({
|
|
20
|
+
const baseQueryKey = useMemo(() => reactor.generateQueryKey({
|
|
21
|
+
functionName,
|
|
22
|
+
// Fold the call arguments into the key. They live in the `getArgs`
|
|
23
|
+
// closure rather than in the config, so without this two hooks on the
|
|
24
|
+
// same method with different arguments share one cache entry and
|
|
25
|
+
// serve each other's pages.
|
|
26
|
+
queryKey: mergeFactoryQueryKey(queryKey, undefined, getArgs(options.initialPageParam)),
|
|
27
|
+
}, callConfig), [
|
|
28
|
+
queryKey,
|
|
29
|
+
reactor,
|
|
30
|
+
functionName,
|
|
31
|
+
callConfig,
|
|
32
|
+
getArgs,
|
|
33
|
+
options.initialPageParam,
|
|
34
|
+
]);
|
|
21
35
|
// Memoize queryFn to prevent recreation on every render
|
|
22
36
|
const queryFn = useCallback(async ({ pageParam }) => {
|
|
23
37
|
const args = getArgs(pageParam);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useActorSuspenseInfiniteQuery.js","sourceRoot":"","sources":["../../src/hooks/useActorSuspenseInfiniteQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAEL,wBAAwB,GAIzB,MAAM,uBAAuB,CAAA;AAW9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"useActorSuspenseInfiniteQuery.js","sourceRoot":"","sources":["../../src/hooks/useActorSuspenseInfiniteQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAEL,wBAAwB,GAIzB,MAAM,uBAAuB,CAAA;AAW9B,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AA0EtE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAK3C,EACA,OAAO,EACP,YAAY,EACZ,OAAO,EACP,UAAU,EACV,QAAQ,EACR,GAAG,OAAO,EAMX,EAKC,EAAE;IACF,yEAAyE;IACzE,6EAA6E;IAC7E,2EAA2E;IAC3E,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CACH,OAAO,CAAC,gBAAgB,CACtB;QACE,YAAY;QACZ,mEAAmE;QACnE,sEAAsE;QACtE,iEAAiE;QACjE,4BAA4B;QAC5B,QAAQ,EAAE,oBAAoB,CAC5B,QAAQ,EACR,SAAS,EACT,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAClC;KACF,EACD,UAAU,CACX,EACH;QACE,QAAQ;QACR,OAAO;QACP,YAAY;QACZ,UAAU;QACV,OAAO;QACP,OAAO,CAAC,gBAAgB;KACzB,CACF,CAAA;IAED,wDAAwD;IACxD,MAAM,OAAO,GAAG,WAAW,CACzB,KAAK,EAAE,EAAE,SAAS,EAA6B,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;QAC/B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;YACtC,YAAY;YACZ,IAAI;YACJ,UAAU;SACX,CAAC,CAAA;QACF,OAAO,kBAAkB,CACvB,MAAqD,CACtD,CAAA;IACH,CAAC,EACD,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC,CAC7C,CAAA;IAED,OAAO,wBAAwB,CAC7B;QACE,QAAQ,EAAE,YAAY;QACtB,OAAO;QACP,GAAG,OAAO;KACJ,EACR,OAAO,CAAC,WAAW,CAMpB,CAAA;AACH,CAAC,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
export * from "@ic-reactor/core";
|
|
2
|
-
export * from "./hooks";
|
|
3
|
-
export * from "./validation";
|
|
4
|
-
export * from "./createActorHooks";
|
|
5
|
-
export * from "./defineReactor";
|
|
6
|
-
export * from "./createQuery";
|
|
7
|
-
export * from "./createSuspenseQuery";
|
|
8
|
-
export * from "./createInfiniteQuery";
|
|
9
|
-
export * from "./createSuspenseInfiniteQuery";
|
|
10
|
-
export * from "./createMutation";
|
|
11
|
-
export * from "./auth";
|
|
12
|
-
export * from "./types";
|
|
2
|
+
export * from "./hooks/index.js";
|
|
3
|
+
export * from "./validation.js";
|
|
4
|
+
export * from "./createActorHooks.js";
|
|
5
|
+
export * from "./defineReactor.js";
|
|
6
|
+
export * from "./createQuery.js";
|
|
7
|
+
export * from "./createSuspenseQuery.js";
|
|
8
|
+
export * from "./createInfiniteQuery.js";
|
|
9
|
+
export * from "./createSuspenseInfiniteQuery.js";
|
|
10
|
+
export * from "./createMutation.js";
|
|
11
|
+
export * from "./auth/index.js";
|
|
12
|
+
export * from "./types.js";
|
|
13
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,kBAAkB,CAAA;AAGhC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,kBAAkB,CAAA;AAGhC,cAAc,kBAAkB,CAAA;AAGhC,cAAc,iBAAiB,CAAA;AAG/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAElC,cAAc,kBAAkB,CAAA;AAChC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,kCAAkC,CAAA;AAChD,cAAc,qBAAqB,CAAA;AAEnC,cAAc,iBAAiB,CAAA;AAE/B,cAAc,YAAY,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
// Users can import everything from @ic-reactor/react without needing @ic-reactor/core
|
|
3
3
|
export * from "@ic-reactor/core";
|
|
4
4
|
// Re-export hooks
|
|
5
|
-
export * from "./hooks";
|
|
5
|
+
export * from "./hooks/index.js";
|
|
6
6
|
// Validation utilities for React
|
|
7
|
-
export * from "./validation";
|
|
7
|
+
export * from "./validation.js";
|
|
8
8
|
// React-specific exports
|
|
9
|
-
export * from "./createActorHooks";
|
|
10
|
-
export * from "./defineReactor";
|
|
11
|
-
export * from "./createQuery";
|
|
12
|
-
export * from "./createSuspenseQuery";
|
|
13
|
-
export * from "./createInfiniteQuery";
|
|
14
|
-
export * from "./createSuspenseInfiniteQuery";
|
|
15
|
-
export * from "./createMutation";
|
|
16
|
-
export * from "./auth";
|
|
17
|
-
export * from "./types";
|
|
9
|
+
export * from "./createActorHooks.js";
|
|
10
|
+
export * from "./defineReactor.js";
|
|
11
|
+
export * from "./createQuery.js";
|
|
12
|
+
export * from "./createSuspenseQuery.js";
|
|
13
|
+
export * from "./createInfiniteQuery.js";
|
|
14
|
+
export * from "./createSuspenseInfiniteQuery.js";
|
|
15
|
+
export * from "./createMutation.js";
|
|
16
|
+
export * from "./auth/index.js";
|
|
17
|
+
export * from "./types.js";
|
|
18
18
|
//# sourceMappingURL=index.js.map
|