61a1f008d0
- i18next 23->26 + react-i18next 15->17 - prettier 2->3, reformat all files - replace @fontsource/inter with @fontsource-variable/inter 5, update import path - domhandler 5->6 (aligns with transitive deps) - lint-staged 16->17
33 lines
968 B
TypeScript
33 lines
968 B
TypeScript
import { Room } from 'matrix-js-sdk';
|
|
import { useCallback, useMemo } from 'react';
|
|
import { useStateEventCallback } from './useStateEventCallback';
|
|
import { useForceUpdate } from './useForceUpdate';
|
|
import { getStateEvent } from '../utils/room';
|
|
import { StateEvent } from '../../types/matrix/room';
|
|
|
|
export const useStateEvent = (room: Room, eventType: StateEvent, stateKey = '') => {
|
|
const [updateCount, forceUpdate] = useForceUpdate();
|
|
|
|
useStateEventCallback(
|
|
room.client,
|
|
useCallback(
|
|
(event) => {
|
|
if (
|
|
event.getRoomId() === room.roomId &&
|
|
event.getType() === eventType &&
|
|
event.getStateKey() === stateKey
|
|
) {
|
|
forceUpdate();
|
|
}
|
|
},
|
|
[room, eventType, stateKey, forceUpdate],
|
|
),
|
|
);
|
|
|
|
return useMemo(
|
|
() => getStateEvent(room, eventType, stateKey),
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
[room, eventType, stateKey, updateCount],
|
|
);
|
|
};
|