UNPKG

stream-chat-react-native-core

Version:

The official React Native and Expo components for Stream Chat, a service for building chat applications

55 lines 1.82 kB
Object.defineProperty(exports, "__esModule", { value: true }); exports.useSyncClientEvents = useSyncClientEvents; exports.useSyncClientEventsToChannel = useSyncClientEventsToChannel; var _react = require("react"); var _shim = require("use-sync-external-store/shim"); var noop = () => {}; function useSyncClientEventsToChannel({ channel, client, selector, stateChangeEventKeys = ['all'] }) { var subscribe = (0, _react.useCallback)(onStoreChange => { if (!client || !channel) { return noop; } var subscriptions = stateChangeEventKeys.map(et => client.on(et, () => { onStoreChange(selector(channel, client)); })); return () => subscriptions.forEach(subscription => subscription.unsubscribe()); }, [channel, client, selector, stateChangeEventKeys]); var getSnapshot = (0, _react.useCallback)(() => { if (!client || !channel) { return undefined; } var originalSnapshot = selector(channel, client); return originalSnapshot; }, [channel, client, selector]); return (0, _shim.useSyncExternalStore)(subscribe, getSnapshot); } function useSyncClientEvents({ client, selector, stateChangeEventKeys = ['all'] }) { var subscribe = (0, _react.useCallback)(onStoreChange => { if (!client) { return noop; } var subscriptions = stateChangeEventKeys.map(et => client.on(et, () => { onStoreChange(selector(client)); })); return () => subscriptions.forEach(subscription => subscription.unsubscribe()); }, [client, selector, stateChangeEventKeys]); var getSnapshot = (0, _react.useCallback)(() => { if (!client) { return undefined; } return selector(client); }, [client, selector]); return (0, _shim.useSyncExternalStore)(subscribe, getSnapshot); } //# sourceMappingURL=useSyncClientEvents.js.map