2023-06-12 21:15:23 +10:00
|
|
|
import { MatrixClient, MatrixEvent, RoomState, RoomStateEvent } from 'matrix-js-sdk';
|
|
|
|
|
import { useEffect } from 'react';
|
|
|
|
|
|
|
|
|
|
export type StateEventCallback = (
|
|
|
|
|
event: MatrixEvent,
|
|
|
|
|
state: RoomState,
|
2026-05-21 23:30:50 -04:00
|
|
|
lastStateEvent: MatrixEvent | null,
|
2023-06-12 21:15:23 +10:00
|
|
|
) => void;
|
|
|
|
|
|
|
|
|
|
export const useStateEventCallback = (mx: MatrixClient, onStateEvent: StateEventCallback) => {
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
mx.on(RoomStateEvent.Events, onStateEvent);
|
|
|
|
|
return () => {
|
|
|
|
|
mx.removeListener(RoomStateEvent.Events, onStateEvent);
|
|
|
|
|
};
|
|
|
|
|
}, [mx, onStateEvent]);
|
|
|
|
|
};
|