-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbookmark.js
75 lines (68 loc) · 1.78 KB
/
bookmark.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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
'use strict';
/* Create Context Menu and Handle click */
chrome.contextMenus.create({
type: "normal",
id: "101",
title: "Slack this",
onclick: (info) => {
sendToSlack(info.pageUrl);
}
})
/* Handle Keyboard Shortcut */
chrome.commands.onCommand.addListener((command) => {
chrome.tabs.getSelected(null, function (tab) {
sendToSlack(tab.url);
});
});
/**
* Converts the Request to Query Params String.
* @param {Object} params
* @return {String}
*/
function convertToQueryParams(params) {
let esc = encodeURIComponent;
let query = Object.keys(params)
.map(k => esc(k) + '=' + esc(params[k]))
.join('&');
return query;
}
/**
* Sends the page url to Slack.
* @param {String} pageUrl The url of current page to be sent to Slack as bookmark.
**/
function sendToSlack(pageUrl) {
const request = {
token: token,
channel: channel,
unfurl_links: true,
pretty: 1,
as_user: true,
text: pageUrl
};
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
},
body: convertToQueryParams(request)
};
fetch(slackUrl, options)
.then((response) => {
if (response.ok) {
return Promise.resolve(response);
} else {
return Promise.reject(new Error(response.statusText));
}
})
.then((response) => response.json())
.then((data) => {
if(data.ok) {
console.log("Article sent to Slack");
} else {
console.log(data.error);
}
})
.catch((error) => {
console.log("Error: " + this.status);
});
}