The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/client/lib/createValueSubscription.ts

20 lines
568 B

import { Emitter } from '@rocket.chat/emitter';
import { Subscription, Unsubscribe } from 'use-subscription';
type ValueSubscription<T> = Subscription<T> & {
setCurrentValue: (value: T) => void;
};
export const createValueSubscription = <T>(initialValue: T): ValueSubscription<T> => {
let value: T = initialValue;
const emitter = new Emitter();
return {
getCurrentValue: (): T => value,
setCurrentValue: (_value: T): void => {
value = _value;
emitter.emit('update');
},
subscribe: (callback): Unsubscribe => emitter.on('update', callback),
};
};