Skip to content

Commit 47383c3

Browse files
committed
version 0.2.7
- Planet, Team作成の時Error message表示 - MarkdownのCode blockの背景を薄い灰色にする - 権限なしのPlanetには - SignUpに規約/Privacyの外部リンク追加 - Loading画面追加 - Font 添付(Lato regular) - UserContainerでのTeam Label変更
1 parent 8dab6d5 commit 47383c3

17 files changed

Lines changed: 146 additions & 45 deletions

Lato-Regular.ttf

593 KB
Binary file not shown.

Lato-Regular.woff

302 KB
Binary file not shown.

Lato-Regular.woff2

178 KB
Binary file not shown.

browser/main/Components/PlanetCreateModal.jsx

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ module.exports = React.createClass({
2525
name: '',
2626
public: true
2727
},
28-
ownerName: ownerName
28+
ownerName: ownerName,
29+
error: null
2930
}
3031
},
3132
componentDidMount: function () {
@@ -42,7 +43,7 @@ module.exports = React.createClass({
4243
}
4344
},
4445
handleSubmit: function () {
45-
this.setState({errorMessage: null}, function () {
46+
this.setState({error: null}, function () {
4647
Hq.createPlanet(this.state.ownerName, this.state.planet)
4748
.then(function (res) {
4849
var planet = res.body
@@ -57,8 +58,21 @@ module.exports = React.createClass({
5758
}.bind(this))
5859
.catch(function (err) {
5960
console.error(err)
60-
if (err.status === 403) {
61-
this.setState({errorMessage: err.response.body.message})
61+
62+
if (err.status == null) return this.setState({error: {message: 'Check your network connection'}})
63+
64+
switch (err.status) {
65+
case 403:
66+
this.setState({error: err.response.body})
67+
break
68+
case 422:
69+
this.setState({error: {message: 'Planet name should be Alphanumeric with _, -'}})
70+
break
71+
case 409:
72+
this.setState({error: {message: 'The entered name already in use'}})
73+
break
74+
default:
75+
this.setState({error: {message: 'Undefined error please try again'}})
6276
}
6377
}.bind(this))
6478
})
@@ -86,7 +100,7 @@ module.exports = React.createClass({
86100
</select>
87101
</div>
88102

89-
{this.state.errorMessage != null ? (<p className='errorAlert'>{this.state.errorMessage}</p>) : null}
103+
{this.state.error != null ? (<p className='errorAlert'>{this.state.error.message != null ? this.state.error.message : 'Error message undefined'}</p>) : null}
90104

91105
<button onClick={this.handleSubmit} className='submitButton'>
92106
<i className='fa fa-check'/>

browser/main/Components/PlanetNavigator.jsx

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,20 @@ module.exports = React.createClass({
1010
mixins: [Modal, Navigation],
1111
propTypes: {
1212
planet: React.PropTypes.shape({
13-
name: React.PropTypes.string
13+
name: React.PropTypes.string,
14+
Owner: React.PropTypes.shape({
15+
id: React.PropTypes.number,
16+
userType: React.PropTypes.string
17+
})
1418
}),
1519
search: React.PropTypes.string,
1620
toggleCodeFilter: React.PropTypes.func,
17-
toggleNoteFilter: React.PropTypes.func
21+
toggleNoteFilter: React.PropTypes.func,
22+
currentUser: React.PropTypes.shape({
23+
id: React.PropTypes.number,
24+
userType: React.PropTypes.string,
25+
Teams: React.PropTypes.array
26+
})
1827
},
1928
getInitialState: function () {
2029
return {
@@ -24,6 +33,17 @@ module.exports = React.createClass({
2433
openLaunchModal: function () {
2534
this.openModal(LaunchModal, {planet: this.props.planet, transitionTo: this.transitionTo})
2635
},
36+
isMyPlanet: function () {
37+
if (this.props.currentUser == null) return false
38+
if (this.props.planet.Owner.userType === 'person' && this.props.planet.Owner.id !== this.props.currentUser.id) return false
39+
if (this.props.planet.Owner.userType === 'team' && !this.props.currentUser.Teams.some(function (team) {
40+
if (team.id === this.props.planet.Owner.id) return true
41+
return false
42+
}.bind(this))) return false
43+
44+
return true
45+
46+
},
2747
render: function () {
2848
var keywords = this.props.search.split(' ')
2949
var usingCodeFilter = keywords.some(function (keyword) {
@@ -37,9 +57,11 @@ module.exports = React.createClass({
3757

3858
return (
3959
<div className='PlanetNavigator'>
40-
<button onClick={this.openLaunchModal} className='launchButton btn-primary btn-block'>
41-
<i className='fa fa-rocket fa-fw'/> Launch
42-
</button>
60+
{this.isMyPlanet() ? (
61+
<button onClick={this.openLaunchModal} className='launchButton btn-primary btn-block'>
62+
<i className='fa fa-rocket fa-fw'/> Launch
63+
</button>
64+
) : null}
4365
<nav className='articleFilters'>
4466
<a className={usingCodeFilter && !usingNoteFilter ? 'active' : ''} onClick={this.props.toggleCodeFilter}>
4567
<i className='fa fa-code fa-fw'/> Codes

browser/main/Components/TeamCreateModal.jsx

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ module.exports = React.createClass({
2222
return {
2323
team: {
2424
name: ''
25-
}
25+
},
26+
error: null
2627
}
2728
},
2829
componentDidMount: function () {
@@ -39,29 +40,44 @@ module.exports = React.createClass({
3940
}
4041
},
4142
handleSubmit: function () {
42-
Hq.createTeam(this.props.user.name, this.state.team)
43-
.then(function (res) {
44-
var currentUser = JSON.parse(localStorage.getItem('currentUser'))
45-
var team = res.body
43+
this.setState({error: null}, function () {
44+
Hq.createTeam(this.props.user.name, this.state.team)
45+
.then(function (res) {
46+
var currentUser = JSON.parse(localStorage.getItem('currentUser'))
47+
var team = res.body
4648

47-
currentUser.Teams.push(team)
48-
localStorage.setItem('currentUser', JSON.stringify(currentUser))
49-
UserStore.Actions.update(currentUser)
49+
currentUser.Teams.push(team)
50+
localStorage.setItem('currentUser', JSON.stringify(currentUser))
51+
UserStore.Actions.update(currentUser)
5052

51-
if (this.props.transitionTo != null) {
52-
this.props.transitionTo('userHome', {userName: team.name})
53-
}
54-
this.props.close()
55-
}.bind(this))
56-
.catch(function (err) {
57-
console.error(err)
58-
})
53+
if (this.props.transitionTo != null) {
54+
this.props.transitionTo('userHome', {userName: team.name})
55+
}
56+
this.props.close()
57+
}.bind(this))
58+
.catch(function (err) {
59+
console.error(err)
60+
61+
if (err.status == null) return this.setState({error: {message: 'Check your network connection'}})
62+
63+
switch (err.status) {
64+
case 422:
65+
this.setState({error: {message: 'Team name should be Alphanumeric with _, -'}})
66+
break
67+
case 409:
68+
this.setState({error: {message: 'The entered name already in use'}})
69+
break
70+
default:
71+
this.setState({error: {message: 'Error message undefined'}})
72+
}
73+
}.bind(this))
74+
})
5975
},
6076
render: function () {
6177
return (
6278
<div className='TeamCreateModal modal'>
6379
<input ref='teamName' valueLink={this.linkState('team.name')} className='nameInput stripInput' placeholder='Create new team'/>
64-
80+
{this.state.error != null ? (<p className='errorAlert'>{this.state.error.message != null ? this.state.error.message : 'Unintended error occured'}</p>) : null}
6581
<button onClick={this.handleSubmit} className='submitButton'>
6682
<i className='fa fa-check'/>
6783
</button>

browser/main/Containers/PlanetContainer.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,8 @@ module.exports = React.createClass({
399399
showAll={this.showAll}
400400
toggleCodeFilter={this.toggleCodeFilter}
401401
toggleNoteFilter={this.toggleNoteFilter}
402-
planet={this.state.planet}/>
402+
planet={this.state.planet}
403+
currentUser={this.state.currentUser}/>
403404

404405
<PlanetArticleList showOnlyWithTag={this.applyTagFilter} ref='list' articles={filteredArticles}/>
405406

browser/main/Containers/SignupContainer.jsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@ var Link = ReactRouter.Link
66

77
var AuthFilter = require('../Mixins/AuthFilter')
88
var LinkedState = require('../Mixins/LinkedState')
9+
var ExternalLink = require('../Mixins/ExternalLink')
910
var Hq = require('../Services/Hq')
1011

1112
module.exports = React.createClass({
12-
mixins: [LinkedState, ReactRouter.Navigation, AuthFilter.OnlyGuest],
13+
mixins: [LinkedState, ReactRouter.Navigation, AuthFilter.OnlyGuest, ExternalLink],
1314
getInitialState: function () {
1415
return {
1516
user: {},
@@ -129,7 +130,7 @@ module.exports = React.createClass({
129130
</div>
130131
</form>
131132

132-
<p className='alert'>会員登録することで、当サイトの利用規約及びCookieの使用を含むデータに関するポリシーに同意するものとします</p>
133+
<p className='alert'>会員登録することで、<a onClick={this.openExternal} href='http://boostio.github.io/regulations.html'>当サイトの利用規約</a>及び<a onClick={this.openExternal} href='http://boostio.github.io/privacypolicies.html'>Cookieの使用を含むデータに関するポリシー</a>に同意するものとします</p>
133134
</div>
134135
)
135136
}

browser/main/Containers/UserContainer.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ module.exports = React.createClass({
318318
})
319319
return (
320320
<div key={'user-' + team.id} className='planetGroup'>
321-
<div className='planetGroupLabel'>{team.name}</div>
321+
<div className='planetGroupLabel'>{team.profileName} <small>@{team.name}</small></div>
322322
<ul className='planets'>
323323
{planets}
324324
{isOwner ? (<li><button onClick={this.openPlanetCreateModalWithOwnerName(team.name)} className='createPlanetButton'><i className='fa fa-plus-square-o'/> Create new planet</button></li>) : null}
@@ -353,7 +353,7 @@ module.exports = React.createClass({
353353
<div className='planetList'>
354354
<div className='planetLabel'>{planetCount} {planetCount > 1 ? 'Planets' : 'Planet'}</div>
355355
<div className='planetGroup'>
356-
<div className='planetGroupLabel'>{user.profileName}</div>
356+
<div className='planetGroupLabel'>{user.profileName} <small>@{user.name}</small></div>
357357
<ul className='planets'>
358358
{userPlanets}
359359
{isOwner ? (<li><button onClick={this.openPlanetCreateModalWithOwnerName(user.name)} className='createPlanetButton'><i className='fa fa-plus-square-o'/> Create new planet</button></li>) : null}

browser/main/index.electron.html

Lines changed: 44 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,52 @@
11
<!DOCTYPE html>
22
<html>
33
<head>
4-
<script>
5-
var version = require('remote').getGlobal('version')
6-
document.title = 'Boost ' + ((version == null || version.length === 0) ? 'DEV version' : 'v' + version)
7-
</script>
84
<meta charset="utf-8">
95
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"/>
106

117
<link rel="stylesheet" href="../../node_modules/font-awesome/css/font-awesome.min.css" media="screen" title="no title" charset="utf-8">
128
<link rel="shortcut icon" href="favicon.ico">
139

10+
<style>
11+
@font-face {
12+
font-family: 'Lato';
13+
src: url('../../Lato-Regular.woff2') format('woff2'), /* Modern Browsers */
14+
url('../../Lato-Regular.woff') format('woff'), /* Modern Browsers */
15+
url('../../Lato-Regular.ttf') format('truetype');
16+
font-style: normal;
17+
font-weight: 400;
18+
text-rendering: optimizeLegibility;
19+
}
20+
#loadingCover{
21+
position: absolute;
22+
top: 0;
23+
bottom: 0;
24+
left: 0;
25+
right: 0;
26+
box-sizing: border-box;
27+
padding: 65px 0;
28+
font-family: sans-serif;
29+
}
30+
#loadingCover img{
31+
display: block;
32+
margin: 0 auto;
33+
}
34+
#loadingCover .message{
35+
font-size: 2.5em;
36+
text-align: center;
37+
font-weight: 200;
38+
color: #404849;
39+
}
40+
</style>
41+
</head>
42+
<body>
43+
<div id="loadingCover">
44+
<img src="resources/favicon-230x230.png">
45+
<div class='message'>Loading...</div>
46+
</div>
47+
48+
<div id="content"></div>
49+
1450
<script>
1551
if (!Object.assign) {
1652
Object.defineProperty(Object, 'assign', {
@@ -45,13 +81,13 @@
4581
});
4682
}
4783

48-
require('electron-stylus')(__dirname + '/../styles/main/index.styl')
4984
</script>
50-
</head>
51-
<body>
52-
<div id="content"></div>
5385
<script src="../ace/src-min/ace.js"></script>
5486
<script>
87+
88+
var version = require('remote').getGlobal('version')
89+
document.title = 'Boost ' + ((version == null || version.length === 0) ? 'DEV version' : 'v' + version)
90+
require('electron-stylus')(__dirname + '/../styles/main/index.styl')
5591
require('node-jsx').install({ harmony: true, extension: '.jsx' })
5692
require('./index.jsx')
5793
</script>

0 commit comments

Comments
 (0)