fix(a11y,bug): aria-labels on dialogs/buttons, useAlive GIF guard, typing timer fix
A11y: - Add aria-label Close to RoomTopicViewer, ImagePackView close buttons - Add aria-label Cancel to LeaveRoomPrompt cancel button - Add aria-label to Send, Reply, Thread, Edit, React, Search, Mute, Download buttons - Fix aria-pressed -> aria-expanded + aria-haspopup on menu anchor triggers - Add aria-label to username/password auth inputs BUG-21: Add useAlive unmount guard to handleGifSelect error path in RoomInput BUG-22: Fix typing status timer accumulation with typingTimerRef Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,7 @@ type TypingStatusUpdater = (typing: boolean) => void;
|
||||
|
||||
export const useTypingStatusUpdater = (mx: MatrixClient, roomId: string): TypingStatusUpdater => {
|
||||
const statusSentTsRef = useRef<number>(0);
|
||||
const typingTimerRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);
|
||||
|
||||
const sendTypingStatus: TypingStatusUpdater = useMemo(() => {
|
||||
statusSentTsRef.current = 0;
|
||||
@@ -19,9 +20,10 @@ export const useTypingStatusUpdater = (mx: MatrixClient, roomId: string): Typing
|
||||
const sentTs = Date.now();
|
||||
statusSentTsRef.current = sentTs;
|
||||
|
||||
// Don't believe server will timeout typing status;
|
||||
// Clear typing status after timeout if already not;
|
||||
setTimeout(() => {
|
||||
// Cancel any previous pending timeout before scheduling a new one
|
||||
if (typingTimerRef.current !== undefined) clearTimeout(typingTimerRef.current);
|
||||
typingTimerRef.current = setTimeout(() => {
|
||||
typingTimerRef.current = undefined;
|
||||
if (statusSentTsRef.current === sentTs) {
|
||||
mx.sendTyping(roomId, false, TYPING_TIMEOUT_MS);
|
||||
statusSentTsRef.current = 0;
|
||||
|
||||
Reference in New Issue
Block a user