From 2c5b1de6b4e91684fe518f22dbe66ba235ce244d Mon Sep 17 00:00:00 2001 From: Hugh Nimmo-Smith Date: Wed, 17 Jul 2024 11:56:45 +0100 Subject: [PATCH] Use prototype of matrix-js-sdk to send heartbeats and show offline status in UI --- package.json | 4 ++-- src/video-grid/VideoTile.tsx | 42 +++++++++++++++++++++++++++++++++--- yarn.lock | 26 +++++++++++----------- 3 files changed, 54 insertions(+), 18 deletions(-) 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 && (