/
background.js
58 lines (45 loc) · 1.51 KB
/
background.js
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
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
chrome.storage.sync.get({
server: '',
projectId: null,
issueTypeId: null
}, function(data) {
if (!(data.server && data.projectId && data.issueTypeId)) {
chrome.runtime.openOptionsPage();
return sendResponse(JSON.stringify({
error: 'Server not defined',
showSettings: true
}));
}
var xhr = new XMLHttpRequest();
xhr.open('POST', data.server.replace(/\/$/, "") + '/rest/api/2/issue/', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status == 201) {
sendResponse(xhr.responseText);
} else {
sendResponse(JSON.stringify({
error: xhr.responseText || xhr.status || true
}));
}
}
};
xhr.send(JSON.stringify({
fields: {
project: {
key: data.projectId
},
summary: request.summary,
description: request.description,
issuetype: {
id: data.issueTypeId
},
components: [{
name: request.component
}]
}
}));
});
return true;
});