1- import { useTooltipClose , useTooltipOpen , useUserPresence } from '@rocket.chat/ui-contexts' ;
1+ import { Skeleton } from '@rocket.chat/fuselage' ;
2+ import { UserPresenceContext , useTooltipClose , useTooltipOpen , useUserPresence } from '@rocket.chat/ui-contexts' ;
23import type { MouseEvent } from 'react' ;
3- import { useCallback , useMemo } from 'react' ;
4+ import { useCallback , useContext , useMemo } from 'react' ;
45
56import { UserStatusText } from '../components/UserStatusText' ;
67
7- export function useUserStatusTooltip ( uid : string | undefined , title ? : string ) {
8+ const UserStatusTooltipContent = ( { uid } : { uid : string } ) => {
89 const presence = useUserPresence ( uid ) ;
910
11+ if ( ! presence ) {
12+ return < Skeleton width = 'x200' variant = 'text' backgroundColor = 'surface-light' /> ;
13+ }
14+
15+ return < UserStatusText status = { presence . status } statusText = { presence . statusText } statusExpiresAt = { presence . statusExpiresAt } /> ;
16+ } ;
17+
18+ export function useUserStatusTooltip ( uid : string | undefined , title ?: string ) {
19+ const userPresence = useContext ( UserPresenceContext ) ;
20+
1021 const openTooltip = useTooltipOpen ( ) ;
1122 const closeTooltip = useTooltipClose ( ) ;
1223
@@ -19,11 +30,13 @@ export function useUserStatusTooltip(uid: string | undefined, title?: string) {
1930 }
2031
2132 openTooltip (
22- < UserStatusText status = { presence ?. status } statusText = { presence ?. statusText } statusExpiresAt = { presence ?. statusExpiresAt } /> ,
33+ < UserPresenceContext . Provider value = { userPresence } >
34+ < UserStatusTooltipContent uid = { uid } />
35+ </ UserPresenceContext . Provider > ,
2336 target ,
2437 ) ;
2538 } ,
26- [ uid , openTooltip , presence , title ] ,
39+ [ uid , openTooltip , title , userPresence ] ,
2740 ) ;
2841
2942 return useMemo ( ( ) => ( { 'data-tooltip' : '' , onMouseEnter, 'onMouseLeave' : closeTooltip } ) , [ onMouseEnter , closeTooltip ] ) ;
0 commit comments