From af0597e0c89d6d946abef76f6236c4a4a75299ac Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 9 Feb 2016 16:55:03 +0000 Subject: [PATCH] Joining a room can take a while. Show a spinner otherwise we'll end up in multiple join city. --- src/components/structures/RoomView.js | 16 ++++++++++++---- src/components/views/rooms/RoomPreviewBar.js | 9 +++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index a72ee07e24..cd5e1a84a6 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -1464,7 +1464,9 @@ module.exports = React.createClass({
+ canJoin={ true } canPreview={ false } + spinner={this.state.joining} + />
{joinErrorText}
@@ -1507,7 +1509,9 @@ module.exports = React.createClass({ + canJoin={ true } canPreview={ false } + spinner={this.state.joining} + />
{joinErrorText}
{rejectErrorText}
@@ -1573,13 +1577,17 @@ module.exports = React.createClass({ else if (this.state.guestsCanJoin && MatrixClientPeg.get().isGuest() && (!myMember || myMember.membership !== "join")) { aux = ( - + ); } else if (this.state.canPeek && (!myMember || myMember.membership !== "join")) { aux = ( - + ); } diff --git a/src/components/views/rooms/RoomPreviewBar.js b/src/components/views/rooms/RoomPreviewBar.js index 52e6639f13..eb57a0d913 100644 --- a/src/components/views/rooms/RoomPreviewBar.js +++ b/src/components/views/rooms/RoomPreviewBar.js @@ -17,6 +17,7 @@ limitations under the License. 'use strict'; var React = require('react'); +var sdk = require('../../../index'); module.exports = React.createClass({ displayName: 'RoomPreviewBar', @@ -27,6 +28,7 @@ module.exports = React.createClass({ inviterName: React.PropTypes.string, canJoin: React.PropTypes.bool, canPreview: React.PropTypes.bool, + spinner: React.PropTypes.bool, }, getDefaultProps: function() { @@ -40,6 +42,13 @@ module.exports = React.createClass({ render: function() { var joinBlock, previewBlock; + if (this.props.spinner) { + var Spinner = sdk.getComponent("elements.Spinner"); + return (
+ +
); + } + if (this.props.inviterName) { joinBlock = (