-
Notifications
You must be signed in to change notification settings - Fork 4
/
photo_inject.js
85 lines (73 loc) · 2.27 KB
/
photo_inject.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
76
77
78
79
80
81
82
83
84
85
(function() {
var PHOTO_BUTTON_CONTAINER_RIGHT_SIDE_SELECTOR = '.PbXuJ.a-f-e';
var PHOTO_CONTAINER_SELECTOR = '.gQ';
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
var plusId;
(function() {
chrome.extension.sendRequest({type: 'getId'}, function(response) {
plusId = response.id;
});
})();
function getActiveIdentity() {
var url = document.location.toString();
var match = url.match(/(u\/[0-9]\/|)b\/([0-9]+)/);
return match && match[2];
}
function getPhotoId() {
var url = window.location.toString().split('?')[0];
if (!url.match(/photos\/.*\/.+/)) {
return;
}
var property = url.split('photos/')[1].split('/')[0];
if (property == 'instantupload' || property == (getActiveIdentity() || plusId)) {
return url.split('/').reverse()[0];
}
}
function addButton() {
var container = document.querySelector(PHOTO_CONTAINER_SELECTOR);
if (!container) {
// Retry religiously
window.setTimeout(addButton, 100);
return
}
if (!getPhotoId()) {
return;
}
var buttonArea = document.querySelector(PHOTO_BUTTON_CONTAINER_RIGHT_SIDE_SELECTOR);
if (!buttonArea) {
console.error('no button area found');
return;
}
var button1 = buttonArea.childNodes[0];
var newButton = button1.cloneNode(true);
newButton.id = "ds-send-photo";
newButton.querySelector('[role=button]').style.display = null;
newButton.querySelector("span").innerText = "Send to Do Share";
newButton.onclick = function() {
var photoId = getPhotoId();
if (!photoId) {
return;
}
chrome.extension.sendRequest({type: 'newPost', image_id: photoId, source: 'photoSend', activeIdentity: getActiveIdentity()});
};
buttonArea.insertBefore(newButton, button1);
}
var observer = new MutationObserver(function(mutations) {
if (mutations.length == 1) {
var added = mutations[0].addedNodes;
if (added.length == 1) {
var menuitems = added[0].querySelectorAll('div[role="menuitem"]');
for (var key in menuitems) {
var node = menuitems[key];
// TODO: fix not to use the string.
if (node.nodeType == Node.ELEMENT_NODE && node.innerText === "Report photo") {
window.setTimeout(addButton, 100);
}
}
}
}
});
observer.observe(document.body, {
childList: true
});
})();