summaryrefslogtreecommitdiffstats
path: root/webapp/components/get_public_link_modal.jsx
diff options
context:
space:
mode:
authorHarrison Healey <harrisonmhealey@gmail.com>2016-05-05 16:35:03 -0400
committerChristopher Speller <crspeller@gmail.com>2016-05-05 16:35:03 -0400
commitd2ddf40f56191c1770c3ca93d747a7f1b749f26c (patch)
tree9cd5d9ac9fc5b9da21fba8df9990c5f927801272 /webapp/components/get_public_link_modal.jsx
parent696ffb4745bec6306f88c5693b8ded89a47f5de7 (diff)
downloadchat-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.jsx80
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}
+ />
+ );
+ }
+}