From 1b7fd6a00b8212897d9c42633ee254e453154e68 Mon Sep 17 00:00:00 2001 From: or-else Date: Sat, 9 Jun 2018 21:14:12 +0300 Subject: [PATCH] file uploads mostly work now --- css/base.css | 1 + index.html | 39 ++++++++++++++++++++++++++++++++------- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/css/base.css b/css/base.css index 01a79c7e..7e79a47f 100644 --- a/css/base.css +++ b/css/base.css @@ -1713,6 +1713,7 @@ ul.tabbar li.active > a:after { padding: 0.15rem; margin: 0.35rem; width: 6rem; + line-height: 0; border-radius: 0.1rem; background-color: #cfd8dc; } diff --git a/index.html b/index.html index bdf8797d..7131ffbe 100644 --- a/index.html +++ b/index.html @@ -704,7 +704,11 @@ return (
- close cancel + {this.props.progress < 0.999 ? + close cancel + : + finishing... + }
); } @@ -3212,7 +3216,8 @@ var attachments = [ + uploader={true} filename={this.props.filename} size={this.props.size} + progress={this.props.progress} onCancelUpload={this.props.onCancelUpload} /> ]; return ( @@ -3287,7 +3292,7 @@
{filename} {size}
{this.props.uploader ? - + :
file_download save @@ -3320,7 +3325,9 @@ // Scroll last message into view on component update e.g. on message received. componentDidUpdate: function(prevProps, prevState) { if (this.messagesScroller && - (prevState.title != this.state.title || prevState.messages.length != this.state.messages.length)) { + (prevState.title != this.state.title || + prevState.messages.length != this.state.messages.length || + prevState.uploadFile != this.state.uploadFile)) { this.messagesScroller.scrollTop = this.messagesScroller.scrollHeight - this.state.scrollPosition; } }, @@ -3390,6 +3397,8 @@ topic: props.topic, imagePreview: null, scrollPosition: 0, + uploadFile: null, + uploadProgress: 0, }); tryToResubscribe = true; @@ -3583,8 +3592,16 @@ this.props.onHideMessagesView(); }, - handleStartUpload: function(filename, size) { - this.setState({uploadFile: {name: filename, size: size}, uploadProgress: 0}); + handleStartUpload: function(filename, size, uploader) { + this.setState({ + uploadFile: { + name: filename, + size: size, + uploader: uploader, + }, + uploadProgress: 0, + scrollPosition: 0, + }); }, handleFinishUpload: function(success) { this.setState({uploadFile: null}); @@ -3592,6 +3609,12 @@ handleUploadProgress: function(progress) { this.setState({uploadProgress: progress}); }, + handleCancelUpload: function() { + if (this.state.uploadFile && this.state.uploadFile.uploader) { + this.state.uploadFile.uploader.cancel(); + } + this.setState({uploadFile: null}); + }, render: function() { var component = null; @@ -3665,6 +3688,7 @@ ); @@ -3844,8 +3868,9 @@ var uploader = Tinode.getFileUploader(); if (!uploader) { this.props.onError("Cannot initiate file upload."); + return; } - this.props.onUploadStart(file.name, file.size); + this.props.onUploadStart(file.name, file.size, uploader); uploader.upload(file, function(progress) { instance.props.onUploadProgress(progress); }).then(function(ctrl) {