import { Component } from "inferno"; import { i18n } from "../../../shared/i18next"; export interface IPromptProps { when: boolean; } export default class NavigationPrompt extends Component { public unblock; public enable() { if (this.unblock) { this.unblock(); } this.unblock = this.context.router.history.block(tx => { if (window.confirm(i18n.t("block_leaving"))) { this.unblock(); tx.retry(); } }); } public disable() { if (this.unblock) { this.unblock(); this.unblock = null; } } public componentWillMount() { if (this.props.when) { this.enable(); } } public componentWillReceiveProps(nextProps: IPromptProps) { if (nextProps.when) { if (!this.props.when) { this.enable(); } } else { this.disable(); } } public componentWillUnmount() { this.disable(); } public render() { return null; } }