UNPKG

@roochnetwork/rooch-sdk-kit

Version:
92 lines (91 loc) 2.49 kB
// src/provider/globalProvider.tsx import { createContext, useContext } from "react"; import { jsx } from "react/jsx-runtime"; var RequestEventManager = class { constructor() { this.callbacks = []; } subscribe(callback) { this.callbacks.push(callback); return () => { this.callbacks = this.callbacks.filter((cb) => cb !== callback); }; } trigger(status) { this.callbacks.forEach((callback) => callback(status)); } }; var ErrorEventManager = class { constructor() { this.callbacks = []; } subscribe(callback) { this.callbacks.push(callback); return () => { this.callbacks = this.callbacks.filter((cb) => cb !== callback); }; } trigger(error) { this.callbacks.forEach((callback) => callback(error)); } }; var GlobalContext = createContext(null); var GlobalProvider = ({ children }) => { const errorEventManager = new ErrorEventManager(); const requestEventManager = new RequestEventManager(); const triggerError = (error) => { errorEventManager.trigger(error); }; const subscribeOnError = (callback) => { return errorEventManager.subscribe(callback); }; const triggerRequest = (status) => { requestEventManager.trigger(status); }; const subscribeOnRequest = (callback) => { return requestEventManager.subscribe(callback); }; return /* @__PURE__ */ jsx( GlobalContext.Provider, { value: { triggerError, subscribeOnError, triggerRequest, subscribeOnRequest }, children } ); }; var useSubscribeOnError = () => { const ctx = useContext(GlobalContext); if (!ctx) { throw new Error("useSubscribeToError must be used within a GlobalProvider"); } return ctx.subscribeOnError; }; var useTriggerError = () => { const ctx = useContext(GlobalContext); if (!ctx) { throw new Error("useTriggerError must be used within a GlobalProvider"); } return ctx.triggerError; }; var useSubscribeOnRequest = () => { const ctx = useContext(GlobalContext); if (!ctx) { throw new Error("useSubscribeToError must be used within a GlobalProvider"); } return ctx.subscribeOnRequest; }; var useTriggerRequest = () => { const ctx = useContext(GlobalContext); if (!ctx) { throw new Error("useTriggerError must be used within a GlobalProvider"); } return ctx.triggerRequest; }; export { GlobalProvider, useSubscribeOnError, useSubscribeOnRequest, useTriggerError, useTriggerRequest }; //# sourceMappingURL=globalProvider.js.map