UNPKG

@roochnetwork/rooch-sdk-kit

Version:
181 lines (170 loc) 6.27 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/provider/clientProvider.tsx var clientProvider_exports = {}; __export(clientProvider_exports, { ClientContext: () => ClientContext, RoochClientProvider: () => RoochClientProvider }); module.exports = __toCommonJS(clientProvider_exports); var import_react5 = require("react"); var import_rooch_sdk3 = require("@roochnetwork/rooch-sdk"); // src/provider/useDefaultClient.ts var import_react4 = require("react"); var import_rooch_sdk2 = require("@roochnetwork/rooch-sdk"); // src/hooks/useSessionsStore.ts var import_react3 = require("react"); var import_zustand = require("zustand"); // src/provider/roochProvider.tsx var import_react2 = require("react"); // src/provider/globalProvider.tsx var import_react = require("react"); var import_jsx_runtime = require("react/jsx-runtime"); var GlobalContext = (0, import_react.createContext)(null); var useTriggerError = () => { const ctx = (0, import_react.useContext)(GlobalContext); if (!ctx) { throw new Error("useTriggerError must be used within a GlobalProvider"); } return ctx.triggerError; }; var useTriggerRequest = () => { const ctx = (0, import_react.useContext)(GlobalContext); if (!ctx) { throw new Error("useTriggerError must be used within a GlobalProvider"); } return ctx.triggerRequest; }; // src/provider/roochProvider.tsx var import_jsx_runtime2 = require("react/jsx-runtime"); var RoochContext = (0, import_react2.createContext)(null); // src/hooks/useSessionsStore.ts function useSessionStore(selector) { const store = (0, import_react3.useContext)(RoochContext); if (!store) { throw new Error( "Could not find RoochSessionContext. Ensure that you have set up the RoochClientProvider." ); } return (0, import_zustand.useStore)(store, selector); } // src/http/httpTransport.ts var import_rooch_sdk = require("@roochnetwork/rooch-sdk"); var HTTPTransport = class extends import_rooch_sdk.RoochHTTPTransport { constructor(options, requestErrorCallback) { super(options); this.requestCallback = requestErrorCallback; } async request(input) { let result; try { if (input.method === "rooch_executeRawTransaction") { this.requestCallback("requesting"); } result = await super.request(input); if (input.method === "rooch_executeRawTransaction") { this.requestCallback("success"); } return result; } catch (e) { if ("code" in e) { this.requestCallback("error", { code: e.code, message: e.message }); } throw e; } } }; // src/provider/useDefaultClient.ts var DEFAULT_CREATE_CLIENT = (_name, config, requestErrorCallback) => { if ((0, import_rooch_sdk2.isRoochClient)(config)) { return config; } config.transport = new HTTPTransport( { url: config.url.toString() }, requestErrorCallback ); return new import_rooch_sdk2.RoochClient(config); }; function useDefaultClient(params) { const { currentNetwork, networks } = params; const currentSession = useSessionStore((state) => state.currentSession); const removeSession = useSessionStore((state) => state.removeSession); const triggerError = useTriggerError(); const triggerRequest = useTriggerRequest(); const _requestErrorCallback = (0, import_react4.useCallback)( (state, error) => { try { if (state === "error") { if (error.code === import_rooch_sdk2.ErrorValidateInvalidAccountAuthKey || error.code === import_rooch_sdk2.ErrorValidateSessionIsExpired) { if (currentSession) { removeSession(currentSession); } } triggerError(error); } triggerRequest(state); } catch (e) { console.error(e); } }, [triggerError, currentSession, removeSession, triggerRequest] ); return (0, import_react4.useMemo)(() => { return DEFAULT_CREATE_CLIENT(currentNetwork, networks[currentNetwork], _requestErrorCallback); }, [currentNetwork, networks, _requestErrorCallback]); } // src/provider/clientProvider.tsx var import_jsx_runtime3 = require("react/jsx-runtime"); var ClientContext = (0, import_react5.createContext)(null); var DEFAULT_NETWORKS = { localnet: { url: (0, import_rooch_sdk3.getRoochNodeUrl)("localnet") } }; function RoochClientProvider(props) { const { onNetworkChange, network, children } = props; const networks = props.networks ?? DEFAULT_NETWORKS; const [selectedNetwork, setSelectedNetwork] = (0, import_react5.useState)( props.network ?? props.defaultNetwork ?? Object.keys(networks)[0] ); const currentNetwork = props.network ?? selectedNetwork; const client = useDefaultClient({ currentNetwork, networks }); const ctx = (0, import_react5.useMemo)(() => { return { client, network: currentNetwork, networks, config: networks[currentNetwork] instanceof import_rooch_sdk3.RoochClient ? null : networks[currentNetwork], selectNetwork: (newNetwork) => { if (currentNetwork === newNetwork) { return; } if (!network && newNetwork !== selectedNetwork) { setSelectedNetwork(newNetwork); } onNetworkChange?.(newNetwork); } }; }, [client, currentNetwork, networks, network, selectedNetwork, onNetworkChange]); return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(ClientContext.Provider, { value: ctx, children }); } //# sourceMappingURL=clientProvider.js.map