UNPKG

@onesy/ui-react

Version:
39 lines (38 loc) 1.74 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importDefault(require("react")); const utils_1 = require("@onesy/utils"); const useSubscription = (onesySubscription, method, value) => { // an array of the value // we are getting the same reference value // from some of the subscriptions // in order for rerender to be made const [response, setResponse] = react_1.default.useState([value !== undefined ? value : onesySubscription === null || onesySubscription === void 0 ? void 0 : onesySubscription.value]); react_1.default.useEffect(() => { if (value !== undefined) { if ((0, utils_1.is)('function', onesySubscription.init)) onesySubscription.init(Object.assign(Object.assign({}, value), { loaded: true })); } }, []); react_1.default.useEffect(() => { if (!(0, utils_1.is)('function', onesySubscription === null || onesySubscription === void 0 ? void 0 : onesySubscription.subscribe)) return; const subscription = onesySubscription.subscribe(async (valueItem) => { if ((0, utils_1.is)('function', method)) await method(valueItem, setResponse); else setResponse([valueItem]); }); if (onesySubscription.value !== undefined) setResponse([onesySubscription.value]); return () => { if (subscription) subscription.unsubscribe(); }; }, [onesySubscription]); return response[0]; }; exports.default = useSubscription;