( props: Props, )
| 17 | }; |
| 18 | |
| 19 | export default function SocketMessageUserInfosHandler( |
| 20 | props: Props, |
| 21 | ): React.Node { |
| 22 | const dispatch = useDispatch(); |
| 23 | const onMessage = React.useCallback( |
| 24 | (message: ClientServerSocketMessage) => { |
| 25 | const newUserIDs = extractUserIDsFromPayload( |
| 26 | serverServerSocketMessageValidator, |
| 27 | message, |
| 28 | ); |
| 29 | if (newUserIDs.length > 0) { |
| 30 | dispatch({ |
| 31 | type: processNewUserIDsActionType, |
| 32 | payload: { userIDs: newUserIDs }, |
| 33 | }); |
| 34 | } |
| 35 | }, |
| 36 | [dispatch], |
| 37 | ); |
| 38 | |
| 39 | const { addListener, removeListener } = props; |
| 40 | |
| 41 | React.useEffect(() => { |
| 42 | addListener(onMessage); |
| 43 | return () => { |
| 44 | removeListener(onMessage); |
| 45 | }; |
| 46 | }, [addListener, removeListener, onMessage]); |
| 47 | |
| 48 | return null; |
| 49 | } |
nothing calls this directly
no test coverage detected