From 21380c77918811691bf210669dbfeff6e9bd2665 Mon Sep 17 00:00:00 2001 From: Half-Shot Date: Thu, 31 Oct 2024 16:25:31 +0000 Subject: [PATCH] linting --- src/button/RaisedHandToggleButton.tsx | 84 ++++++++++++++------------- src/useReactions.test.tsx | 8 +-- src/useReactions.tsx | 11 +++- 3 files changed, 57 insertions(+), 46 deletions(-) diff --git a/src/button/RaisedHandToggleButton.tsx b/src/button/RaisedHandToggleButton.tsx index 01955651..277817de 100644 --- a/src/button/RaisedHandToggleButton.tsx +++ b/src/button/RaisedHandToggleButton.tsx @@ -68,48 +68,52 @@ export function RaiseHandToggleButton({ const isHandRaised = !!raisedHands[userId]; const memberships = useMatrixRTCSessionMemberships(rtcSession); - const toggleRaisedHand = useCallback(async () => { - if (isHandRaised) { - if (!myReactionId) { - logger.warn(`Hand raised but no reaction event to redact!`); - return; - } - try { - setBusy(true); - await client.redactEvent(rtcSession.room.roomId, myReactionId); - logger.debug("Redacted raise hand event"); - } catch (ex) { - logger.error("Failed to redact reaction event", myReactionId, ex); - } finally { - setBusy(false); - } - } else { - const myMembership = memberships.find((m) => m.sender === userId); - if (!myMembership?.eventId) { - logger.error("Cannot find own membership event"); - return; - } - const parentEventId = myMembership.eventId; - try { - setBusy(true); - const reaction = await client.sendEvent( - rtcSession.room.roomId, - EventType.Reaction, - { - "m.relates_to": { - rel_type: RelationType.Annotation, - event_id: parentEventId, - key: "🖐️", + const toggleRaisedHand = useCallback(() => { + const raiseHand = async (): Promise => { + if (isHandRaised) { + if (!myReactionId) { + logger.warn(`Hand raised but no reaction event to redact!`); + return; + } + try { + setBusy(true); + await client.redactEvent(rtcSession.room.roomId, myReactionId); + logger.debug("Redacted raise hand event"); + } catch (ex) { + logger.error("Failed to redact reaction event", myReactionId, ex); + } finally { + setBusy(false); + } + } else { + const myMembership = memberships.find((m) => m.sender === userId); + if (!myMembership?.eventId) { + logger.error("Cannot find own membership event"); + return; + } + const parentEventId = myMembership.eventId; + try { + setBusy(true); + const reaction = await client.sendEvent( + rtcSession.room.roomId, + EventType.Reaction, + { + "m.relates_to": { + rel_type: RelationType.Annotation, + event_id: parentEventId, + key: "🖐️", + }, }, - }, - ); - logger.debug("Sent raise hand event", reaction.event_id); - } catch (ex) { - logger.error("Failed to send reaction event", ex); - } finally { - setBusy(false); + ); + logger.debug("Sent raise hand event", reaction.event_id); + } catch (ex) { + logger.error("Failed to send reaction event", ex); + } finally { + setBusy(false); + } } - } + }; + + void raiseHand(); }, [ client, isHandRaised, diff --git a/src/useReactions.test.tsx b/src/useReactions.test.tsx index ac11b496..99db2619 100644 --- a/src/useReactions.test.tsx +++ b/src/useReactions.test.tsx @@ -214,17 +214,17 @@ describe("useReactions", () => { }); // If the membership event changes for a user, we want to remove // the raised hand event. - test("will remove reaction when a member leaves the call", async () => { + test("will remove reaction when a member leaves the call", () => { const room = new MockRoom([createReaction(memberEventAlice)]); const rtcSession = new MockRTCSession(room); const { queryByRole } = render( , ); expect(queryByRole("list")?.children).to.have.lengthOf(1); - await act(() => rtcSession.testRemoveMember(memberUserIdAlice)); + act(() => rtcSession.testRemoveMember(memberUserIdAlice)); expect(queryByRole("list")?.children).to.have.lengthOf(0); }); - test("will remove reaction when a member joins via a new event", async () => { + test("will remove reaction when a member joins via a new event", () => { const room = new MockRoom([createReaction(memberEventAlice)]); const rtcSession = new MockRTCSession(room); const { queryByRole } = render( @@ -232,7 +232,7 @@ describe("useReactions", () => { ); expect(queryByRole("list")?.children).to.have.lengthOf(1); // Simulate leaving and rejoining - await act(() => { + act(() => { rtcSession.testRemoveMember(memberUserIdAlice); rtcSession.testAddMember(memberUserIdAlice); }); diff --git a/src/useReactions.tsx b/src/useReactions.tsx index b4088b6a..6aac4043 100644 --- a/src/useReactions.tsx +++ b/src/useReactions.tsx @@ -84,7 +84,7 @@ export const ReactionsProvider = ({ const myReactionId = useMemo( (): string | null => (myUserId && raisedHands[myUserId]?.reactionEventId) ?? null, - [raisedHands, room], + [raisedHands, myUserId], ); // Reduce the data down for the consumers. @@ -160,7 +160,14 @@ export const ReactionsProvider = ({ } } } - }, [room, memberships, addRaisedHand, removeRaisedHand]); + }, [ + room, + memberships, + myUserId, + raisedHands, + addRaisedHand, + removeRaisedHand, + ]); // This effect handles any *live* reaction/redactions in the room. useEffect(() => {