@@ -10,8 +10,9 @@ import { useSelector } from '../react-redux';
10
10
import { statusFromPresenceAndUserStatus } from '../utils/presence' ;
11
11
import { getPresence } from '../selectors' ;
12
12
import { getUserStatus } from '../user-statuses/userStatusesModel' ;
13
- import { getAllUsersByEmail } from '../users/userSelectors' ;
13
+ import { tryGetUserForId } from '../users/userSelectors' ;
14
14
import { ensureUnreachable } from '../types' ;
15
+ import type { UserId , UserPresence } from '../types' ;
15
16
16
17
const styles = createStyleSheet ( {
17
18
common : {
@@ -109,7 +110,7 @@ function PresenceStatusIndicatorUnavailable() {
109
110
110
111
type Props = $ReadOnly < { |
111
112
style ?: ViewStyleProp ,
112
- email : string ,
113
+ userId : UserId ,
113
114
hideIfOffline : boolean ,
114
115
useOpaqueBackground : boolean ,
115
116
| } > ;
@@ -125,12 +126,10 @@ type Props = $ReadOnly<{|
125
126
* @prop hideIfOffline - Do not render for 'offline' state.
126
127
*/
127
128
export default function PresenceStatusIndicator ( props : Props ) : Node {
128
- const { email , style, hideIfOffline, useOpaqueBackground } = props ;
129
+ const { userId , style, hideIfOffline, useOpaqueBackground } = props ;
129
130
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 ;
134
133
135
134
const userStatus = useSelector ( state => user && getUserStatus ( state , user . user_id ) ) ;
136
135
0 commit comments