diff --git a/package.json b/package.json index 1780075f..a8af62b0 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "i18next-http-backend": "^2.0.0", "livekit-client": "^2.0.2", "lodash": "^4.17.21", - "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#238eea0ef5c82d0a11b8d5cc5c04104d6c94c4c1", + "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#c795c7eb656f2f6136ac4c6b17015c0f000df9a6", "matrix-widget-api": "^1.3.1", "normalize.css": "^8.0.1", "pako": "^2.0.4", @@ -129,4 +129,4 @@ "vite-plugin-svgr": "^4.0.0", "vitest": "^2.0.0" } -} +} \ No newline at end of file diff --git a/src/video-grid/VideoTile.tsx b/src/video-grid/VideoTile.tsx index 13be0b96..9c431cb9 100644 --- a/src/video-grid/VideoTile.tsx +++ b/src/video-grid/VideoTile.tsx @@ -112,8 +112,27 @@ const Tile = forwardRef( const { t } = useTranslation(); const mergedRef = useMergedRefs(tileRef, ref); + const [lastActiveTime, setLastActiveTime] = useState( + member?.getLastTypingTime() ?? 0, + ); + const [online, setOnline] = useState(member?.typing ?? false); + + useEffect(() => { + const onTyping = (): void => { + setOnline(member?.typing ?? false); + setLastActiveTime(member?.getLastTypingTime() ?? 0); + }; + + member?.on(RoomMemberEvent.Typing, onTyping); + + return (): void => { + member?.off(RoomMemberEvent.Typing, onTyping); + }; + }, [member]); + const joinedCallTime = member?.events.member?.getTs() ?? 0; + const lastActiveAgo = useRelativeTime(lastActiveTime ?? 0); const joinedCallAgo = useRelativeTime(joinedCallTime ?? 0); return ( @@ -145,11 +164,24 @@ const Tile = forwardRef( )} {!video && member && joinedCallTime > 0 && (
- {nameTag} joined the call{" "} + + {nameTag} ({member.userId}) + {" "} + joined the call{" "} {joinedCallAgo} {" "} - but is currently unreachable. Are they having connection problems? + but is currently unreachable. + {lastActiveTime > 0 && ( + + They were last reachable{" "} + + {lastActiveAgo} + + . + + )}{" "} + Are they having connection problems?
)} @@ -157,7 +189,11 @@ const Tile = forwardRef(
{nameTagLeadingIcon} - {nameTag}{" "} + 0 ? ` last reachable ${online ? "now" : lastActiveAgo}` : ""}`} + > + {nameTag} + {" "} {unencryptedWarning && (