-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpopup.js
121 lines (113 loc) · 4.13 KB
/
popup.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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
let transactions = [];
let slug = '';
try {
browser;
localget = (keys, promise) => browser.storage.local.get(keys).then(promise);
localset = (keys, promise) => browser.storage.local.set(keys).then(promise);
} catch (ex) {
browser = chrome;
localget = (keys, promise) => browser.storage.local.get(keys, promise);
localset = (keys, promise) => browser.storage.local.set(keys, promise);
}
Sentry.init({
dsn: 'https://[email protected]/5498617',
integrations: [
new Sentry.Integrations.BrowserTracing(),
],
tracesSampleRate: 1.0,
release: "santry-trace-extension@" + browser.runtime.getManifest().version,
});
let page = 0;
const ENV = {
dev: {
root_url: "http://dev.getsentry.net:8000/"
},
valid: {
root_url: "https://sentry.io/"
}
}
function pad(value) {
return String(value).padStart(2, 0);
};
function enableButton(identifier) {
document.getElementById(identifier).classList.remove('disabled');
document.getElementById(identifier).classList.add('enabled');
}
function disableButton(identifier) {
document.getElementById(identifier).classList.remove('enabled');
document.getElementById(identifier).classList.add('disabled');
}
function updateButtons() {
if (transactions.length > 10 * (page + 1)) {
enableButton("nextButton");
} else {
disableButton("nextButton");
}
if (page > 0) {
enableButton("prevButton");
} else {
disableButton("prevButton");
}
}
function loadContent(transactions) {
const content = document.getElementById("popup-content");
innerHTML = "";
for (const element of transactions.slice(10 * page, 10 * (page + 1))) {
const env = element.environment;
const timestamp = element.timestamp * 1000.0;
const start = encodeURIComponent((new Date(timestamp - (48*60*60*1000))).toISOString().split('.')[0]);
const end = encodeURIComponent((new Date(timestamp + (48*60*60*1000))).toISOString().split('.')[0]);
const root_url = element.isLocal ? ENV.dev.root_url : ENV.valid.root_url
let url;
if (element?.exception) {
url = `${root_url}organizations/${element.organization}/discover/${element.project}:${element.event_id}/`
innerHTML += `<tr><td><div><a href="${url}" target="_blank">${element?.exception?.values[0]?.type}</a></div></td><td><div>Error</div></td><td><div>${env}</div></td><td><div>${new Date(timestamp).toLocaleTimeString()}</div></td></tr>`;
} else {
url = `${root_url}organizations/${element.organization}/performance/trace/${element.trace_id}/?start=${start}&end=${end}`
innerHTML += `<tr><td><div><a href="${url}" target="_blank">${element.transaction}</a></div></td><td><div>Transaction</div></td><td><div>${env}</div></td><td><div>${new Date(timestamp).toLocaleTimeString()}</div></td></tr>`;
}
}
content.innerHTML = innerHTML;
}
function loadTransactions(open) {
const transaction = Sentry.startTransaction({ name: "loadContent" , description: `on${open}`});
const getSpan = transaction.startChild({ op: "localget" });
localget(["recentTransactions"], function(data) {
if (data.recentTransactions === undefined) {
data.recentTransactions = [];
}
getSpan.setTag("transactions.length", data.recentTransactions.length);
getSpan.finish()
loadContent(data.recentTransactions);
transaction.finish()
});
localget(["transactions"], function(data) {
transactions = data.transactions;
updateButtons();
});
}
loadTransactions("Open");
browser.runtime.onMessage.addListener((data) => {
if (data.hasOwnProperty("length")) loadTransactions("Reload");
});
document.getElementById("clear-traces").onclick = function clearTrace() {
page = 0;
localset({"transactions": [], "recentTransactions": []}, function () {
browser.runtime.sendMessage({"length": 0});
loadTransactions("Clear");
});
}
document.getElementById("nextButton").onclick = function nextPage() {
if (transactions.length > 10 * (page + 1)) {
page += 1;
loadContent(transactions, slug);
updateButtons();
}
}
document.getElementById("prevButton").onclick = function nextPage() {
if (page > 0) {
page -= 1;
loadContent(transactions, slug);
updateButtons();
}
}