Tidy some types
This commit is contained in:
parent
5048e41e8b
commit
f59baf1efb
2 changed files with 11 additions and 3 deletions
|
@ -20,7 +20,11 @@ import type { EventEmitter } from "events";
|
||||||
type Handler = (...args: any[]) => void;
|
type Handler = (...args: any[]) => void;
|
||||||
|
|
||||||
// Hook to wrap event emitter on and removeListener in hook lifecycle
|
// Hook to wrap event emitter on and removeListener in hook lifecycle
|
||||||
export const useEventEmitter = (emitter: EventEmitter, eventName: string | symbol, handler: Handler) => {
|
export const useEventEmitter = (
|
||||||
|
emitter: EventEmitter | undefined,
|
||||||
|
eventName: string | symbol,
|
||||||
|
handler: Handler,
|
||||||
|
) => {
|
||||||
// Create a ref that stores handler
|
// Create a ref that stores handler
|
||||||
const savedHandler = useRef(handler);
|
const savedHandler = useRef(handler);
|
||||||
|
|
||||||
|
@ -51,7 +55,11 @@ export const useEventEmitter = (emitter: EventEmitter, eventName: string | symbo
|
||||||
|
|
||||||
type Mapper<T> = (...args: any[]) => T;
|
type Mapper<T> = (...args: any[]) => T;
|
||||||
|
|
||||||
export const useEventEmitterState = <T>(emitter: EventEmitter, eventName: string | symbol, fn: Mapper<T>): T => {
|
export const useEventEmitterState = <T>(
|
||||||
|
emitter: EventEmitter | undefined,
|
||||||
|
eventName: string | symbol,
|
||||||
|
fn: Mapper<T>,
|
||||||
|
): T => {
|
||||||
const [value, setValue] = useState<T>(fn());
|
const [value, setValue] = useState<T>(fn());
|
||||||
const handler = useCallback((...args: any[]) => {
|
const handler = useCallback((...args: any[]) => {
|
||||||
setValue(fn(...args));
|
setValue(fn(...args));
|
||||||
|
|
|
@ -25,7 +25,7 @@ const defaultMapper: Mapper<RoomState> = (roomState: RoomState) => roomState;
|
||||||
|
|
||||||
// Hook to simplify watching Matrix Room state
|
// Hook to simplify watching Matrix Room state
|
||||||
export const useRoomState = <T extends any = RoomState>(
|
export const useRoomState = <T extends any = RoomState>(
|
||||||
room: Room,
|
room?: Room,
|
||||||
mapper: Mapper<T> = defaultMapper as Mapper<T>,
|
mapper: Mapper<T> = defaultMapper as Mapper<T>,
|
||||||
): T => {
|
): T => {
|
||||||
const [value, setValue] = useState<T>(room ? mapper(room.currentState) : undefined);
|
const [value, setValue] = useState<T>(room ? mapper(room.currentState) : undefined);
|
||||||
|
|
Loading…
Reference in a new issue