// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import React from 'react'; import * as AsyncClient from 'utils/async_client.jsx'; import Constants from 'utils/constants.jsx'; import ModalStore from 'stores/modal_store.jsx'; import PureRenderMixin from 'react-addons-pure-render-mixin'; import * as Utils from 'utils/utils.jsx'; import GetLinkModal from './get_link_modal.jsx'; export default class GetPublicLinkModal extends React.Component { constructor(props) { super(props); this.handlePublicLink = this.handlePublicLink.bind(this); this.handleToggle = this.handleToggle.bind(this); this.hide = this.hide.bind(this); this.shouldComponentUpdate = PureRenderMixin.shouldComponentUpdate.bind(this); this.state = { show: false, fileId: '', link: '' }; } componentDidMount() { ModalStore.addModalListener(Constants.ActionTypes.TOGGLE_GET_PUBLIC_LINK_MODAL, this.handleToggle); } componentDidUpdate(prevProps, prevState) { if (this.state.show && !prevState.show) { AsyncClient.getPublicLink(this.state.fileId, this.handlePublicLink); } } componentWillUnmount() { ModalStore.removeModalListener(Constants.ActionTypes.TOGGLE_GET_PUBLIC_LINK_MODAL, this.handleToggle); } handlePublicLink(link) { this.setState({ link }); } handleToggle(value, args) { this.setState({ show: value, fileId: args.fileId, link: '' }); } hide() { this.setState({ show: false }); } render() { return ( ); } }