diff options
author | Harrison Healey <harrisonmhealey@gmail.com> | 2016-05-05 16:35:03 -0400 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2016-05-05 16:35:03 -0400 |
commit | d2ddf40f56191c1770c3ca93d747a7f1b749f26c (patch) | |
tree | 9cd5d9ac9fc5b9da21fba8df9990c5f927801272 /webapp/components/get_public_link_modal.jsx | |
parent | 696ffb4745bec6306f88c5693b8ded89a47f5de7 (diff) | |
download | chat-d2ddf40f56191c1770c3ca93d747a7f1b749f26c.tar.gz chat-d2ddf40f56191c1770c3ca93d747a7f1b749f26c.tar.bz2 chat-d2ddf40f56191c1770c3ca93d747a7f1b749f26c.zip |
PLT-2600/PLT-2770 Added Get Public Link modal and added new API for public file links (#2892)
* Switched public file links to use a GetLinkModal
* Separated getFile and the new getPublicFile api calls
Diffstat (limited to 'webapp/components/get_public_link_modal.jsx')
-rw-r--r-- | webapp/components/get_public_link_modal.jsx | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/webapp/components/get_public_link_modal.jsx b/webapp/components/get_public_link_modal.jsx new file mode 100644 index 000000000..7f83651cd --- /dev/null +++ b/webapp/components/get_public_link_modal.jsx @@ -0,0 +1,80 @@ +// 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, + channelId: '', + userId: '', + filename: '', + 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.channelId, this.state.userId, this.state.filename, 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, + channelId: args.channelId, + userId: args.userId, + filename: args.filename, + link: '' + }); + } + + hide() { + this.setState({ + show: false + }); + } + + render() { + return ( + <GetLinkModal + show={this.state.show} + onHide={this.hide} + title={Utils.localizeMessage('get_public_link_modal.title', 'Copy Public Link')} + helpText={Utils.localizeMessage('get_public_link_modal.help', 'The link below allows anyone to see this file without being registered on this server.')} + link={this.state.link} + /> + ); + } +} |