Show incoming verification requests in the 'complete security' phase
If you click to verify your new sign in on another device, actually show the verification request on the 'complete security' screen.pull/21833/head
							parent
							
								
									7169a84449
								
							
						
					
					
						commit
						9e38c62791
					
				|  | @ -35,7 +35,18 @@ export default class CompleteSecurity extends React.Component { | |||
| 
 | ||||
|         this.state = { | ||||
|             phase: PHASE_INTRO, | ||||
|             verificationRequest: null, | ||||
|         }; | ||||
|         MatrixClientPeg.get().on("crypto.verification.request", this.onVerificationRequest); | ||||
|     } | ||||
| 
 | ||||
|     componentWillUnmount() { | ||||
|         if (this.state.verificationRequest) { | ||||
|             this.state.verificationRequest.off("change", this.onVerificationRequestChange); | ||||
|         } | ||||
|         if (MatrixClientPeg.get()) { | ||||
|             MatrixClientPeg.get().removeListener("crypto.verification.request", this.onVerificationRequest); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     onStartClick = async () => { | ||||
|  | @ -55,6 +66,27 @@ export default class CompleteSecurity extends React.Component { | |||
|         } | ||||
|     } | ||||
| 
 | ||||
|     onVerificationRequest = (request) => { | ||||
|         if (request.otherUserId !== MatrixClientPeg.get().getUserId()) return; | ||||
| 
 | ||||
|         if (this.state.verificationRequest) { | ||||
|             this.state.verificationRequest.off("change", this.onVerificationRequestChange); | ||||
|         } | ||||
|         request.on("change", this.onVerificationRequestChange); | ||||
|         this.setState({ | ||||
|             verificationRequest: request, | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     onVerificationRequestChange = () => { | ||||
|         if (this.state.verificationRequest.cancelled) { | ||||
|             this.state.verificationRequest.off("change", this.onVerificationRequestChange); | ||||
|             this.setState({ | ||||
|                 verificationRequest: null, | ||||
|             }); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     onSkipClick = () => { | ||||
|         this.setState({ | ||||
|             phase: PHASE_CONFIRM_SKIP, | ||||
|  | @ -87,7 +119,13 @@ export default class CompleteSecurity extends React.Component { | |||
|         let icon; | ||||
|         let title; | ||||
|         let body; | ||||
|         if (phase === PHASE_INTRO) { | ||||
| 
 | ||||
|         if (this.state.verificationRequest) { | ||||
|             const IncomingSasDialog = sdk.getComponent("views.dialogs.IncomingSasDialog"); | ||||
|             body = <IncomingSasDialog verifier={this.state.verificationRequest.verifier} | ||||
|                 onFinished={this.props.onFinished} | ||||
|             />; | ||||
|         } else if (phase === PHASE_INTRO) { | ||||
|             icon = <span className="mx_CompleteSecurity_headerIcon mx_E2EIcon_warning"></span>; | ||||
|             title = _t("Complete security"); | ||||
|             body = ( | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 David Baker
						David Baker