UNPKG

@amaui/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("@amaui/utils"); const useSubscription = (amauiSubscription, 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 : amauiSubscription === null || amauiSubscription === void 0 ? void 0 : amauiSubscription.value]); react_1.default.useEffect(() => { if (value !== undefined) { if ((0, utils_1.is)('function', amauiSubscription.init)) amauiSubscription.init(Object.assign(Object.assign({}, value), { loaded: true })); } }, []); react_1.default.useEffect(() => { if (!(0, utils_1.is)('function', amauiSubscription === null || amauiSubscription === void 0 ? void 0 : amauiSubscription.subscribe)) return; const subscription = amauiSubscription.subscribe(async (valueItem) => { if ((0, utils_1.is)('function', method)) await method(valueItem, setResponse); else setResponse([valueItem]); }); if (amauiSubscription.value !== undefined) setResponse([amauiSubscription.value]); return () => { if (subscription) subscription.unsubscribe(); }; }, [amauiSubscription]); return response[0]; }; exports.default = useSubscription;