Open the corresponding tab when a server is clicked in settings page

This commit is contained in:
Yuya Ochiai 2017-01-29 21:40:20 +09:00
parent e4d1ab2938
commit 803366872a
5 changed files with 24 additions and 7 deletions

View file

@ -39,12 +39,13 @@ const MainPage = React.createClass({
disablewebsecurity: React.PropTypes.bool.isRequired, disablewebsecurity: React.PropTypes.bool.isRequired,
onUnreadCountChange: React.PropTypes.func.isRequired, onUnreadCountChange: React.PropTypes.func.isRequired,
teams: React.PropTypes.array.isRequired, teams: React.PropTypes.array.isRequired,
onTeamConfigChange: React.PropTypes.func.isRequired onTeamConfigChange: React.PropTypes.func.isRequired,
initialIndex: React.PropTypes.number.isRequired
}, },
getInitialState() { getInitialState() {
return { return {
key: 0, key: this.props.initialIndex,
unreadCounts: new Array(this.props.teams.length), unreadCounts: new Array(this.props.teams.length),
mentionCounts: new Array(this.props.teams.length), mentionCounts: new Array(this.props.teams.length),
unreadAtActive: new Array(this.props.teams.length), unreadAtActive: new Array(this.props.teams.length),

View file

@ -14,8 +14,9 @@ const appLauncher = new AutoLaunch({
isHidden: true isHidden: true
}); });
function backToIndex() { function backToIndex(index) {
remote.getCurrentWindow().loadURL('file://' + __dirname + '/index.html'); const target = typeof index === 'undefined' ? 0 : index;
remote.getCurrentWindow().loadURL(`file://${__dirname}/index.html?index=${target}`);
} }
const SettingsPage = React.createClass({ const SettingsPage = React.createClass({
@ -182,6 +183,7 @@ const SettingsPage = React.createClass({
onTeamsChange={this.handleTeamsChange} onTeamsChange={this.handleTeamsChange}
updateTeam={this.updateTeam} updateTeam={this.updateTeam}
addServer={this.addServer} addServer={this.addServer}
onTeamClick={backToIndex}
/> />
</Col> </Col>
</Row> </Row>

View file

@ -12,7 +12,8 @@ const TeamList = React.createClass({
addServer: React.PropTypes.func, addServer: React.PropTypes.func,
updateTeam: React.PropTypes.func, updateTeam: React.PropTypes.func,
toggleAddTeamForm: React.PropTypes.func, toggleAddTeamForm: React.PropTypes.func,
setAddTeamFormVisibility: React.PropTypes.func setAddTeamFormVisibility: React.PropTypes.func,
onTeamClick: React.PropTypes.func
}, },
getInitialState() { getInitialState() {
@ -92,6 +93,7 @@ const TeamList = React.createClass({
url={team.url} url={team.url}
onTeamRemove={handleTeamRemove} onTeamRemove={handleTeamRemove}
onTeamEditing={handleTeamEditing} onTeamEditing={handleTeamEditing}
onTeamClick={this.props.onTeamClick.bind(this, i)}
/> />
); );
}); });

View file

@ -16,12 +16,16 @@ class TeamListItem extends React.Component {
render() { render() {
var style = { var style = {
left: { left: {
display: 'inline-block' display: 'inline-block',
cursor: 'pointer'
} }
}; };
return ( return (
<div className='teamListItem list-group-item'> <div className='teamListItem list-group-item'>
<div style={style.left}> <div
style={style.left}
onClick={this.props.onTeamClick}
>
<h4 className='list-group-item-heading'>{ this.props.name }</h4> <h4 className='list-group-item-heading'>{ this.props.name }</h4>
<p className='list-group-item-text'> <p className='list-group-item-text'>
{ this.props.url } { this.props.url }
@ -47,6 +51,7 @@ TeamListItem.propTypes = {
name: React.PropTypes.string, name: React.PropTypes.string,
onTeamEditing: React.PropTypes.func, onTeamEditing: React.PropTypes.func,
onTeamRemove: React.PropTypes.func, onTeamRemove: React.PropTypes.func,
onTeamClick: React.PropTypes.func,
url: React.PropTypes.string url: React.PropTypes.string
}; };

View file

@ -10,6 +10,9 @@ const {remote, ipcRenderer} = require('electron');
const MainPage = require('./components/MainPage.jsx'); const MainPage = require('./components/MainPage.jsx');
const AppConfig = require('./config/AppConfig.js'); const AppConfig = require('./config/AppConfig.js');
const url = require('url');
const settings = require('../common/settings');
const badge = require('./js/badge'); const badge = require('./js/badge');
remote.getCurrentWindow().removeAllListeners('focus'); remote.getCurrentWindow().removeAllListeners('focus');
@ -86,10 +89,14 @@ function teamConfigChange(teams) {
AppConfig.set('teams', teams); AppConfig.set('teams', teams);
} }
const parsedURL = url.parse(window.location.href, true);
const initialIndex = parsedURL.query.index ? parseInt(parsedURL.query.index, 10) : 0;
ReactDOM.render( ReactDOM.render(
<MainPage <MainPage
disablewebsecurity={AppConfig.data.disablewebsecurity} disablewebsecurity={AppConfig.data.disablewebsecurity}
teams={AppConfig.data.teams} teams={AppConfig.data.teams}
initialIndex={initialIndex}
onUnreadCountChange={showUnreadBadge} onUnreadCountChange={showUnreadBadge}
onTeamConfigChange={teamConfigChange} onTeamConfigChange={teamConfigChange}
/>, />,