Skip to content

Commit 150afa7

Browse files
author
Anastasiya Kozaeva
committed
Fix messages for not existing user, empty languages
1 parent 640ba64 commit 150afa7

8 files changed

Lines changed: 63 additions & 19 deletions

File tree

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
'use strict';
2+
3+
import React from 'react';
4+
5+
/**
6+
* Empty user block contains message and links
7+
*/
8+
const EmptyUserBlock = React.createClass({
9+
10+
render() {
11+
return (
12+
<div className="empty-user-block">
13+
<div className="empty-user-block-content text-center">
14+
<h3>
15+
Github user {this.props.uname} doesn't exist
16+
</h3>
17+
{ this.props.info && this.props.info.login ?
18+
<p>You can visit <a href={this.props.info.login}>your page</a></p> :
19+
<p>You can visit <a href="/">home page</a></p>
20+
}
21+
</div>
22+
</div>
23+
);
24+
}
25+
});
26+
27+
export default EmptyUserBlock;

js/components/blocks/LanguagesBlock.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ const LanguagesBlock = React.createClass({
4747
const languagesStore = this.state.languagesStore;
4848
console.log('languagesStore', languagesStore);
4949
//
50-
let languages = 'There are no languages for now!';
50+
let languages = '';
5151
if (this.props.openUser && languagesStore && languagesStore.languages.length) {
5252
languages = _.map(languagesStore.languages, (language) => {
5353
let activeClass = _.includes(languagesStore.activeLanguages, language) ?
@@ -65,8 +65,9 @@ const LanguagesBlock = React.createClass({
6565
);
6666
});
6767
}
68-
else if (!this.props.openUser) {
69-
languages = <h3 className="text-center">This github user doesn't exist</h3>;
68+
else if (this.props.openUser && languagesStore &&
69+
!languagesStore.languages.length) {
70+
languages = 'There are no languages for now!';
7071
}
7172
//
7273
return (

js/components/blocks/LoadingBlock.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const LoadingBlock = React.createClass({
99

1010
render() {
1111
return (
12-
<div className="content-block">
12+
<div className="loading-block">
1313
<img
1414
src="build/img/animated_loading_icon.gif"
1515
className="center-block loading-icon"

js/components/blocks/TagsBlock.js

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,16 @@ const TagsBlock = React.createClass({
9393
else if (!isCurrentUser && isTagsListEmpty) {
9494
tags = <p>
9595
Unfortunately this user doesn't have any tags on githubify.
96-
Let him/her know about it on email:&nbsp;
97-
<a
98-
href={'mailto:' + this.props.openUser.email + '?subject=githubify.me'}
99-
>
100-
{this.props.openUser.email}
101-
</a>
96+
{ this.props.openUser.email ?
97+
<span>Let him/her know about it on email:&nbsp;
98+
<a
99+
href={'mailto:' + this.props.openUser.email + '?subject=githubify.me'}
100+
>
101+
{this.props.openUser.email}
102+
</a>
103+
</span> :
104+
null
105+
}
102106
</p>;
103107
}
104108
if (tagsList && tagsList.length && this.props.openUser) {

js/components/blocks/UserBlock.js

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,12 @@ import { Row, Col } from 'react-bootstrap';
88
import FontAwesome from 'react-fontawesome';
99
//
1010
import ShareBlock from './ShareBlock';
11-
//
12-
import UserActions from '../../actions/UserActions';
1311

1412
/**
1513
* UserBlock contains user info
1614
*/
1715
const UserBlock = React.createClass({
1816

19-
componentDidMount() {
20-
UserActions.getUser(this.props.uname);
21-
},
22-
2317
render() {
2418
const openUser = this.props.openUser;
2519
//

js/pages/MainPage.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { Grid, Row, Col } from 'react-bootstrap';
88
//
99
import LoginForm from '../components/blocks/LoginForm';
1010
import LoadingBlock from '../components/blocks/LoadingBlock';
11+
import EmptyUserBlock from '../components/blocks/EmptyUserBlock';
1112
import UserBlock from '../components/blocks/UserBlock';
1213
import ReposBlock from '../components/blocks/ReposBlock';
1314
import TagsBlock from '../components/blocks/TagsBlock';
@@ -28,6 +29,7 @@ const MainPage = React.createClass({
2829

2930
componentDidMount() {
3031
UserActions.isLoggedIn();
32+
UserActions.getUser(this.props.params.uname);
3133
},
3234

3335
render() {
@@ -39,7 +41,8 @@ const MainPage = React.createClass({
3941
<Row>
4042
<Col xs={12} md={12} className="content-block">
4143
{
42-
userStore ?
44+
userStore && userStore.openUser ?
45+
userStore.openUser.isActive ?
4346
[
4447
<Row className="user-info" key="block1">
4548
<div className="container">
@@ -95,7 +98,11 @@ const MainPage = React.createClass({
9598
</div>
9699
</Row>
97100
] :
98-
null
101+
<EmptyUserBlock
102+
info={userStore.info}
103+
uname={this.props.params.uname}
104+
/> :
105+
<LoadingBlock />
99106
}
100107
</Col>
101108
</Row>

js/stores/UserStore.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,16 @@ const UserStore = Reflux.createStore({
7676
.end(function(err, res) {
7777
if (err != null) {
7878
console.error(requestUrl, res.status, err.toString());
79-
_this.user.openUser = false;
79+
_this.user.openUser = {
80+
isActive: false
81+
};
8082
_this.trigger(_this.user);
8183
return;
8284
}
8385
console.log('success GET-request: ' + requestUrl, res);
8486
//
8587
_this.user.openUser = res.body;
88+
_this.user.openUser.isActive = true;
8689
_this.trigger(_this.user);
8790
ReposActions.getRepos(username, 1, 'all');
8891
FilterActions.getFilters();

less/components.less

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,3 +270,11 @@
270270
.repo-owner-name {
271271
cursor: pointer;
272272
}
273+
274+
.loading-block, .empty-user-block {
275+
height: 100vh;
276+
}
277+
278+
.loading-icon, .empty-user-block-content {
279+
.vertical-align();
280+
}

0 commit comments

Comments
 (0)