null-guard useIsEncrypted

This commit is contained in:
Michael Telatynski 2019-12-17 14:05:51 +00:00
parent 3ec60b1692
commit c1133ebfc6
2 changed files with 5 additions and 2 deletions

View file

@ -109,14 +109,14 @@ function openDMForUser(matrixClient, userId) {
} }
function useIsEncrypted(cli, room) { function useIsEncrypted(cli, room) {
const [isEncrypted, setIsEncrypted] = useState(cli.isRoomEncrypted(room.roomId)); const [isEncrypted, setIsEncrypted] = useState(room ? cli.isRoomEncrypted(room.roomId) : undefined);
const update = useCallback((event) => { const update = useCallback((event) => {
if (event.getType() === "m.room.encryption") { if (event.getType() === "m.room.encryption") {
setIsEncrypted(cli.isRoomEncrypted(room.roomId)); setIsEncrypted(cli.isRoomEncrypted(room.roomId));
} }
}, [cli, room]); }, [cli, room]);
useEventEmitter(room.currentState, "RoomState.events", update); useEventEmitter(room ? room.currentState : undefined, "RoomState.events", update);
return isEncrypted; return isEncrypted;
} }

View file

@ -28,6 +28,9 @@ export const useEventEmitter = (emitter, eventName, handler) => {
useEffect( useEffect(
() => { () => {
// allow disabling this hook by passing a falsy emitter
if (!emitter) return;
// Create event listener that calls handler function stored in ref // Create event listener that calls handler function stored in ref
const eventListener = event => savedHandler.current(event); const eventListener = event => savedHandler.current(event);