From 803366872ae1ab94b36d6dff07f56e65f8bbc0b3 Mon Sep 17 00:00:00 2001 From: Yuya Ochiai Date: Sun, 29 Jan 2017 21:40:20 +0900 Subject: [PATCH] Open the corresponding tab when a server is clicked in settings page --- src/browser/components/MainPage.jsx | 5 +++-- src/browser/components/SettingsPage.jsx | 6 ++++-- src/browser/components/TeamList.jsx | 4 +++- src/browser/components/TeamListItem.jsx | 9 +++++++-- src/browser/index.jsx | 7 +++++++ 5 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/browser/components/MainPage.jsx b/src/browser/components/MainPage.jsx index 6695c2be..84efa920 100644 --- a/src/browser/components/MainPage.jsx +++ b/src/browser/components/MainPage.jsx @@ -39,12 +39,13 @@ const MainPage = React.createClass({ disablewebsecurity: React.PropTypes.bool.isRequired, onUnreadCountChange: React.PropTypes.func.isRequired, teams: React.PropTypes.array.isRequired, - onTeamConfigChange: React.PropTypes.func.isRequired + onTeamConfigChange: React.PropTypes.func.isRequired, + initialIndex: React.PropTypes.number.isRequired }, getInitialState() { return { - key: 0, + key: this.props.initialIndex, unreadCounts: new Array(this.props.teams.length), mentionCounts: new Array(this.props.teams.length), unreadAtActive: new Array(this.props.teams.length), diff --git a/src/browser/components/SettingsPage.jsx b/src/browser/components/SettingsPage.jsx index 993b719f..a1cc125a 100644 --- a/src/browser/components/SettingsPage.jsx +++ b/src/browser/components/SettingsPage.jsx @@ -14,8 +14,9 @@ const appLauncher = new AutoLaunch({ isHidden: true }); -function backToIndex() { - remote.getCurrentWindow().loadURL('file://' + __dirname + '/index.html'); +function backToIndex(index) { + const target = typeof index === 'undefined' ? 0 : index; + remote.getCurrentWindow().loadURL(`file://${__dirname}/index.html?index=${target}`); } const SettingsPage = React.createClass({ @@ -182,6 +183,7 @@ const SettingsPage = React.createClass({ onTeamsChange={this.handleTeamsChange} updateTeam={this.updateTeam} addServer={this.addServer} + onTeamClick={backToIndex} /> diff --git a/src/browser/components/TeamList.jsx b/src/browser/components/TeamList.jsx index ddad0bb7..4a08f712 100644 --- a/src/browser/components/TeamList.jsx +++ b/src/browser/components/TeamList.jsx @@ -12,7 +12,8 @@ const TeamList = React.createClass({ addServer: React.PropTypes.func, updateTeam: React.PropTypes.func, toggleAddTeamForm: React.PropTypes.func, - setAddTeamFormVisibility: React.PropTypes.func + setAddTeamFormVisibility: React.PropTypes.func, + onTeamClick: React.PropTypes.func }, getInitialState() { @@ -92,6 +93,7 @@ const TeamList = React.createClass({ url={team.url} onTeamRemove={handleTeamRemove} onTeamEditing={handleTeamEditing} + onTeamClick={this.props.onTeamClick.bind(this, i)} /> ); }); diff --git a/src/browser/components/TeamListItem.jsx b/src/browser/components/TeamListItem.jsx index 7a5223ae..024d82bd 100644 --- a/src/browser/components/TeamListItem.jsx +++ b/src/browser/components/TeamListItem.jsx @@ -16,12 +16,16 @@ class TeamListItem extends React.Component { render() { var style = { left: { - display: 'inline-block' + display: 'inline-block', + cursor: 'pointer' } }; return (
-
+

{ this.props.name }

{ this.props.url } @@ -47,6 +51,7 @@ TeamListItem.propTypes = { name: React.PropTypes.string, onTeamEditing: React.PropTypes.func, onTeamRemove: React.PropTypes.func, + onTeamClick: React.PropTypes.func, url: React.PropTypes.string }; diff --git a/src/browser/index.jsx b/src/browser/index.jsx index 18a7476a..d6fa3759 100644 --- a/src/browser/index.jsx +++ b/src/browser/index.jsx @@ -10,6 +10,9 @@ const {remote, ipcRenderer} = require('electron'); const MainPage = require('./components/MainPage.jsx'); const AppConfig = require('./config/AppConfig.js'); +const url = require('url'); + +const settings = require('../common/settings'); const badge = require('./js/badge'); remote.getCurrentWindow().removeAllListeners('focus'); @@ -86,10 +89,14 @@ function teamConfigChange(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( ,