Fix verification toast timeouts to not stick at 0

Fixes: https://github.com/vector-im/riot-web/issues/12038
pull/21833/head
Zoe 2020-01-30 15:31:20 +00:00
parent 767015d19d
commit 7e98ea79d2
1 changed files with 9 additions and 6 deletions

View File

@ -33,11 +33,13 @@ export default class VerificationRequestToast extends React.PureComponent {
componentDidMount() { componentDidMount() {
const {request} = this.props; const {request} = this.props;
if (request.timeout && request.timeout > 0) {
this._intervalHandle = setInterval(() => { this._intervalHandle = setInterval(() => {
let {counter} = this.state; let {counter} = this.state;
counter = Math.max(0, counter - 1); counter = Math.max(0, counter - 1);
this.setState({counter}); this.setState({counter});
}, 1000); }, 1000);
}
request.on("change", this._checkRequestIsPending); request.on("change", this._checkRequestIsPending);
// We should probably have a separate class managing the active verification toasts, // We should probably have a separate class managing the active verification toasts,
// rather than monitoring this in the toast component itself, since we'll get problems // rather than monitoring this in the toast component itself, since we'll get problems
@ -120,10 +122,11 @@ export default class VerificationRequestToast extends React.PureComponent {
nameLabel = _t("%(name)s (%(userId)s)", {name: user.displayName, userId}); nameLabel = _t("%(name)s (%(userId)s)", {name: user.displayName, userId});
} }
} }
const declineLabel = this.state.counter == 0 ? _t("Decline") : _t("Decline (%(counter)s)", {counter: this.state.counter});
return (<div> return (<div>
<div className="mx_Toast_description">{nameLabel}</div> <div className="mx_Toast_description">{nameLabel}</div>
<div className="mx_Toast_buttons" aria-live="off"> <div className="mx_Toast_buttons" aria-live="off">
<FormButton label={_t("Decline (%(counter)s)", {counter: this.state.counter})} kind="danger" onClick={this.cancel} /> <FormButton label={declineLabel} kind="danger" onClick={this.cancel} />
<FormButton label={_t("Accept")} onClick={this.accept} /> <FormButton label={_t("Accept")} onClick={this.accept} />
</div> </div>
</div>); </div>);