@@ -10,8 +10,9 @@ import { useSelector } from '../react-redux';
1010import { statusFromPresenceAndUserStatus } from '../utils/presence' ;
1111import { getPresence } from '../selectors' ;
1212import { getUserStatus } from '../user-statuses/userStatusesModel' ;
13- import { getAllUsersByEmail } from '../users/userSelectors' ;
13+ import { tryGetUserForId } from '../users/userSelectors' ;
1414import { ensureUnreachable } from '../types' ;
15+ import type { UserId , UserPresence } from '../types' ;
1516
1617const styles = createStyleSheet ( {
1718 common : {
@@ -109,7 +110,7 @@ function PresenceStatusIndicatorUnavailable() {
109110
110111type Props = $ReadOnly < { |
111112 style ?: ViewStyleProp ,
112- email : string ,
113+ userId : UserId ,
113114 hideIfOffline : boolean ,
114115 useOpaqueBackground : boolean ,
115116| } > ;
@@ -125,12 +126,10 @@ type Props = $ReadOnly<{|
125126 * @prop hideIfOffline - Do not render for 'offline' state.
126127 */
127128export default function PresenceStatusIndicator ( props : Props ) : Node {
128- const { email , style, hideIfOffline, useOpaqueBackground } = props ;
129+ const { userId , style, hideIfOffline, useOpaqueBackground } = props ;
129130 const presence = useSelector ( getPresence ) ;
130- const allUsersByEmail = useSelector ( getAllUsersByEmail ) ;
131-
132- const userPresence = presence [ email ] ;
133- const user = allUsersByEmail . get ( email ) ;
131+ const user = useSelector ( state => tryGetUserForId ( state , userId ) ) ;
132+ const userPresence = ( user && ( presence [ user . email ] : UserPresence | void ) ) ?? null ;
134133
135134 const userStatus = useSelector ( state => user && getUserStatus ( state , user . user_id ) ) ;
136135
0 commit comments