Repository navigation
Expand file tree
/
Copy pathpopup.js
More file actions
93 lines (88 loc) · 4.43 KB
/
Copy pathpopup.js
File metadata and controls
93 lines (88 loc) · 4.43 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
document.addEventListener('DOMContentLoaded', () => {
const bengali = document.getElementById('bengali');
const devanagari = document.getElementById('devanagari');
const gujarati = document.getElementById('gujarati');
const gurmukhi = document.getElementById('gurmukhi');
const kannada = document.getElementById('kannada');
const malayalam = document.getElementById('malayalam');
const odia = document.getElementById('odia');
const sinhala = document.getElementById('sinhala');
const tamil = document.getElementById('tamil');
const telugu = document.getElementById('telugu');
const arabic = document.getElementById('arabic');
const flipRtl = document.getElementById('flipRtl');
const indicateScript = document.getElementById('indicateScript');
const showStats = document.getElementById('showStats');
const schemeRadios = document.querySelectorAll('input[name="scheme"]');
// Load saved settings (defaults to true, except stats which defaults to false)
chrome.storage.sync.get(['bengali', 'devanagari', 'gujarati', 'kannada', 'malayalam', 'odia', 'telugu', 'arabic', 'flipRtl', 'indicateScript', 'showStats', 'scheme'], (result) => {
bengali.checked = result.bengali !== false;
devanagari.checked = result.devanagari !== false;
gujarati.checked = result.gujarati !== false;
gurmukhi.checked = result.gurmukhi !== false;
kannada.checked = result.kannada !== false;
malayalam.checked = result.malayalam !== false;
odia.checked = result.odia !== false;
sinhala.checked = result.sinhala !== false;
tamil.checked = result.tamil !== false;
telugu.checked = result.telugu !== false;
arabic.checked = result.arabic !== false;
flipRtl.checked = result.flipRtl !== false;
indicateScript.checked = result.indicateScript !== false;
showStats.checked = result.showStats === true;
const scheme = result.scheme || 'itrans';
schemeRadios.forEach(r => { r.checked = r.value === scheme; });
});
// Save settings and notify tabs
const updateSettings = () => {
const scheme = Array.from(schemeRadios).find(r => r.checked)?.value || 'itrans';
const settings = {
scheme,
bengali: bengali.checked,
devanagari: devanagari.checked,
gujarati: gujarati.checked,
gurmukhi: gurmukhi.checked,
kannada: kannada.checked,
malayalam: malayalam.checked,
odia: odia.checked,
sinhala: sinhala.checked,
tamil: tamil.checked,
telugu: telugu.checked,
arabic: arabic.checked,
flipRtl: flipRtl.checked,
indicateScript: indicateScript.checked,
showStats: showStats.checked
};
chrome.storage.sync.set(settings);
chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => {
tabs.forEach(tab => {
// Use a callback to handle potential errors if the content script isn't loaded
chrome.tabs.sendMessage(tab.id, {
type: 'settingsChanged',
settings: settings
}, (response) => {
if (chrome.runtime.lastError) {
// Content script might not be loaded on this tab (e.g. chrome:// pages)
// We can safely ignore this error
console.debug('Could not update settings on tab:', chrome.runtime.lastError.message);
}
});
});
});
};
bengali.addEventListener('change', updateSettings);
devanagari.addEventListener('change', updateSettings);
gujarati.addEventListener('change', updateSettings);
gurmukhi.addEventListener('change', updateSettings);
kannada.addEventListener('change', updateSettings);
malayalam.addEventListener('change', updateSettings);
odia.addEventListener('change', updateSettings);
sinhala.addEventListener('change', updateSettings);
tamil.addEventListener('change', updateSettings);
telugu.addEventListener('change', updateSettings);
arabic.addEventListener('change', updateSettings);
schemeRadios.forEach(r => r.addEventListener('change', updateSettings));
flipRtl.addEventListener('change', updateSettings);
indicateScript.addEventListener('change', updateSettings);
showStats.addEventListener('change', updateSettings);
});