@ic-reactor/react 1.7.9 → 1.8.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/dist/context/actor/create.js +13 -8
- package/dist/context/actor/hooks/useInitializeActor.d.ts +6 -0
- package/dist/context/actor/hooks/useInitializeActor.js +10 -0
- package/dist/context/actor/index.d.ts +1 -0
- package/dist/context/actor/index.js +1 -0
- package/dist/context/actor/types.d.ts +7 -1
- package/dist/context/adapter/create.js +63 -3
- package/dist/context/adapter/hooks/useCandidEvaluation.d.ts +5 -0
- package/dist/context/adapter/hooks/useCandidEvaluation.js +9 -0
- package/dist/context/adapter/index.d.ts +3 -2
- package/dist/context/adapter/index.js +3 -2
- package/dist/context/adapter/types.d.ts +10 -2
- package/dist/context/agent/create.js +1 -1
- package/dist/context/agent/index.d.ts +2 -2
- package/dist/context/agent/index.js +2 -2
- package/dist/context/agent/types.d.ts +1 -0
- package/dist/helpers/actorHooks.d.ts +1 -1
- package/dist/helpers/actorHooks.js +6 -3
- package/dist/helpers/extractActorContext.d.ts +3 -3
- package/dist/helpers/extractActorContext.js +2 -0
- package/dist/helpers/extractAgentContext.d.ts +1 -1
- package/dist/hooks/types.d.ts +2 -1
- package/dist/hooks/useActor.js +11 -9
- package/package.json +3 -3
|
@@ -82,19 +82,24 @@ function createActorContext(contextConfig = {}) {
|
|
|
82
82
|
const { canisterId: defaultCanisterId } = contextConfig, defaultConfig = __rest(contextConfig, ["canisterId"]);
|
|
83
83
|
const ActorContext = react_1.default.createContext(null);
|
|
84
84
|
const ActorProvider = (_a) => {
|
|
85
|
-
var { children, canisterId = defaultCanisterId, loadingComponent = react_1.default.createElement("div", null, "Fetching canister..."), authenticatingComponent = react_1.default.createElement("div", null, "Authenticating...") } = _a, restConfig = __rest(_a, ["children", "canisterId", "loadingComponent", "authenticatingComponent"]);
|
|
85
|
+
var { children, fetchingComponent, canisterId = defaultCanisterId, errorComponent = (error) => react_1.default.createElement("div", null, error), loadingComponent = react_1.default.createElement("div", null, "Fetching canister..."), authenticatingComponent = react_1.default.createElement("div", null, "Authenticating...") } = _a, restConfig = __rest(_a, ["children", "fetchingComponent", "canisterId", "errorComponent", "loadingComponent", "authenticatingComponent"]);
|
|
86
86
|
if (!canisterId) {
|
|
87
87
|
throw new Error("canisterId is required");
|
|
88
88
|
}
|
|
89
89
|
const config = react_1.default.useMemo(() => (Object.assign(Object.assign({}, defaultConfig), restConfig)), [defaultConfig, restConfig]);
|
|
90
|
-
const { fetchError, authenticating, hooks } = (0, useActor_1.useActor)(Object.assign({ canisterId }, config));
|
|
91
|
-
|
|
92
|
-
|
|
90
|
+
const { fetchError, authenticating, initializeActor, hooks } = (0, useActor_1.useActor)(Object.assign({ canisterId }, config));
|
|
91
|
+
const useInitializeActor = react_1.default.useCallback(() => {
|
|
92
|
+
return initializeActor;
|
|
93
|
+
}, [initializeActor]);
|
|
94
|
+
return (react_1.default.createElement(ActorContext.Provider, { value: Object.assign(Object.assign({}, hooks), { useInitializeActor }) },
|
|
95
|
+
fetchingComponent,
|
|
96
|
+
hooks === null
|
|
93
97
|
? fetchError
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
+
? errorComponent(fetchError)
|
|
99
|
+
: authenticating
|
|
100
|
+
? authenticatingComponent
|
|
101
|
+
: loadingComponent
|
|
102
|
+
: children));
|
|
98
103
|
};
|
|
99
104
|
ActorProvider.displayName = "ActorProvider";
|
|
100
105
|
const ActorHookProvider = ({ hooks, children, }) => {
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Initializes an actor with the provided IDL factory and optional actor configuration.
|
|
3
|
+
* This hook is used when the actor is not initialized by the `ActorProvider` component,
|
|
4
|
+
* or when the actor needs to be initialized in a specific way.
|
|
5
|
+
*/
|
|
6
|
+
export declare const useInitializeActor: () => import("../../../types").InitializeActor;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useInitializeActor = void 0;
|
|
4
|
+
const __1 = require("..");
|
|
5
|
+
/**
|
|
6
|
+
* Initializes an actor with the provided IDL factory and optional actor configuration.
|
|
7
|
+
* This hook is used when the actor is not initialized by the `ActorProvider` component,
|
|
8
|
+
* or when the actor needs to be initialized in a specific way.
|
|
9
|
+
*/
|
|
10
|
+
exports.useInitializeActor = __1.ActorHooks.useInitializeActor;
|
|
@@ -29,4 +29,5 @@ __exportStar(require("./hooks/useActorState"), exports);
|
|
|
29
29
|
__exportStar(require("./hooks/useVisitMethod"), exports);
|
|
30
30
|
__exportStar(require("./hooks/useVisitService"), exports);
|
|
31
31
|
__exportStar(require("./hooks/useActorInterface"), exports);
|
|
32
|
+
__exportStar(require("./hooks/useInitializeActor"), exports);
|
|
32
33
|
__exportStar(require("./hooks/useMethod"), exports);
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import type { IDL, ActorHooksReturnType, BaseActor, ActorManagerParameters, CanisterId } from "../../types";
|
|
2
|
+
import type { IDL, ActorHooksReturnType, BaseActor, ActorManagerParameters, CanisterId, InitializeActor } from "../../types";
|
|
3
|
+
export interface CreateActorContextType<A = BaseActor> extends ActorHooksReturnType<A> {
|
|
4
|
+
useInitializeActor?: () => InitializeActor;
|
|
5
|
+
}
|
|
3
6
|
export interface CreateActorContextReturnType<A = BaseActor> extends ActorHooksReturnType<A> {
|
|
4
7
|
ActorProvider: React.FC<ActorProviderProps>;
|
|
5
8
|
ActorHookProvider: React.FC<ActorHookProviderProps<A>>;
|
|
9
|
+
useInitializeActor: () => InitializeActor;
|
|
6
10
|
}
|
|
7
11
|
export interface ActorHookProviderProps<A> {
|
|
8
12
|
hooks: ActorHooksReturnType<A>;
|
|
@@ -11,6 +15,8 @@ export interface ActorHookProviderProps<A> {
|
|
|
11
15
|
export interface ActorProviderProps extends CreateActorContextParameters {
|
|
12
16
|
children?: React.ReactNode | undefined;
|
|
13
17
|
candidString?: string;
|
|
18
|
+
fetchingComponent?: React.ReactNode;
|
|
19
|
+
errorComponent?: (error: string) => React.ReactNode;
|
|
14
20
|
loadingComponent?: React.ReactNode;
|
|
15
21
|
authenticatingComponent?: React.ReactNode;
|
|
16
22
|
}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
12
|
var t = {};
|
|
4
13
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
@@ -22,8 +31,57 @@ function createAdapterContext(config = {}) {
|
|
|
22
31
|
const { withParser: _withParser, didjsCanisterId: _didjsCanisterId } = config, defaultConfig = __rest(config, ["withParser", "didjsCanisterId"]);
|
|
23
32
|
const CandidAdapterContext = react_1.default.createContext(null);
|
|
24
33
|
const useCandidAdapter = () => {
|
|
25
|
-
const
|
|
26
|
-
|
|
34
|
+
const context = react_1.default.useContext(CandidAdapterContext);
|
|
35
|
+
if (!context) {
|
|
36
|
+
throw new Error("Actor hooks must be used within a ActorProvider");
|
|
37
|
+
}
|
|
38
|
+
return context;
|
|
39
|
+
};
|
|
40
|
+
const useCandidEvaluation = () => {
|
|
41
|
+
const [state, setState] = react_1.default.useState({
|
|
42
|
+
fetching: true,
|
|
43
|
+
fetchError: null,
|
|
44
|
+
});
|
|
45
|
+
const candidAdapter = useCandidAdapter();
|
|
46
|
+
const validateCandid = react_1.default.useCallback((candidString) => {
|
|
47
|
+
setState({
|
|
48
|
+
fetchError: null,
|
|
49
|
+
fetching: false,
|
|
50
|
+
});
|
|
51
|
+
try {
|
|
52
|
+
return candidAdapter.validateIDL(candidString);
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
// eslint-disable-next-line no-console
|
|
56
|
+
console.error(err);
|
|
57
|
+
setState({
|
|
58
|
+
fetchError: `Error validating Candid definition, ${err}`,
|
|
59
|
+
fetching: false,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}, []);
|
|
63
|
+
const evaluateCandid = react_1.default.useCallback((candidString) => __awaiter(this, void 0, void 0, function* () {
|
|
64
|
+
setState({
|
|
65
|
+
fetchError: null,
|
|
66
|
+
fetching: true,
|
|
67
|
+
});
|
|
68
|
+
try {
|
|
69
|
+
const definition = yield candidAdapter.dynamicEvalJs(candidString);
|
|
70
|
+
if (typeof (definition === null || definition === void 0 ? void 0 : definition.idlFactory) !== "function") {
|
|
71
|
+
throw new Error("Error evaluating Candid definition");
|
|
72
|
+
}
|
|
73
|
+
return definition.idlFactory;
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
// eslint-disable-next-line no-console
|
|
77
|
+
console.error(err);
|
|
78
|
+
setState({
|
|
79
|
+
fetchError: `Error evaluating Candid definition, ${err}`,
|
|
80
|
+
fetching: false,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}), []);
|
|
84
|
+
return Object.assign({ evaluateCandid, validateCandid }, state);
|
|
27
85
|
};
|
|
28
86
|
const CandidAdapterProvider = (_a) => {
|
|
29
87
|
var { children, withParser = _withParser, loadingComponent = react_1.default.createElement("div", null, "Loading Parser..."), didjsCanisterId = _didjsCanisterId } = _a, restConfig = __rest(_a, ["children", "withParser", "loadingComponent", "didjsCanisterId"]);
|
|
@@ -43,8 +101,10 @@ function createAdapterContext(config = {}) {
|
|
|
43
101
|
};
|
|
44
102
|
CandidAdapterProvider.displayName = "CandidAdapterProvider";
|
|
45
103
|
return {
|
|
46
|
-
|
|
104
|
+
CandidAdapterContext,
|
|
47
105
|
CandidAdapterProvider,
|
|
106
|
+
useCandidEvaluation,
|
|
107
|
+
useCandidAdapter,
|
|
48
108
|
};
|
|
49
109
|
}
|
|
50
110
|
exports.createAdapterContext = createAdapterContext;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useCandidEvaluation = void 0;
|
|
4
|
+
const __1 = require("..");
|
|
5
|
+
/**
|
|
6
|
+
* Accesses the `CandidEvaluation` function to evaluate the actor's Candid interface from a string
|
|
7
|
+
* into an `idlFactory`.
|
|
8
|
+
*/
|
|
9
|
+
exports.useCandidEvaluation = __1.AdapterHooks.useCandidEvaluation;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
export { createAdapterContext };
|
|
1
|
+
/// <reference types="react" />
|
|
3
2
|
/** @ignore */
|
|
4
3
|
export declare const AdapterHooks: import("./types").CreateCandidAdapterContextReturnType;
|
|
4
|
+
export declare const CandidAdapterContext: import("react").Context<import("./types").CandidAdapterContextType | null>;
|
|
5
5
|
export * from "./provider";
|
|
6
6
|
export * from "./hooks/useCandidAdapter";
|
|
7
|
+
export * from "./hooks/useCandidEvaluation";
|
|
@@ -14,10 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.
|
|
17
|
+
exports.CandidAdapterContext = exports.AdapterHooks = void 0;
|
|
18
18
|
const create_1 = require("./create");
|
|
19
|
-
Object.defineProperty(exports, "createAdapterContext", { enumerable: true, get: function () { return create_1.createAdapterContext; } });
|
|
20
19
|
/** @ignore */
|
|
21
20
|
exports.AdapterHooks = (0, create_1.createAdapterContext)();
|
|
21
|
+
exports.CandidAdapterContext = exports.AdapterHooks.CandidAdapterContext;
|
|
22
22
|
__exportStar(require("./provider"), exports);
|
|
23
23
|
__exportStar(require("./hooks/useCandidAdapter"), exports);
|
|
24
|
+
__exportStar(require("./hooks/useCandidEvaluation"), exports);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { PropsWithChildren } from "react";
|
|
2
|
-
import type { CandidAdapterParameters } from "../../types";
|
|
2
|
+
import type { CandidAdapterParameters, IDL } from "../../types";
|
|
3
3
|
import type { CandidAdapter } from "@ic-reactor/core/dist/classes";
|
|
4
4
|
export type { CandidAdapter };
|
|
5
5
|
export interface CandidAdapterContextType extends CandidAdapter {
|
|
@@ -11,7 +11,15 @@ export interface CandidAdapterProviderProps extends PropsWithChildren, CandidAda
|
|
|
11
11
|
export interface CreateCandidAdapterCotextParameters extends CandidAdapterParameters {
|
|
12
12
|
withParser?: boolean;
|
|
13
13
|
}
|
|
14
|
+
export interface UseCandidEvaluationReturnType {
|
|
15
|
+
fetchError: string | null;
|
|
16
|
+
fetching: boolean;
|
|
17
|
+
validateCandid: (candidString: string) => boolean | undefined;
|
|
18
|
+
evaluateCandid: (candidString: string) => Promise<IDL.InterfaceFactory | undefined>;
|
|
19
|
+
}
|
|
14
20
|
export interface CreateCandidAdapterContextReturnType {
|
|
15
|
-
|
|
21
|
+
CandidAdapterContext: React.Context<CandidAdapterContextType | null>;
|
|
16
22
|
CandidAdapterProvider: React.FC<CandidAdapterProviderProps>;
|
|
23
|
+
useCandidEvaluation: () => UseCandidEvaluationReturnType;
|
|
24
|
+
useCandidAdapter: () => CandidAdapter;
|
|
17
25
|
}
|
|
@@ -107,6 +107,6 @@ function createAgentContext(config = {}) {
|
|
|
107
107
|
return (react_1.default.createElement(AgentContext.Provider, { value: hooks }, children));
|
|
108
108
|
};
|
|
109
109
|
AgentProvider.displayName = "AgentProvider";
|
|
110
|
-
return Object.assign({ AgentProvider }, (0, extractAgentContext_1.extractAgentContext)(AgentContext));
|
|
110
|
+
return Object.assign({ AgentContext, AgentProvider }, (0, extractAgentContext_1.extractAgentContext)(AgentContext));
|
|
111
111
|
}
|
|
112
112
|
exports.createAgentContext = createAgentContext;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
export { createAgentContext };
|
|
1
|
+
/// <reference types="react" />
|
|
3
2
|
/** @ignore */
|
|
4
3
|
export declare const AgentHooks: import("./types").CreateAgentContextReturnType;
|
|
4
|
+
export declare const AgentContext: import("react").Context<import("./types").AgentContext | null>;
|
|
5
5
|
export * from "./provider";
|
|
6
6
|
export * from "./hooks/useAgent";
|
|
7
7
|
export * from "./hooks/useAgentState";
|
|
@@ -14,11 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.
|
|
17
|
+
exports.AgentContext = exports.AgentHooks = void 0;
|
|
18
18
|
const create_1 = require("./create");
|
|
19
|
-
Object.defineProperty(exports, "createAgentContext", { enumerable: true, get: function () { return create_1.createAgentContext; } });
|
|
20
19
|
/** @ignore */
|
|
21
20
|
exports.AgentHooks = (0, create_1.createAgentContext)();
|
|
21
|
+
exports.AgentContext = exports.AgentHooks.AgentContext;
|
|
22
22
|
__exportStar(require("./provider"), exports);
|
|
23
23
|
__exportStar(require("./hooks/useAgent"), exports);
|
|
24
24
|
__exportStar(require("./hooks/useAgentState"), exports);
|
|
@@ -10,6 +10,7 @@ export interface CreateAgentCotextParameters extends AgentManagerParameters {
|
|
|
10
10
|
export interface CreateAgentContextReturnType extends AgentHooksReturnType, AuthHooksReturnType {
|
|
11
11
|
useAgentManager: () => AgentManager;
|
|
12
12
|
AgentProvider: React.FC<AgentProviderProps>;
|
|
13
|
+
AgentContext: React.Context<AgentContext | null>;
|
|
13
14
|
}
|
|
14
15
|
export interface AgentProviderProps extends PropsWithChildren, CreateAgentCotextParameters {
|
|
15
16
|
agentManager?: AgentManager;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ActorHooksReturnType } from "../types";
|
|
2
|
-
import type
|
|
2
|
+
import { type ActorManager, type BaseActor } from "@ic-reactor/core/dist/types";
|
|
3
3
|
/**
|
|
4
4
|
* Provides a set of React hooks designed for interacting with actors in an Internet Computer (IC) project using the React framework and Zustand for state management.
|
|
5
5
|
*
|
|
@@ -90,13 +90,16 @@ const actorHooks = (actorManager) => {
|
|
|
90
90
|
return [state, setSharedState];
|
|
91
91
|
};
|
|
92
92
|
const useMethodAttributes = () => {
|
|
93
|
-
return React.useMemo(extractMethodAttributes, [
|
|
93
|
+
return React.useMemo(extractMethodAttributes, [
|
|
94
|
+
actorManager,
|
|
95
|
+
]);
|
|
94
96
|
};
|
|
95
97
|
const useMethodNames = () => {
|
|
96
|
-
|
|
98
|
+
const methodAttributes = useMethodAttributes();
|
|
99
|
+
return Object.keys(methodAttributes);
|
|
97
100
|
};
|
|
98
101
|
const useActorInterface = () => {
|
|
99
|
-
return
|
|
102
|
+
return extractInterface();
|
|
100
103
|
};
|
|
101
104
|
const useVisitService = () => {
|
|
102
105
|
return visitFunction;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import type {
|
|
3
|
-
import type { CreateActorContextReturnType } from "../context/actor/types";
|
|
4
|
-
export declare function extractActorContext<A = BaseActor>(actorContext: React.Context<
|
|
2
|
+
import type { BaseActor } from "../types";
|
|
3
|
+
import type { CreateActorContextReturnType, CreateActorContextType } from "../context/actor/types";
|
|
4
|
+
export declare function extractActorContext<A = BaseActor>(actorContext: React.Context<CreateActorContextType<A> | null>): Omit<CreateActorContextReturnType<A>, "ActorProvider" | "ActorHookProvider">;
|
|
@@ -26,6 +26,7 @@ function extractActorContext(actorContext) {
|
|
|
26
26
|
const useVisitMethod = (functionName) => useActorContext().useVisitMethod(functionName);
|
|
27
27
|
const useVisitService = () => useActorContext().useVisitService();
|
|
28
28
|
const useActorInterface = () => useActorContext().useActorInterface();
|
|
29
|
+
const useInitializeActor = () => { var _a, _b; return (_b = (_a = useActorContext()).useInitializeActor) === null || _b === void 0 ? void 0 : _b.call(_a); };
|
|
29
30
|
return {
|
|
30
31
|
useActorStore,
|
|
31
32
|
useActorState,
|
|
@@ -37,6 +38,7 @@ function extractActorContext(actorContext) {
|
|
|
37
38
|
useVisitMethod,
|
|
38
39
|
useVisitService,
|
|
39
40
|
useActorInterface,
|
|
41
|
+
useInitializeActor,
|
|
40
42
|
initialize,
|
|
41
43
|
};
|
|
42
44
|
}
|
|
@@ -25,4 +25,4 @@ import type { AgentContext, CreateAgentContextReturnType } from "../types";
|
|
|
25
25
|
* To use these hooks, ensure your components are wrapped in an `AgentProvider` that you've set up to supply the `AgentContext`.
|
|
26
26
|
* This context provides the necessary agent functionalities and state management capabilities required by the hooks.
|
|
27
27
|
*/
|
|
28
|
-
export declare const extractAgentContext: (agentContext: React.Context<AgentContext | null>) => Omit<CreateAgentContextReturnType, "AgentProvider">;
|
|
28
|
+
export declare const extractAgentContext: (agentContext: React.Context<AgentContext | null>) => Omit<CreateAgentContextReturnType, "AgentProvider" | "AgentContext">;
|
package/dist/hooks/types.d.ts
CHANGED
|
@@ -10,5 +10,6 @@ export interface UseActorReturn<A = BaseActor> {
|
|
|
10
10
|
fetching: boolean;
|
|
11
11
|
fetchError: string | null;
|
|
12
12
|
authenticating: boolean;
|
|
13
|
-
|
|
13
|
+
initializeActor: InitializeActor;
|
|
14
14
|
}
|
|
15
|
+
export type InitializeActor = (idlFactory: IDL.InterfaceFactory, actorReConfig?: UseActorParameters) => void;
|
package/dist/hooks/useActor.js
CHANGED
|
@@ -106,7 +106,7 @@ const useActor = (config) => {
|
|
|
106
106
|
fetching: false,
|
|
107
107
|
fetchError: null,
|
|
108
108
|
});
|
|
109
|
-
const candidAdapter = (0,
|
|
109
|
+
const candidAdapter = (0, react_1.useContext)(adapter_1.CandidAdapterContext);
|
|
110
110
|
const authenticating = (0, agent_1.useAuthState)().authenticating;
|
|
111
111
|
const fetchCandid = (0, react_1.useCallback)(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
112
112
|
if (fetching)
|
|
@@ -150,19 +150,19 @@ const useActor = (config) => {
|
|
|
150
150
|
}
|
|
151
151
|
}), [candidString]);
|
|
152
152
|
const agentManager = (0, agent_1.useAgentManager)();
|
|
153
|
-
const
|
|
153
|
+
const initializeActor = (0, react_1.useCallback)((idlFactory, actorReConfig) => {
|
|
154
154
|
if (authenticating || !idlFactory)
|
|
155
155
|
return;
|
|
156
|
-
const
|
|
156
|
+
const newActorManager = (0, core_1.createActorManager)(Object.assign(Object.assign({ agentManager,
|
|
157
157
|
idlFactory,
|
|
158
|
-
canisterId }, actorConfig));
|
|
159
|
-
setActorManager(
|
|
158
|
+
canisterId }, actorConfig), actorReConfig));
|
|
159
|
+
setActorManager(newActorManager);
|
|
160
160
|
}, [canisterId, agentManager, authenticating]);
|
|
161
161
|
const handleActorInitialization = (0, react_1.useCallback)(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
162
162
|
if (authenticating)
|
|
163
163
|
return;
|
|
164
164
|
if (maybeIdlFactory) {
|
|
165
|
-
|
|
165
|
+
initializeActor(maybeIdlFactory);
|
|
166
166
|
return;
|
|
167
167
|
}
|
|
168
168
|
if (disableAutoFetch) {
|
|
@@ -182,8 +182,10 @@ const useActor = (config) => {
|
|
|
182
182
|
else {
|
|
183
183
|
idlFactory = yield fetchCandid();
|
|
184
184
|
}
|
|
185
|
-
|
|
186
|
-
|
|
185
|
+
if (!idlFactory)
|
|
186
|
+
return;
|
|
187
|
+
initializeActor(idlFactory);
|
|
188
|
+
}), [fetchCandid, evaluateCandid, maybeIdlFactory, initializeActor]);
|
|
187
189
|
(0, react_1.useEffect)(() => {
|
|
188
190
|
handleActorInitialization();
|
|
189
191
|
}, [handleActorInitialization]);
|
|
@@ -192,6 +194,6 @@ const useActor = (config) => {
|
|
|
192
194
|
return null;
|
|
193
195
|
return (0, helpers_1.actorHooks)(actorManager);
|
|
194
196
|
}, [actorManager]);
|
|
195
|
-
return { hooks, authenticating, fetching, fetchError,
|
|
197
|
+
return { hooks, authenticating, fetching, fetchError, initializeActor };
|
|
196
198
|
};
|
|
197
199
|
exports.useActor = useActor;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ic-reactor/react",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0",
|
|
4
4
|
"description": "A React library for interacting with Internet Computer canisters",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"node": ">=10"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@ic-reactor/core": "^1.
|
|
38
|
+
"@ic-reactor/core": "^1.8.0",
|
|
39
39
|
"zustand-utils": "^1.3"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
@@ -47,5 +47,5 @@
|
|
|
47
47
|
"react": ">=16.8",
|
|
48
48
|
"zustand": "4.5"
|
|
49
49
|
},
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "35908ed17cea4c78169b00b9c4707393381041e1"
|
|
51
51
|
}
|