Merge pull request #6763 from matrix-org/t3chguy/ts1234

Improve types based on new TS in js-sdk
pull/21833/head
Michael Telatynski 2021-09-08 17:09:17 +01:00 committed by GitHub
commit 2c134b2dfd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 29 deletions

View File

@ -57,7 +57,7 @@ const EncryptionPanel: React.FC<IProps> = (props: IProps) => {
// state to show a spinner immediately after clicking "start verification", // state to show a spinner immediately after clicking "start verification",
// before we have a request // before we have a request
const [isRequesting, setRequesting] = useState(false); const [isRequesting, setRequesting] = useState(false);
const [phase, setPhase] = useState(request && request.phase); const [phase, setPhase] = useState(request?.phase);
useEffect(() => { useEffect(() => {
setRequest(verificationRequest); setRequest(verificationRequest);
if (verificationRequest) { if (verificationRequest) {

View File

@ -29,43 +29,27 @@ import VerificationQRCode from "../elements/crypto/VerificationQRCode";
import { _t } from "../../../languageHandler"; import { _t } from "../../../languageHandler";
import SdkConfig from "../../../SdkConfig"; import SdkConfig from "../../../SdkConfig";
import E2EIcon from "../rooms/E2EIcon"; import E2EIcon from "../rooms/E2EIcon";
import { import { Phase } from "matrix-js-sdk/src/crypto/verification/request/VerificationRequest";
PHASE_READY,
PHASE_DONE,
PHASE_STARTED,
PHASE_CANCELLED,
} from "matrix-js-sdk/src/crypto/verification/request/VerificationRequest";
import Spinner from "../elements/Spinner"; import Spinner from "../elements/Spinner";
import { replaceableComponent } from "../../../utils/replaceableComponent"; import { replaceableComponent } from "../../../utils/replaceableComponent";
import AccessibleButton from "../elements/AccessibleButton"; import AccessibleButton from "../elements/AccessibleButton";
import VerificationShowSas from "../verification/VerificationShowSas"; import VerificationShowSas from "../verification/VerificationShowSas";
// XXX: Should be defined in matrix-js-sdk
enum VerificationPhase {
PHASE_UNSENT,
PHASE_REQUESTED,
PHASE_READY,
PHASE_DONE,
PHASE_STARTED,
PHASE_CANCELLED,
}
interface IProps { interface IProps {
layout: string; layout: string;
request: VerificationRequest; request: VerificationRequest;
member: RoomMember | User; member: RoomMember | User;
phase: VerificationPhase; phase: Phase;
onClose: () => void; onClose: () => void;
isRoomEncrypted: boolean; isRoomEncrypted: boolean;
inDialog: boolean; inDialog: boolean;
key: number;
} }
interface IState { interface IState {
sasEvent?: SAS; sasEvent?: SAS["sasEvent"];
emojiButtonClicked?: boolean; emojiButtonClicked?: boolean;
reciprocateButtonClicked?: boolean; reciprocateButtonClicked?: boolean;
reciprocateQREvent?: ReciprocateQRCode; reciprocateQREvent?: ReciprocateQRCode["reciprocateQREvent"];
} }
@replaceableComponent("views.right_panel.VerificationPanel") @replaceableComponent("views.right_panel.VerificationPanel")
@ -321,9 +305,9 @@ export default class VerificationPanel extends React.PureComponent<IProps, IStat
const displayName = (member as User).displayName || (member as RoomMember).name || member.userId; const displayName = (member as User).displayName || (member as RoomMember).name || member.userId;
switch (phase) { switch (phase) {
case PHASE_READY: case Phase.Ready:
return this.renderQRPhase(); return this.renderQRPhase();
case PHASE_STARTED: case Phase.Started:
switch (request.chosenMethod) { switch (request.chosenMethod) {
case verificationMethods.RECIPROCATE_QR_CODE: case verificationMethods.RECIPROCATE_QR_CODE:
return this.renderQRReciprocatePhase(); return this.renderQRReciprocatePhase();
@ -346,9 +330,9 @@ export default class VerificationPanel extends React.PureComponent<IProps, IStat
default: default:
return null; return null;
} }
case PHASE_DONE: case Phase.Done:
return this.renderVerifiedPhase(); return this.renderVerifiedPhase();
case PHASE_CANCELLED: case Phase.Cancelled:
return this.renderCancelledPhase(); return this.renderCancelledPhase();
} }
console.error("VerificationPanel unhandled phase:", phase); console.error("VerificationPanel unhandled phase:", phase);
@ -375,7 +359,8 @@ export default class VerificationPanel extends React.PureComponent<IProps, IStat
private updateVerifierState = () => { private updateVerifierState = () => {
const { request } = this.props; const { request } = this.props;
const { sasEvent, reciprocateQREvent } = request.verifier; const sasEvent = (request.verifier as SAS).sasEvent;
const reciprocateQREvent = (request.verifier as ReciprocateQRCode).reciprocateQREvent;
request.verifier.off('show_sas', this.updateVerifierState); request.verifier.off('show_sas', this.updateVerifierState);
request.verifier.off('show_reciprocate_qr', this.updateVerifierState); request.verifier.off('show_reciprocate_qr', this.updateVerifierState);
this.setState({ sasEvent, reciprocateQREvent }); this.setState({ sasEvent, reciprocateQREvent });
@ -402,7 +387,8 @@ export default class VerificationPanel extends React.PureComponent<IProps, IStat
const { request } = this.props; const { request } = this.props;
request.on("change", this.onRequestChange); request.on("change", this.onRequestChange);
if (request.verifier) { if (request.verifier) {
const { sasEvent, reciprocateQREvent } = request.verifier; const sasEvent = (request.verifier as SAS).sasEvent;
const reciprocateQREvent = (request.verifier as ReciprocateQRCode).reciprocateQREvent;
this.setState({ sasEvent, reciprocateQREvent }); this.setState({ sasEvent, reciprocateQREvent });
} }
this.onRequestChange(); this.onRequestChange();

View File

@ -15,7 +15,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import { SAS } from "matrix-js-sdk/src/crypto/verification/SAS"; import { IGeneratedSas } from "matrix-js-sdk/src/crypto/verification/SAS";
import { DeviceInfo } from "matrix-js-sdk/src//crypto/deviceinfo"; import { DeviceInfo } from "matrix-js-sdk/src//crypto/deviceinfo";
import { _t, _td } from '../../../languageHandler'; import { _t, _td } from '../../../languageHandler';
import { PendingActionSpinner } from "../right_panel/EncryptionInfo"; import { PendingActionSpinner } from "../right_panel/EncryptionInfo";
@ -30,7 +30,7 @@ interface IProps {
device?: DeviceInfo; device?: DeviceInfo;
onDone: () => void; onDone: () => void;
onCancel: () => void; onCancel: () => void;
sas: SAS.sas; sas: IGeneratedSas;
isSelf?: boolean; isSelf?: boolean;
inDialog?: boolean; // whether this component is being shown in a dialog and to use DialogButtons inDialog?: boolean; // whether this component is being shown in a dialog and to use DialogButtons
} }