Skip to content

Commit

Permalink
fixup sonarcubes warnings
Browse files Browse the repository at this point in the history
  • Loading branch information
BillCarsonFr committed Jan 29, 2025
1 parent b9901f3 commit dc9ece8
Showing 1 changed file with 19 additions and 15 deletions.
34 changes: 19 additions & 15 deletions src/components/viewmodels/rooms/UserIdentityWarningViewModel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,32 +45,33 @@ export function useUserIdentityWarningViewModel(room: Room, key: string): UserId
const crypto = cli.getCrypto();

const [members, setMembers] = useState<RoomMember[]>([]);
const [currentPrompt, setPrompt] = useState<ViolationPrompt | undefined>(undefined);
const [currentPrompt, setCurrentPrompt] = useState<ViolationPrompt | undefined>(undefined);

const loadViolations = useMemo(
() =>
throttle(async (): Promise<void> => {
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) {
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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<void> => {
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) => {

Check failure on line 149 in src/components/viewmodels/rooms/UserIdentityWarningViewModel.tsx

View workflow job for this annotation

GitHub Actions / Jest (1)

UserIdentityWarning › displays a warning when a user's identity is in verification violation

TypeError: Cannot read properties of undefined (reading 'catch') at onButtonClick (src/components/viewmodels/rooms/UserIdentityWarningViewModel.tsx:149:84) at HTMLUnknownElement.callCallback (node_modules/react-dom/cjs/react-dom.development.js:4164:14) at HTMLUnknownElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) at HTMLUnknownElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:233:9) at HTMLUnknownElementImpl.dispatchEvent (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:104:17) at HTMLUnknownElement.dispatchEvent (node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:241:34) at Object.invokeGuardedCallbackDev (node_modules/react-dom/cjs/react-dom.development.js:4213:16) at invokeGuardedCallback (node_modules/react-dom/cjs/react-dom.development.js:4277:31) at invokeGuardedCallbackAndCatchFirstError (node_modules/react-dom/cjs/react-dom.development.js:4291:25) at executeDispatch (node_modules/react-dom/cjs/react-dom.development.js:9041:3) at processDispatchQueueItemsInOrder (node_modules/react-dom/cjs/react-dom.development.js:9073:7) at processDispatchQueue (node_modules/react-dom/cjs/react-dom.development.js:9086:5) at dispatchEventsForPlugins (node_modules/react-dom/cjs/react-dom.development.js:9097:3) at node_modules/react-dom/cjs/react-dom.development.js:9288:12 at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom.development.js:26179:12) at batchedUpdates (node_modules/react-dom/cjs/react-dom.development.js:3991:12) at dispatchEventForPluginEventSystem (node_modules/react-dom/cjs/react-dom.development.js:9287:3) at dispatchEventWithEnableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay (node_modules/react-dom/cjs/react-dom.development.js:6465:5) at dispatchEvent (node_modules/react-dom/cjs/react-dom.development.js:6457:5) at dispatchDiscreteEvent (node_modules/react-dom/cjs/react-dom.development.js:6430:5) at HTMLDivElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) at HTMLButtonElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:233:9) at HTMLButtonElementImpl.dispatchEvent (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:104:17) at HTMLButtonElement.dispatchEvent (node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:241:34) at node_modules/@testing-library/user-event/dist/cjs/event/dispatchEvent.js:45:43 at node_modules/@testing-library/react/dist/pure.js:108:16 at node_modules/@testing-library/react/dist/act-compat.js:48:24 at act (node_modules/react/cjs/react.development.js:2512:16) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at Object.eventWrapper (node_modules/@testing-library/react/dist/pure.js:107:28) at Object.wrapEvent (node_modules/@testing-library/user-event/dist/cjs/event/wrapEvent.js:6:28) at Object.dispatchEvent (node_modules/@testing-library/user-event/dist/cjs/event/dispatchEvent.js:45:22) at Object.dispatchUIEvent (node_modules/@testing-library/user-event/dist/cjs/event/dispatchEvent.js:22:26) at Mouse.up (node_modules/@testing-library/user-event/dist/cjs/system/pointer/mouse.js:94:30) at PointerHost.release (node_modules/@testing-library/user-event/dist/cjs/system/pointer/index.js:84:28) at pointerAction (node_modules/@testing-library/user-event/dist/cjs/pointer/index.js:54:47) at Object.pointer (node_modules/@testing-library/user-event/dist/cjs/pointer/index.js:27:9) at Object.asyncWrapper
logger.error("Error withdrawing verification requirement:", e);
});
} else if (currentPrompt.type === "PinViolation") {
crypto.pinCurrentUserIdentity(currentPrompt.member.userId).catch((e) => {

Check failure on line 153 in src/components/viewmodels/rooms/UserIdentityWarningViewModel.tsx

View workflow job for this annotation

GitHub Actions / Jest (1)

UserIdentityWarning › displays a warning when a user's identity needs approval

TypeError: Cannot read properties of undefined (reading 'catch') at onButtonClick (src/components/viewmodels/rooms/UserIdentityWarningViewModel.tsx:153:75) at HTMLUnknownElement.callCallback (node_modules/react-dom/cjs/react-dom.development.js:4164:14) at HTMLUnknownElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) at HTMLUnknownElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:233:9) at HTMLUnknownElementImpl.dispatchEvent (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:104:17) at HTMLUnknownElement.dispatchEvent (node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:241:34) at Object.invokeGuardedCallbackDev (node_modules/react-dom/cjs/react-dom.development.js:4213:16) at invokeGuardedCallback (node_modules/react-dom/cjs/react-dom.development.js:4277:31) at invokeGuardedCallbackAndCatchFirstError (node_modules/react-dom/cjs/react-dom.development.js:4291:25) at executeDispatch (node_modules/react-dom/cjs/react-dom.development.js:9041:3) at processDispatchQueueItemsInOrder (node_modules/react-dom/cjs/react-dom.development.js:9073:7) at processDispatchQueue (node_modules/react-dom/cjs/react-dom.development.js:9086:5) at dispatchEventsForPlugins (node_modules/react-dom/cjs/react-dom.development.js:9097:3) at node_modules/react-dom/cjs/react-dom.development.js:9288:12 at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom.development.js:26179:12) at batchedUpdates (node_modules/react-dom/cjs/react-dom.development.js:3991:12) at dispatchEventForPluginEventSystem (node_modules/react-dom/cjs/react-dom.development.js:9287:3) at dispatchEventWithEnableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay (node_modules/react-dom/cjs/react-dom.development.js:6465:5) at dispatchEvent (node_modules/react-dom/cjs/react-dom.development.js:6457:5) at dispatchDiscreteEvent (node_modules/react-dom/cjs/react-dom.development.js:6430:5) at HTMLDivElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) at HTMLButtonElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:233:9) at HTMLButtonElementImpl.dispatchEvent (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:104:17) at HTMLButtonElement.dispatchEvent (node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:241:34) at node_modules/@testing-library/user-event/dist/cjs/event/dispatchEvent.js:45:43 at node_modules/@testing-library/react/dist/pure.js:108:16 at node_modules/@testing-library/react/dist/act-compat.js:48:24 at act (node_modules/react/cjs/react.development.js:2512:16) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at Object.eventWrapper (node_modules/@testing-library/react/dist/pure.js:107:28) at Object.wrapEvent (node_modules/@testing-library/user-event/dist/cjs/event/wrapEvent.js:6:28) at Object.dispatchEvent (node_modules/@testing-library/user-event/dist/cjs/event/dispatchEvent.js:45:22) at Object.dispatchUIEvent (node_modules/@testing-library/user-event/dist/cjs/event/dispatchEvent.js:22:26) at Mouse.up (node_modules/@testing-library/user-event/dist/cjs/system/pointer/mouse.js:94:30) at PointerHost.release (node_modules/@testing-library/user-event/dist/cjs/system/pointer/index.js:84:28) at pointerAction (node_modules/@testing-library/user-event/dist/cjs/pointer/index.js:54:47) at Object.pointer (node_modules/@testing-library/user-event/dist/cjs/pointer/index.js:27:9) at Object.asyncWrapper
logger.error("Error withdrawing verification requirement:", e);
});
}
};
}
Expand Down

0 comments on commit dc9ece8

Please sign in to comment.