Files
cinny/src/app/hooks/useVerificationRequest.ts
T
Lotus Bot 61a1f008d0 chore: upgrade i18next 26, prettier 3, fontsource-variable, domhandler 6, lint-staged 17
- i18next 23->26 + react-i18next 15->17
- prettier 2->3, reformat all files
- replace @fontsource/inter with @fontsource-variable/inter 5, update import path
- domhandler 5->6 (aligns with transitive deps)
- lint-staged 16->17
2026-05-21 23:30:50 -04:00

88 lines
2.4 KiB
TypeScript

import { useCallback, useEffect, useState } from 'react';
import {
CryptoEvent,
CryptoEventHandlerMap,
VerificationPhase,
VerificationRequest,
VerificationRequestEvent,
VerificationRequestEventHandlerMap,
Verifier,
VerifierEvent,
VerifierEventHandlerMap,
} from 'matrix-js-sdk/lib/crypto-api';
import { useMatrixClient } from './useMatrixClient';
export const useVerificationRequestReceived = (
onRequest: CryptoEventHandlerMap[CryptoEvent.VerificationRequestReceived],
) => {
const mx = useMatrixClient();
useEffect(() => {
mx.on(CryptoEvent.VerificationRequestReceived, onRequest);
return () => {
mx.removeListener(CryptoEvent.VerificationRequestReceived, onRequest);
};
}, [mx, onRequest]);
};
export const useVerificationRequestChange = (
request: VerificationRequest,
onChange: VerificationRequestEventHandlerMap[VerificationRequestEvent.Change],
) => {
useEffect(() => {
request.on(VerificationRequestEvent.Change, onChange);
return () => {
request.removeListener(VerificationRequestEvent.Change, onChange);
};
}, [request, onChange]);
};
export const useVerificationRequestPhase = (request: VerificationRequest): VerificationPhase => {
const [phase, setPhase] = useState(() => request.phase);
useVerificationRequestChange(
request,
useCallback(() => {
setPhase(request.phase);
}, [request]),
);
return phase;
};
export const useVerifierCancel = (
verifier: Verifier,
onCallback: VerifierEventHandlerMap[VerifierEvent.Cancel],
) => {
useEffect(() => {
verifier.on(VerifierEvent.Cancel, onCallback);
return () => {
verifier.removeListener(VerifierEvent.Cancel, onCallback);
};
}, [verifier, onCallback]);
};
export const useVerifierShowSas = (
verifier: Verifier,
onCallback: VerifierEventHandlerMap[VerifierEvent.ShowSas],
) => {
useEffect(() => {
verifier.on(VerifierEvent.ShowSas, onCallback);
return () => {
verifier.removeListener(VerifierEvent.ShowSas, onCallback);
};
}, [verifier, onCallback]);
};
export const useVerifierShowReciprocateQr = (
verifier: Verifier,
onCallback: VerifierEventHandlerMap[VerifierEvent.ShowReciprocateQr],
) => {
useEffect(() => {
verifier.on(VerifierEvent.ShowReciprocateQr, onCallback);
return () => {
verifier.removeListener(VerifierEvent.ShowReciprocateQr, onCallback);
};
}, [verifier, onCallback]);
};