-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbackground.js
More file actions
102 lines (97 loc) · 3.65 KB
/
background.js
File metadata and controls
102 lines (97 loc) · 3.65 KB
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
let green = '#3aa757', red = "#e8453c";
let CryptoPairs = [
"USDTRUB", "BTCUSDT", "ETHUSDT",
"LTCUSDT", "XRPUSDT", "XMRUSDT",
"DOGEUSDT", "DASHUSDT", "ZECUSDT",
"USDCUSDT", "TUSDUSDT", "PAXUSDT",
"DAIUSDT", "BUSDUSDT", "XEMUSDT",
"NEOUSDT", "ADAUSDT", "XLMUSDT",
"TRXUSDT", "BNBUSDT", "BTTUSDT",
"ATOMUSDT", "LINKUSDT", "ETCUSDT"];
let fiat = ["USD", "EUR"];
let url, serviceName, usdtRubPrice, binCourses = [], cbrCourses = [];
const getData = async(url, serviceName) => {
const response = await fetch(url)
const json = await response.json()
if(serviceName === "Binance"){
CryptoPairs.forEach(pair => {
for(var i = 0; i < json.length; i++){
if(json[i].symbol === pair){
if(pair === "USDTRUB"){
usdtRubPrice = parseFloat(json[i].price)
binCourses.push({ name: "USDT", price: usdtRubPrice }) // сохраняем курс usdt в рублях
}
else{
binCourses.push({ name: pair.replace("USDT", ""), price: parseFloat(json[i].price) * usdtRubPrice}) // приводим курс к рублю и сохраняем
}
break;
}
}
})
chrome.storage.local.set({ BinCourses: binCourses })
chrome.storage.sync.set({ BinUpdateTime: new Date().toLocaleTimeString() });
}else if(serviceName === "CBR"){
fiat.forEach(elem => {
cbrCourses.push({name: elem, price: json["Valute"][elem].Value }) // сохраняем курс в рублях по данным цб
})
cbrCourses.push({name: "RUB", price: 1 })
chrome.storage.local.set({CbrCourses: cbrCourses})
chrome.storage.sync.set({ CBRUpdateTime: new Date().toLocaleTimeString() });
}
}
chrome.runtime.onInstalled.addListener(() => {
chrome.storage.sync.set({
BinUpdateInterval: 0.5,
CbrUpdateInterval: 1,
ApplicationStatus: "Stop",
CBRUpdateTime: "",
BinUpdateTime: ""
});
});
chrome.runtime.onMessage.addListener(
function(message){
chrome.storage.sync.get("ApplicationStatus", ({ ApplicationStatus }) => {
if(message == "Start" && ApplicationStatus == "Stop"){
chrome.storage.sync.get("BinUpdateInterval", ({ BinUpdateInterval }) => {
chrome.alarms.create("BinUpdate", { delayInMinutes: 0, periodInMinutes: BinUpdateInterval });
});
chrome.storage.sync.get("CbrUpdateInterval", ({ CbrUpdateInterval }) => {
chrome.alarms.create("CbrUpdate", { delayInMinutes: 0, periodInMinutes: CbrUpdateInterval });
});
console.log("Start");
}
else if(message == "Stop" && ApplicationStatus == "Start"){
chrome.alarms.clear("BinUpdate");
chrome.alarms.clear("CbrUpdate");
console.log("Stop");
}
})
}
);
chrome.alarms.onAlarm.addListener(function(alarm){
if(alarm.name == "BinUpdate"){
url = 'https://api.binance.com/api/v3/ticker/price'
serviceName = 'Binance'
}
else if(alarm.name == "CbrUpdate"){
url = 'https://www.cbr-xml-daily.ru/daily_json.js'
serviceName = 'CBR'
}
getData(url, serviceName)
.then(console.log(serviceName + ' %cUpdate Successful', `color: ${green}`))
.catch(error => console.error(error))
});
chrome.tabs.onUpdated.addListener(
function(tabId, {}, tab){
if(tab.url.startsWith("https://www.bestchange")){
chrome.storage.sync.get("ApplicationStatus", ({ ApplicationStatus }) => {
if(ApplicationStatus == "Start" && tab.url.toString().endsWith(".html") && tab.status == "complete"){
chrome.scripting.executeScript({
target: { tabId: tab.id },
files: ['injection.js'],
});
}
})
}
}
);