UNPKG

@sendbird/uikit-chat-hooks

Version:

A set of React hooks for integrating Sendbird chat functionality into your React app.

45 lines (44 loc) 1.82 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useChannelHandler = void 0; var _react = require("react"); var _groupChannel = require("@sendbird/chat/groupChannel"); var _openChannel = require("@sendbird/chat/openChannel"); /** * @deprecated This hook is deprecated and will be replaced by the '@sendbird/uikit-tools' package. * */ const useChannelHandler = (sdk, handlerId, hookHandler, type = 'group') => { const handlerRef = (0, _react.useRef)(hookHandler); (0, _react.useLayoutEffect)(() => { handlerRef.current = hookHandler; }); (0, _react.useEffect)(() => { const handlerMapper = handler => { const handlerKeys = Object.keys(handler); handlerKeys.forEach(key => { // @ts-ignore handler[key] = (...args) => { var _handlerRef$current, _handlerRef$current$k; return (_handlerRef$current = handlerRef.current) === null || _handlerRef$current === void 0 || (_handlerRef$current$k = _handlerRef$current[key]) === null || _handlerRef$current$k === void 0 ? void 0 : _handlerRef$current$k.call(_handlerRef$current, ...args); }; }); return handler; }; if (type === 'group') { sdk.groupChannel.addGroupChannelHandler(handlerId, handlerMapper(new _groupChannel.GroupChannelHandler())); } else if (type === 'open') { sdk.openChannel.addOpenChannelHandler(handlerId, handlerMapper(new _openChannel.OpenChannelHandler())); } return () => { if (type === 'group') { sdk.groupChannel.removeGroupChannelHandler(handlerId); } else if (type === 'open') { sdk.openChannel.removeOpenChannelHandler(handlerId); } }; }, [sdk, handlerId]); }; exports.useChannelHandler = useChannelHandler; //# sourceMappingURL=useChannelHandler.js.map