replace @use-it/event-listener as it doesn't like Node EE's
This commit is contained in:
parent
fa8ad70880
commit
0e6359ab24
4 changed files with 41 additions and 15 deletions
|
@ -57,7 +57,6 @@
|
||||||
"test-multi": "karma start"
|
"test-multi": "karma start"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@use-it/event-listener": "^0.1.3",
|
|
||||||
"babel-plugin-syntax-dynamic-import": "^6.18.0",
|
"babel-plugin-syntax-dynamic-import": "^6.18.0",
|
||||||
"babel-runtime": "^6.26.0",
|
"babel-runtime": "^6.26.0",
|
||||||
"bluebird": "^3.5.0",
|
"bluebird": "^3.5.0",
|
||||||
|
|
|
@ -20,7 +20,6 @@ limitations under the License.
|
||||||
import React, {useCallback, useMemo, useState, useEffect} from 'react';
|
import React, {useCallback, useMemo, useState, useEffect} from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
import useEventListener from '@use-it/event-listener';
|
|
||||||
import {Group, MatrixClient, RoomMember, User} from 'matrix-js-sdk';
|
import {Group, MatrixClient, RoomMember, User} from 'matrix-js-sdk';
|
||||||
import dis from '../../../dispatcher';
|
import dis from '../../../dispatcher';
|
||||||
import Modal from '../../../Modal';
|
import Modal from '../../../Modal';
|
||||||
|
@ -39,6 +38,7 @@ import MultiInviter from "../../../utils/MultiInviter";
|
||||||
import GroupStore from "../../../stores/GroupStore";
|
import GroupStore from "../../../stores/GroupStore";
|
||||||
import MatrixClientPeg from "../../../MatrixClientPeg";
|
import MatrixClientPeg from "../../../MatrixClientPeg";
|
||||||
import E2EIcon from "../rooms/E2EIcon";
|
import E2EIcon from "../rooms/E2EIcon";
|
||||||
|
import {useEventEmitter} from "../../../hooks/useEventEmitter";
|
||||||
|
|
||||||
const _disambiguateDevices = (devices) => {
|
const _disambiguateDevices = (devices) => {
|
||||||
const names = Object.create(null);
|
const names = Object.create(null);
|
||||||
|
@ -129,8 +129,7 @@ const DirectChatsSection = withLegacyMatrixClient(({cli, userId, startUpdating,
|
||||||
setDmRooms(dmRoomMap.getDMRoomsForUserId(userId));
|
setDmRooms(dmRoomMap.getDMRoomsForUserId(userId));
|
||||||
}
|
}
|
||||||
}, [cli, userId]);
|
}, [cli, userId]);
|
||||||
|
useEventEmitter(cli, "accountData", accountDataHandler);
|
||||||
useEventListener("accountData", accountDataHandler, cli);
|
|
||||||
|
|
||||||
const RoomTile = sdk.getComponent("rooms.RoomTile");
|
const RoomTile = sdk.getComponent("rooms.RoomTile");
|
||||||
|
|
||||||
|
@ -220,9 +219,7 @@ const UserOptionsSection = withLegacyMatrixClient(({cli, member, isIgnored, canI
|
||||||
ignoredUsers.push(member.userId);
|
ignoredUsers.push(member.userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
cli.setIgnoredUsers(ignoredUsers).then(() => {
|
cli.setIgnoredUsers(ignoredUsers);
|
||||||
// return this.setState({isIgnoring: !this.state.isIgnoring});
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
ignoreButton = (
|
ignoreButton = (
|
||||||
|
@ -364,7 +361,7 @@ const useRoomPowerLevels = (room) => {
|
||||||
};
|
};
|
||||||
}, [room]);
|
}, [room]);
|
||||||
|
|
||||||
useEventListener("RoomState.events", update, room);
|
useEventEmitter(room, "RoomState.events", update);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
update();
|
update();
|
||||||
return () => {
|
return () => {
|
||||||
|
@ -759,7 +756,7 @@ const UserInfo = withLegacyMatrixClient(({cli, user, groupId, roomId, onClose})
|
||||||
setIsIgnored(cli.isUserIgnored(user.userId));
|
setIsIgnored(cli.isUserIgnored(user.userId));
|
||||||
}
|
}
|
||||||
}, [cli, user.userId]);
|
}, [cli, user.userId]);
|
||||||
useEventListener("accountData", accountDataHandler, cli);
|
useEventEmitter(cli, "accountData", accountDataHandler);
|
||||||
|
|
||||||
// Count of how many operations are currently in progress, if > 0 then show a Spinner
|
// Count of how many operations are currently in progress, if > 0 then show a Spinner
|
||||||
const [pendingUpdateCount, setPendingUpdateCount] = useState(0);
|
const [pendingUpdateCount, setPendingUpdateCount] = useState(0);
|
||||||
|
@ -806,7 +803,7 @@ const UserInfo = withLegacyMatrixClient(({cli, user, groupId, roomId, onClose})
|
||||||
modifyLevelMax,
|
modifyLevelMax,
|
||||||
});
|
});
|
||||||
}, [cli, user, room]);
|
}, [cli, user, room]);
|
||||||
useEventListener("RoomState.events", updateRoomPermissions, cli);
|
useEventEmitter(cli, "RoomState.events", updateRoomPermissions);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
updateRoomPermissions();
|
updateRoomPermissions();
|
||||||
return () => {
|
return () => {
|
||||||
|
|
35
src/hooks/useEventEmitter.js
Normal file
35
src/hooks/useEventEmitter.js
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
import {useRef, useEffect} from "react";
|
||||||
|
|
||||||
|
// Hook to wrap event emitter on and removeListener in hook lifecycle
|
||||||
|
export const useEventEmitter = (emitter, eventName, handler) => {
|
||||||
|
// Create a ref that stores handler
|
||||||
|
const savedHandler = useRef();
|
||||||
|
|
||||||
|
// Update ref.current value if handler changes.
|
||||||
|
// This allows our effect below to always get latest handler ...
|
||||||
|
// ... without us needing to pass it in effect deps array ...
|
||||||
|
// ... and potentially cause effect to re-run every render.
|
||||||
|
useEffect(() => {
|
||||||
|
savedHandler.current = handler;
|
||||||
|
}, [handler]);
|
||||||
|
|
||||||
|
useEffect(
|
||||||
|
() => {
|
||||||
|
// Make sure element supports on
|
||||||
|
const isSupported = emitter && emitter.on;
|
||||||
|
if (!isSupported) return;
|
||||||
|
|
||||||
|
// Create event listener that calls handler function stored in ref
|
||||||
|
const eventListener = event => savedHandler.current(event);
|
||||||
|
|
||||||
|
// Add event listener
|
||||||
|
emitter.on(eventName, eventListener);
|
||||||
|
|
||||||
|
// Remove event listener on cleanup
|
||||||
|
return () => {
|
||||||
|
emitter.removeListener(eventName, eventListener);
|
||||||
|
};
|
||||||
|
},
|
||||||
|
[eventName, emitter], // Re-run if eventName or emitter changes
|
||||||
|
);
|
||||||
|
};
|
|
@ -293,11 +293,6 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/yargs-parser" "*"
|
"@types/yargs-parser" "*"
|
||||||
|
|
||||||
"@use-it/event-listener@^0.1.3":
|
|
||||||
version "0.1.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/@use-it/event-listener/-/event-listener-0.1.3.tgz#a9920b2819d211cf55e68e830997546eec6886d3"
|
|
||||||
integrity sha512-UCHkLOVU+xj3/1R8jXz8GzDTowkzfIDPESOBlVC2ndgwUSBEqiFdwCoUEs2lcGhJOOiEdmWxF+T23C5+60eEew==
|
|
||||||
|
|
||||||
"@webassemblyjs/ast@1.8.5":
|
"@webassemblyjs/ast@1.8.5":
|
||||||
version "1.8.5"
|
version "1.8.5"
|
||||||
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359"
|
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359"
|
||||||
|
|
Loading…
Reference in a new issue