Skip to content
This repository was archived by the owner on Dec 15, 2022. It is now read-only.

Commit 3e475dd

Browse files
committed
Disable project selection dropdown when using active panel for project
1 parent 5680f58 commit 3e475dd

23 files changed

+181
-18
lines changed

lib/containers/git-tab-container.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ const DEFAULT_REPO_DATA = {
2525

2626
export default class GitTabContainer extends React.Component {
2727
static propTypes = {
28+
config: PropTypes.object.isRequired,
2829
repository: PropTypes.object.isRequired,
2930
}
3031

lib/containers/github-tab-container.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export default class GitHubTabContainer extends React.Component {
1717
repository: PropTypes.object,
1818
loginModel: GithubLoginModelPropType.isRequired,
1919
rootHolder: RefHolderPropType.isRequired,
20+
config: PropTypes.object.isRequired,
2021

2122
changeWorkingDirectory: PropTypes.func.isRequired,
2223
onDidChangeWorkDirs: PropTypes.func.isRequired,

lib/containers/github-tab-header-container.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import GithubTabHeaderController from '../controllers/github-tab-header-controll
1111

1212
export default class GithubTabHeaderContainer extends React.Component {
1313
static propTypes = {
14+
config: PropTypes.object.isRequired,
15+
1416
// Connection
1517
loginModel: PropTypes.object.isRequired,
1618
endpoint: EndpointPropType.isRequired,
@@ -74,6 +76,7 @@ export default class GithubTabHeaderContainer extends React.Component {
7476

7577
return (
7678
<GithubTabHeaderController
79+
config={this.props.config}
7780
user={new Author(email, name, login, false, avatarUrl)}
7881

7982
// Workspace
@@ -90,6 +93,7 @@ export default class GithubTabHeaderContainer extends React.Component {
9093
renderNoResult() {
9194
return (
9295
<GithubTabHeaderController
96+
config={this.props.config}
9397
user={nullAuthor}
9498

9599
// Workspace

lib/controllers/git-tab-header-controller.js

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import GitTabHeaderView from '../views/git-tab-header-view';
66

77
export default class GitTabHeaderController extends React.Component {
88
static propTypes = {
9+
config: PropTypes.object.isRequired,
910
getCommitter: PropTypes.func.isRequired,
1011

1112
// Workspace
@@ -21,7 +22,11 @@ export default class GitTabHeaderController extends React.Component {
2122
constructor(props) {
2223
super(props);
2324
this._isMounted = false;
24-
this.state = {currentWorkDirs: [], committer: nullAuthor};
25+
this.state = {
26+
currentWorkDirs: [],
27+
committer: nullAuthor,
28+
disableProjectSelection: this.props.config.get('github.useProjectFromActivePanel'),
29+
};
2530
this.disposable = new CompositeDisposable();
2631
}
2732

@@ -33,8 +38,11 @@ export default class GitTabHeaderController extends React.Component {
3338

3439
componentDidMount() {
3540
this._isMounted = true;
36-
this.disposable.add(this.props.onDidChangeWorkDirs(this.resetWorkDirs));
37-
this.disposable.add(this.props.onDidUpdateRepo(this.updateCommitter));
41+
this.disposable.add(
42+
this.props.onDidChangeWorkDirs(this.resetWorkDirs),
43+
this.props.onDidUpdateRepo(this.updateCommitter),
44+
this.props.config.onDidChange('github.useProjectFromActivePanel', this.handleUseProjectFromActivePanelChange),
45+
);
3846
this.updateCommitter();
3947
}
4048

@@ -47,6 +55,7 @@ export default class GitTabHeaderController extends React.Component {
4755
this.disposable = new CompositeDisposable();
4856
this.disposable.add(this.props.onDidChangeWorkDirs(this.resetWorkDirs));
4957
this.disposable.add(this.props.onDidUpdateRepo(this.updateCommitter));
58+
this.disposable.add(this.props.config.onDidChange('github.useProjectFromActivePanel', this.handleUseProjectFromActivePanelChange));
5059
}
5160
if (prevProps.getCommitter !== this.props.getCommitter) {
5261
this.updateCommitter();
@@ -56,6 +65,7 @@ export default class GitTabHeaderController extends React.Component {
5665
render() {
5766
return (
5867
<GitTabHeaderView
68+
disableProjectSelection={this.state.disableProjectSelection}
5969
committer={this.state.committer}
6070

6171
// Workspace
@@ -74,6 +84,10 @@ export default class GitTabHeaderController extends React.Component {
7484
}));
7585
}
7686

87+
handleUseProjectFromActivePanelChange = ({newValue}) => {
88+
this.setState({disableProjectSelection: newValue});
89+
}
90+
7791
updateCommitter = async () => {
7892
const committer = await this.props.getCommitter() || nullAuthor;
7993
if (this._isMounted) {

lib/controllers/github-tab-controller.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export default class GitHubTabController extends React.Component {
1212
refresher: RefresherPropType.isRequired,
1313
loginModel: GithubLoginModelPropType.isRequired,
1414
rootHolder: RefHolderPropType.isRequired,
15+
config: PropTypes.object.isRequired,
1516

1617
workingDirectory: PropTypes.string,
1718
repository: PropTypes.object.isRequired,
@@ -52,6 +53,7 @@ export default class GitHubTabController extends React.Component {
5253
workspace={this.props.workspace}
5354
refresher={this.props.refresher}
5455
rootHolder={this.props.rootHolder}
56+
config={this.props.config}
5557

5658
workingDirectory={this.props.workingDirectory || this.props.currentWorkDir}
5759
repository={this.props.repository}

lib/controllers/github-tab-header-controller.js

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import React from 'react';
22
import PropTypes from 'prop-types';
33
import {AuthorPropType} from '../prop-types';
4+
import {CompositeDisposable} from 'atom';
45
import GithubTabHeaderView from '../views/github-tab-header-view';
56

67
export default class GithubTabHeaderController extends React.Component {
78
static propTypes = {
9+
config: PropTypes.object.isRequired,
810
user: AuthorPropType.isRequired,
911

1012
// Workspace
@@ -18,7 +20,11 @@ export default class GithubTabHeaderController extends React.Component {
1820

1921
constructor(props) {
2022
super(props);
21-
this.state = {currentWorkDirs: []};
23+
this.state = {
24+
currentWorkDirs: [],
25+
disableProjectSelection: this.props.config.get('github.useProjectFromActivePanel'),
26+
};
27+
this.disposable = new CompositeDisposable();
2228
}
2329

2430
static getDerivedStateFromProps(props, state) {
@@ -28,21 +34,27 @@ export default class GithubTabHeaderController extends React.Component {
2834
}
2935

3036
componentDidMount() {
31-
this.disposable = this.props.onDidChangeWorkDirs(this.resetWorkDirs);
37+
this.disposable.add(
38+
this.props.onDidChangeWorkDirs(this.resetWorkDirs),
39+
this.props.config.onDidChange('github.useProjectFromActivePanel', this.handleUseProjectFromActivePanelChange),
40+
);
3241
}
3342

3443
componentDidUpdate(prevProps) {
3544
if (prevProps.onDidChangeWorkDirs !== this.props.onDidChangeWorkDirs) {
36-
if (this.disposable) {
37-
this.disposable.dispose();
38-
}
39-
this.disposable = this.props.onDidChangeWorkDirs(this.resetWorkDirs);
45+
this.disposable.dispose();
46+
this.disposeable = new CompositeDisposable();
47+
this.disposable.add(
48+
this.props.onDidChangeWorkDirs(this.resetWorkDirs),
49+
this.props.config.onDidChange('github.useProjectFromActivePanel', this.handleUseProjectFromActivePanelChange),
50+
);
4051
}
4152
}
4253

4354
render() {
4455
return (
4556
<GithubTabHeaderView
57+
disableProjectSelection={this.state.disableProjectSelection}
4658
user={this.props.user}
4759

4860
// Workspace
@@ -55,6 +67,10 @@ export default class GithubTabHeaderController extends React.Component {
5567
);
5668
}
5769

70+
handleUseProjectFromActivePanelChange = ({newValue}) => {
71+
this.setState({disableProjectSelection: newValue});
72+
}
73+
5874
resetWorkDirs = () => {
5975
this.setState((state, props) => ({
6076
currentWorkDirs: [],

lib/controllers/root-controller.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,7 @@ export default class RootController extends React.Component {
308308
repository={this.props.repository}
309309
loginModel={this.props.loginModel}
310310
workspace={this.props.workspace}
311+
config={this.props.config}
311312
currentWorkDir={this.props.currentWorkDir}
312313
getCurrentWorkDirs={getCurrentWorkDirs}
313314
onDidChangeWorkDirs={onDidChangeWorkDirs}

lib/items/git-tab-item.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import GitTabContainer from '../containers/git-tab-container';
66

77
export default class GitTabItem extends React.Component {
88
static propTypes = {
9+
config: PropTypes.object.isRequired,
910
repository: PropTypes.object.isRequired,
1011
}
1112

lib/items/github-tab-item.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export default class GitHubTabItem extends React.Component {
1010
workspace: PropTypes.object.isRequired,
1111
repository: PropTypes.object,
1212
loginModel: GithubLoginModelPropType.isRequired,
13+
config: PropTypes.object.isRequired,
1314

1415
documentActiveElement: PropTypes.func,
1516

lib/views/git-tab-header-view.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {AuthorPropType} from '../prop-types';
55

66
export default class GitTabHeaderView extends React.Component {
77
static propTypes = {
8+
disableProjectSelection: PropTypes.bool,
89
committer: AuthorPropType.isRequired,
910

1011
// Workspace
@@ -21,7 +22,8 @@ export default class GitTabHeaderView extends React.Component {
2122
{this.renderCommitter()}
2223
<select className="github-Project-path input-select"
2324
value={this.props.workdir ? path.normalize(this.props.workdir) : undefined}
24-
onChange={this.props.handleWorkDirSelect ? this.props.handleWorkDirSelect : () => {}}>
25+
onChange={this.props.handleWorkDirSelect ? this.props.handleWorkDirSelect : () => {}}
26+
disabled={this.props.disableProjectSelection}>
2527
{this.renderWorkDirs()}
2628
</select>
2729
</header>

0 commit comments

Comments
 (0)