forked from jotraverso/chrome-desktop-outlook-notifier
-
Notifications
You must be signed in to change notification settings - Fork 1
/
content_script.js
52 lines (50 loc) · 3.64 KB
/
content_script.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
(function(win) {
Notification.requestPermission((status) => {
if (status != "granted") {
return;
}
const bodyElement = document.querySelector("body");
const OutlookMutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
const bodyObserver = new OutlookMutationObserver(check);
bodyObserver.observe(bodyElement, {
childList: true,
subtree: true
});
function check() {
// Find the "notification pane" element.
const notificationPane = document.querySelector("[data-app-section='NotificationPane']");
if (notificationPane) {
const notificationPaneObs = new OutlookMutationObserver(notification);
notificationPaneObs.observe(notificationPane, {
childList: true,
subtree: true
});
bodyObserver.disconnect();
}
}
function notification(mutations) {
mutations.forEach(function(mutation) {
if (mutation.addedNodes.length == 0) {
return;
}
const items = document.evaluate('.//div[@remindertype="Calendar"]', mutation.target);
let item = items.iterateNext();
while (item) {
const description = item.getAttribute("subject");
const time = item.getAttribute("starttimedisplaystring");
let notification = new Notification(description, {
icon: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAEfklEQVRoge2YW2xURRjHf3PO2e6tu9ttt90ChSIFShOFtoGgGC/4RBVD8AWMMb6pQWM0MWKQ8KDwYkQT44uSyIO3aOLlyRJf1BCREBIjyM3GykVol+122fa0u3TPnvGhtKXdyznt2VpM9vc43zfffP85c2bmG6hQoUKFhUQ4DRDY8uHrpmCvAH85EipCSgj5yvD3zx+eaXAmoOt9dzVuHdAcxbFHTO9+rnFmo6OBQ4rmk4qrr5SPAKTXbRlL9XssPMybhVodCQjXL5KGFEtLDqsqw8baloBFqMHGB9bUWvhkknkLCBSLTnc8FQELzf9eQP5P3HXwZST7sbGvX+zvLWoTQhCqrsMXCDtK0Ir8L2AzeSuklKT0hNMwlhTaRst2okopkQbXhCF9pfwUoQ6bhhgpGQtZ/nPADjeGzMXR65Q8ByS5wWRcWJwDIlOoddYC6oIeWptqyeUkf1waYCSTnW2IsmJbQDTs44Ndj7B90ypUZfwKlR4zONR9mt0fHyUzZsxbkqWwJSDoq+Lnt3fQ2hQmnkpz5OTf+NwuujbcxUvbOli9JMxj+77FlHK+883DloA9OzfS2hSmtz/Fg69+ydWEDkBHSwNH39nBlvXL2flwK5//eH5eky2ErYPsqc1rANj/xfHJ5AF+++s6H3WfuuXTNg/pWWMpIOR30xQZ30SOnb2WZz92dvw2fXdzpMypzcAw3I0t+7pmNlsuoYkfFiBrmHn2bC437qcWqY1MJQO4Sg4iRAY5vs9L09SEKdU8H8MQWsj/HTCtuLAUkNQzDAyliQS9dKxsoLc/Nc3euTIKQM/VZMH+VelBt56qL1mtSKTH+KmnZNXj8is07H26iid2T2u3XEJSwje/9ACwZ8dG/J6pyVxSV82uresA+PqWT7kRLoWa9giLtrWgrViUZ7e1C7352XG2b1pF58oGfn3vSQ7/cAavW+OFreuIBL383hvnUPfpMmcO/hVBwh0RVG/xNG0JuJrQ2bz7Kz597VHaV9Tz7rMPTdqOnLzIMwePcDObc570LTyNPmrX1+MKW9fStk/iM5cSdL74CRtWN9K2tJacKTnZE+P8lUFHyd6OK1hFTXsdvmarEnqKWd2FpIQTF/o5caHfdh/hcVk+3Sgelwh3Rgi0hRHK7F565v02qj5+XzV9I9A3Mj4DtyEUgXdNPYF7l9ao7tI7bTEKCdCB6jlFm4HQNHBpQi4LQdSP+GcYBkZBgmd5mND9zahBDzh4YCsk4A3gAA5FCE3Dt/aeqQa3hmwJozQH4zXL6kxvNBB1En9ynLl2rDt82dHV01vjI7gkhFY1u1V8ql1My/m/eNMsSPrGKJmhNP76AMFoEFHsKmLBgj6rSFOix4aInetjNKEzl096R7wL5bI5kpeTxC/EGNML1u5FuSMETJAdHSPec51E7wC5m/ZK1AX7B0qRSaWJDWXw1voJLg6hasXnee5fQKBbO80dKSWjCZ34uT5GBvSJM3B4pt+cBaiK+pZQRH6FU2ZyhsmNK0nif8Zy2bRxYL7Hq1ChQoXZ8S+QOlIdCqNTRAAAAABJRU5ErkJggg==',
body: time,
requireInteraction: true,
});
notification.onclick = function() {
win.focus();
item.click();
this.close();
};
item = items.iterateNext();
}
});
}
});
})(this);