-
Notifications
You must be signed in to change notification settings - Fork 1
/
script.js
123 lines (89 loc) · 3.48 KB
/
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
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
async function fetchData() {
let keys = null;
function deepEqual(x, y) {
const ok = Object.keys, tx = typeof x, ty = typeof y;
return x && y && tx === 'object' && tx === ty ? (
ok(x).length === ok(y).length &&
ok(x).every(key => deepEqual(x[key], y[key]))
) : (x === y);
}
function updateMessage() {
let length = Object.keys(keys).length;
document.getElementById("detectedNum").innerText = length
if (length > 0) {
document.getElementById("export-action").classList.remove("opacity-30");
document.getElementById("export-action").classList.remove("pointer-events-none");
} else {
document.getElementById("export-action").classList.add("opacity-30");
document.getElementById("export-action").classList.add("pointer-events-none");
}
}
function updateActions(visible) {
if (visible) {
document.getElementById("import-action").classList.remove("hidden");
} else {
document.getElementById("import-action").classList.add("hidden");
}
}
document.getElementById("export").addEventListener("click", exportEnv);
document.getElementById("import").addEventListener("click", importEnv);
function exportEnv() {
var indexes = Object.keys(keys);
var values = Object.values(keys);
var text = "";
for (let index = 0; index < indexes.length; index++) {
if (indexes[index] == undefined || indexes[index] == "")
continue;
text += `${indexes[index]}=${values[index]}\n`;
}
var a = window.document.createElement('a');
a.href = window.URL.createObjectURL(new Blob([text], { type: 'text/plain' }));
a.download = 'ebs_secrets.env';
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
}
let lastLoadedFile = null;
const fileSelector = document.getElementById('env-selector');
fileSelector.addEventListener('change', (event) => {
const fileList = event.target.files;
if (fileList.length > 0) {
var first = fileList[0];
var fr = new FileReader();
fr.onload = function (e) {
var text = e.target.result;
const result = text.split(/\r?\n/);
var secretObject = {};
result.forEach(line => {
const [first, ...rest] = line.split('=');
const remainder = rest.join('=');
if (line != "" && line != null)
secretObject[first] = remainder;
});
lastLoadedFile = Object.fromEntries(Object.entries(secretObject).filter(([_, v]) => v != ""));
updateActions(true);
};
fr.readAsText(first);
}
});
function importEnv() {
chrome.runtime.sendMessage({
method: 'setImports',
import: {
env: lastLoadedFile,
replace: !document.getElementById("replace-checkbox").checked,
}
});
}
function getKeysJob() {
chrome.runtime.sendMessage({ method: 'getKeys' }, function (response) {
if (!deepEqual(keys, response)) {
keys = response;
updateMessage();
}
});
setTimeout(getKeysJob, 5000);
}
getKeysJob();
}
fetchData();