display loading screen when changing team (#5325)

* display loading screen when changing team

* fix lint error
Этот коммит содержится в:
Mika Andrianarijaona
2017-02-08 19:40:32 +03:00
коммит произвёл Joram Wilander
родитель 829f3cce95
Коммит 11e0a7daa2
2 изменённых файлов: 32 добавлений и 9 удалений

Просмотреть файл

@@ -70,7 +70,9 @@ export default class ChannelView extends React.Component {
<ChannelHeader <ChannelHeader
channelId={this.state.channelId} channelId={this.state.channelId}
/> />
<PostViewCache/> <PostViewCache
channelId={this.state.channelId}
/>
<div <div
className='post-create__container' className='post-create__container'
id='post-create' id='post-create'

Просмотреть файл

@@ -2,6 +2,7 @@
// See License.txt for license information // See License.txt for license information
import PostViewController from './post_view_controller.jsx'; import PostViewController from './post_view_controller.jsx';
import LoadingScreen from 'components/loading_screen.jsx';
import ChannelStore from 'stores/channel_store.jsx'; import ChannelStore from 'stores/channel_store.jsx';
import UserStore from 'stores/user_store.jsx'; import UserStore from 'stores/user_store.jsx';
@@ -67,25 +68,45 @@ export default class PostViewCache extends React.Component {
}); });
} }
shouldComponentUpdate(nextProps) {
return Boolean(nextProps.channelId);
}
render() { render() {
const channels = this.state.channels; const channels = this.state.channels;
const currentChannelId = this.state.currentChannelId; const currentChannelId = this.state.currentChannelId;
const valid = this.props.channelId === this.state.currentChannelId;
const postViews = []; const postViews = [];
for (let i = 0; i < channels.length; i++) { let content;
postViews.push(
<PostViewController if (valid) {
key={'postviewcontroller_' + channels[i].id} for (let i = 0; i < channels.length; i++) {
channel={channels[i]} postViews.push(
active={channels[i].id === currentChannelId} <PostViewController
key={'postviewcontroller_' + channels[i].id}
channel={channels[i]}
active={channels[i].id === currentChannelId}
/>
);
}
content = postViews;
} else {
content = (
<LoadingScreen
position='absolute'
key='loading'
/> />
); );
} }
return ( return (
<div id='post-list'> <div id='post-list'>
{postViews} {content}
</div> </div>
); );
} }
} }
PostViewCache.propTypes = {
channelId: React.PropTypes.string.isRequired
};