@gathertown/uikit-react-native
Version:
Sendbird UIKit for React Native: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.
23 lines (19 loc) • 522 B
text/typescript
export type PubSub<T> = {
publish: (data: T) => void;
subscribe: (subscriber: (data: T) => void) => () => void;
};
const pubsub = <T>(): PubSub<T> => {
const subscribers = new Set<Function>();
return {
publish: (data: unknown) => {
subscribers.forEach((subscriber) => {
setTimeout(() => subscriber(data), 0);
});
},
subscribe: (subscriber: Function) => {
subscribers.add(subscriber);
return () => subscribers.delete(subscriber);
},
};
};
export default pubsub;