-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwatcher.js
49 lines (35 loc) · 1.32 KB
/
watcher.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
var localStorageKey = 'flatwatch';
var secondsBeforeRefresh = 120;
var offerElementSelectors = {
'www.leboncoin.fr': 'li[itemtype="http://schema.org/Offer"]',
'www.seloger.com': '.liste_resultat > div',
};
function notify(currentDomain) {
browser.runtime.sendMessage({ title: 'New offer', content: 'On ' + currentDomain, id: window.location.href });
}
function watchOffers() {
var currentDomain = window.location.hostname;
var lastOfferElement = document.querySelector(offerElementSelectors[currentDomain]);
if (!lastOfferElement) {
return;
}
var href = document.querySelector(offerElementSelectors[currentDomain] + ' a').href;
// Only for the exact same search
var localStorageKeyForDomain = 'flatwatch_' + window.location.href;
var gettingLastItem = browser.storage.local.get(localStorageKeyForDomain);
gettingLastItem.then(function(lastItem) {
var toSetInStorage = {};
if (lastItem[localStorageKeyForDomain] === href) {
return;
}
toSetInStorage[localStorageKeyForDomain] = href;
browser.storage.local.set(toSetInStorage).then(function(value) {
notify(currentDomain);
});
});
}
function refresh() {
window.location.reload(true);
}
setTimeout(refresh, secondsBeforeRefresh * 1000);
watchOffers();