From f56a743cdfd6277ec0a69641a3f4d02349debf04 Mon Sep 17 00:00:00 2001 From: Valere Date: Wed, 29 Jan 2025 09:46:03 +0100 Subject: [PATCH] fixup sonarcubes warnings --- .../rooms/UserIdentityWarningViewModel.tsx | 34 +++++++++++-------- .../views/rooms/UserIdentityWarning-test.tsx | 4 +-- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/components/viewmodels/rooms/UserIdentityWarningViewModel.tsx b/src/components/viewmodels/rooms/UserIdentityWarningViewModel.tsx index b775b8f20b0..a08a63f3fbd 100644 --- a/src/components/viewmodels/rooms/UserIdentityWarningViewModel.tsx +++ b/src/components/viewmodels/rooms/UserIdentityWarningViewModel.tsx @@ -45,7 +45,7 @@ export function useUserIdentityWarningViewModel(room: Room, key: string): UserId const crypto = cli.getCrypto(); const [members, setMembers] = useState([]); - const [currentPrompt, setPrompt] = useState(undefined); + const [currentPrompt, setCurrentPrompt] = useState(undefined); const loadViolations = useMemo( () => @@ -53,24 +53,25 @@ export function useUserIdentityWarningViewModel(room: Room, key: string): UserId const isEncrypted = crypto && (await crypto.isEncryptionEnabledInRoom(room.roomId)); if (!isEncrypted) { setMembers([]); - setPrompt(undefined); + setCurrentPrompt(undefined); return; } const targetMembers = await room.getEncryptionTargetMembers(); setMembers(targetMembers); - const violations = await mapToViolations(crypto!, targetMembers); + const violations = await mapToViolations(crypto, targetMembers); let candidatePrompt: ViolationPrompt | undefined; if (violations.length > 0) { // sort by user ID to ensure consistent ordering - candidatePrompt = violations.sort((a, b) => a.member.userId.localeCompare(b.member.userId))[0]; + const sortedViolations = violations.sort((a, b) => a.member.userId.localeCompare(b.member.userId)); + candidatePrompt = sortedViolations[0]; } else { candidatePrompt = undefined; } // is the current prompt still valid? - setPrompt((existingPrompt): ViolationPrompt | undefined => { + setCurrentPrompt((existingPrompt): ViolationPrompt | undefined => { if (existingPrompt && violations.includes(existingPrompt)) { return existingPrompt; } else if (candidatePrompt) { @@ -102,8 +103,6 @@ export function useUserIdentityWarningViewModel(room: Room, key: string): UserId // someone changed their display name. Anyhow let's refresh. const userId = event.getStateKey(); shouldRefresh = !!userId; - } else { - shouldRefresh = false; } if (shouldRefresh) { @@ -138,17 +137,22 @@ export function useUserIdentityWarningViewModel(room: Room, key: string): UserId }); }, [loadViolations]); - let onButtonClick: (ev: ButtonEvent) => void = async (ev: ButtonEvent) => {}; + let onButtonClick: (ev: ButtonEvent) => void = () => {}; if (currentPrompt) { - onButtonClick = async (ev: ButtonEvent): Promise => { + onButtonClick = (ev: ButtonEvent): void => { // XXX do we want some posthog tracking? + if (!crypto) { + return; + } ev.preventDefault(); - if (currentPrompt) { - if (currentPrompt.type === "VerificationViolation") { - await crypto?.withdrawVerificationRequirement(currentPrompt.member.userId); - } else if (currentPrompt.type === "PinViolation") { - await crypto?.pinCurrentUserIdentity(currentPrompt.member.userId); - } + if (currentPrompt.type === "VerificationViolation") { + crypto.withdrawVerificationRequirement(currentPrompt.member.userId).catch((e) => { + logger.error("Error withdrawing verification requirement:", e); + }); + } else if (currentPrompt.type === "PinViolation") { + crypto.pinCurrentUserIdentity(currentPrompt.member.userId).catch((e) => { + logger.error("Error withdrawing verification requirement:", e); + }); } }; } diff --git a/test/unit-tests/components/views/rooms/UserIdentityWarning-test.tsx b/test/unit-tests/components/views/rooms/UserIdentityWarning-test.tsx index f0bd81931f2..c210e9343e0 100644 --- a/test/unit-tests/components/views/rooms/UserIdentityWarning-test.tsx +++ b/test/unit-tests/components/views/rooms/UserIdentityWarning-test.tsx @@ -141,7 +141,7 @@ describe("UserIdentityWarning", () => { jest.spyOn(crypto, "getUserVerificationStatus").mockResolvedValue( new UserVerificationStatus(false, false, false, true), ); - crypto.pinCurrentUserIdentity = jest.fn(); + crypto.pinCurrentUserIdentity = jest.fn().mockResolvedValue(undefined); renderComponent(client, room); await waitFor(() => @@ -164,7 +164,7 @@ describe("UserIdentityWarning", () => { jest.spyOn(crypto, "getUserVerificationStatus").mockResolvedValue( new UserVerificationStatus(false, true, false, true), ); - crypto.withdrawVerificationRequirement = jest.fn(); + crypto.withdrawVerificationRequirement = jest.fn().mockResolvedValue(undefined); renderComponent(client, room); await waitFor(() =>