Fix share dialog correctly

componentDidMount fires too late for this dialog, so we need to set ourselves up in the constructor.

Fixes https://github.com/vector-im/riot-web/issues/13068
This commit is contained in:
Travis Ralston 2020-04-07 15:22:38 -06:00
parent 7044eed82f
commit 900a05366e

View file

@ -70,9 +70,16 @@ export default class ShareDialog extends React.Component {
this.onCopyClick = this.onCopyClick.bind(this); this.onCopyClick = this.onCopyClick.bind(this);
this.onLinkSpecificEventCheckboxClick = this.onLinkSpecificEventCheckboxClick.bind(this); this.onLinkSpecificEventCheckboxClick = this.onLinkSpecificEventCheckboxClick.bind(this);
let permalinkCreator: RoomPermalinkCreator = null;
if (props.target instanceof Room) {
permalinkCreator = new RoomPermalinkCreator(props.target);
permalinkCreator.load();
}
this.state = { this.state = {
// MatrixEvent defaults to share linkSpecificEvent // MatrixEvent defaults to share linkSpecificEvent
linkSpecificEvent: this.props.target instanceof MatrixEvent, linkSpecificEvent: this.props.target instanceof MatrixEvent,
permalinkCreator,
}; };
this._link = createRef(); this._link = createRef();
@ -121,14 +128,6 @@ export default class ShareDialog extends React.Component {
}); });
} }
componentDidMount() {
if (this.props.target instanceof Room) {
const permalinkCreator = new RoomPermalinkCreator(this.props.target);
permalinkCreator.load();
this.setState({permalinkCreator});
}
}
componentWillUnmount() { componentWillUnmount() {
// if the Copied tooltip is open then get rid of it, there are ways to close the modal which wouldn't close // if the Copied tooltip is open then get rid of it, there are ways to close the modal which wouldn't close
// the tooltip otherwise, such as pressing Escape or clicking X really quickly // the tooltip otherwise, such as pressing Escape or clicking X really quickly