Merge pull request #3738 from matrix-org/t3chguy/null-guard-useIsEncrypted

Fix UserInfo exploding without a room being passed to it
pull/21833/head
Michael Telatynski 2019-12-17 15:13:59 +00:00 committed by GitHub
commit 0c89ab9fb5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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);