1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
// See License.txt for license information.
var utils = require('../utils/utils.jsx');
var SettingUpload = require('./setting_upload.jsx');
module.exports = React.createClass({
displayName: 'Import Tab',
getInitialState: function() {
return {status: 'ready', link: ''};
},
onImportFailure: function() {
this.setState({status: 'fail', link: ''});
},
onImportSuccess: function(data) {
this.setState({status: 'done', link: 'data:application/octet-stream;charset=utf-8,' + encodeURIComponent(data)});
},
doImportSlack: function(file) {
this.setState({status: 'in-progress', link: ''});
utils.importSlack(file, this.onImportSuccess, this.onImportFailure);
},
render: function() {
var uploadSection = (
<SettingUpload
title='Import from Slack'
submit={this.doImportSlack}
fileTypesAccepted='.zip'/>
);
var messageSection;
switch (this.state.status) {
case 'ready':
messageSection = '';
break;
case 'in-progress':
messageSection = (
<p>Importing...</p>
);
break;
case 'done':
messageSection = (
<p>Import sucessfull: <a href={this.state.link} download='MattermostImportSummery.txt'>View Summery</a></p>
);
break;
case 'fail':
messageSection = (
<p>Import failure: <a href={this.state.link} download='MattermostImportSummery.txt'>View Summery</a></p>
);
break;
}
return (
<div>
<div className='modal-header'>
<button type='button' className='close' data-dismiss='modal' aria-label='Close'><span aria-hidden='true'>×</span></button>
<h4 className='modal-title' ref='title'><i className='modal-back'></i>Import</h4>
</div>
<div ref='wrapper' className='user-settings'>
<h3 className='tab-header'>Import</h3>
<div className='divider-dark first'/>
{uploadSection}
{messageSection}
<div className='divider-dark'/>
</div>
</div>
);
}
});
|