This repository was archived by the owner on Dec 15, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 408
Expand file tree
/
Copy pathissueish-pane-item.js
More file actions
92 lines (76 loc) · 2.27 KB
/
Copy pathissueish-pane-item.js
File metadata and controls
92 lines (76 loc) · 2.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import {Emitter} from 'event-kit';
import React, {Component} from 'react';
import PropTypes from 'prop-types';
import {autobind} from '../helpers';
import IssueishPaneItemController from '../controllers/issueish-pane-item-controller';
import GithubLoginModel from '../models/github-login-model';
export default class IssueishPaneItem extends Component {
static propTypes = {
uri: PropTypes.string.isRequired,
host: PropTypes.string.isRequired,
owner: PropTypes.string.isRequired,
repo: PropTypes.string.isRequired,
issueishNumber: PropTypes.number.isRequired,
}
static uriPattern = 'atom-github://issueish/{host}/{owner}/{repo}/{number}'
static buildURI(host, owner, repo, number) {
return 'atom-github://issueish/' +
encodeURIComponent(host) + '/' +
encodeURIComponent(owner) + '/' +
encodeURIComponent(repo) + '/' +
encodeURIComponent(number);
}
constructor(props) {
super(props);
autobind(this, 'switchToIssueish', 'handleTitleChanged');
this.emitter = new Emitter();
this.title = `${this.props.owner}/${this.props.repo}#${this.props.issueishNumber}`;
this.loginModel = GithubLoginModel.get();
this.state = {};
}
static getDerivedStateFromProps(nextProps, prevState) {
return {
host: nextProps.host,
owner: nextProps.owner,
repo: nextProps.repo,
issueishNumber: nextProps.issueishNumber,
};
}
render() {
return (
<IssueishPaneItemController
host={this.state.host}
owner={this.state.owner}
repo={this.state.repo}
issueishNumber={this.state.issueishNumber}
loginModel={this.loginModel}
onTitleChange={this.handleTitleChanged}
switchToIssueish={this.switchToIssueish}
/>
);
}
switchToIssueish(owner, repo, issueishNumber) {
this.setState({owner, repo, issueishNumber});
}
handleTitleChanged(title) {
if (this.title !== title) {
this.title = title;
this.emitter.emit('did-change-title', title);
}
}
onDidChangeTitle(cb) {
return this.emitter.on('did-change-title', cb);
}
serialize() {
return {
uri: this.props.uri,
deserializer: 'IssueishPaneItem',
};
}
getURI() {
return this.props.uri;
}
getTitle() {
return this.title;
}
}