1 function load_settings() {
2 browser.storage.local.get({auto_close: true})
5 document.getElementById('auto-close').checked = v.auto_close === true;
6 //console.log('Success', v);
9 document.getElementById('auto-close').checked = true;
10 //console.log('Failure');
15 function save_settings() {
16 let v = document.getElementById('auto-close').checked;
17 browser.storage.local.set({
20 //console.log('stored', v);
24 if (!word) return word;
30 word = word.replace(/^[^a-zA-Z0-9]+/, '');
31 word = word.replace(/[^a-zA-Z0-9]+$/, '');
32 word = word.replace(/^Bug#/i, '');
33 word = word.replace(/^#/, '');
34 } while ( oldword != word );
39 function open_tab(url) {
40 return new Promise((resolve, reject) => {
41 browser.tabs.create({url:url, active:false})
47 //console.log('Error creating tab', err);
54 function open_link(url, in_new_tab) {
55 //console.log('open_link', url, in_new_tab);
61 //console.log('querying active tab');
62 return new Promise((resolve, reject) => {
63 browser.tabs.query({active:true, currentWindow:true})
66 //console.log('active tab queried');
67 browser.tabs.executeScript(tabs[0].id, {file: '/icedeb-content.js'})
70 //console.log('content script executed');
71 browser.tabs.sendMessage( tabs[0].id, {url:url} )
74 //console.log('message sent');
78 console.log('error sending message', err);
84 console.log('Error executing script. Probably a system tab is active', err, tabs[0]);
87 function() { resolve(); },
88 function(err) { reject(err); } );
93 console.log('Error querying the active tab of the current window', err);
96 function() { resolve(); },
97 function(err) { reject(err) }
104 function link_clicked(e) {
105 //console.log(e.target.tagName);
106 let autoclose = true;
108 if (e.target.tagName == 'A') {
109 open_link(e.target.href, e.button == 1)
112 //console.log('closing pop-up');
120 let clip_input = document.getElementById("clipboard");
121 let clip = trim(clip_input.value);
123 if(clip_input.value == '') return;
127 switch (e.target.id) {
129 url = 'https://bugs.debian.org/' + clip;
132 url = 'https://tracker.debian.org/' + clip;
135 url = 'https://packages.debian.org/' + clip;
138 url = 'https://lists.debian.org/msgid-search/' + clip;
141 url = 'https://qa.debian.org/developer.php?login=' + clip;
144 url = 'https://udd.debian.org/dmd.cgi?email1=' + clip;
147 url = 'https://buildd.debian.org/' + clip;
150 clip = clip.replace(' ', '-');
151 clip = clip.toUpperCase();
152 url = 'https://security-tracker.debian.org/tracker/' + clip;
155 url = `https://piuparts.debian.org/sid/source/${clip.substring(0,1)}/${clip}.html`;
158 url = 'https://tests.reproducible-builds.org/debian/rb-pkg/' + clip + '.html';
162 open_link(url, e.button == 1)
165 //console.log('closing pop-up');
174 function check_likely_inputs(q) {
175 let cnt = document.getElementById('button-list-container').classList;
177 cnt.remove('like-b', 'like-p', 'like-m', 'like-i', 'like-s');
178 document.querySelectorAll('.likely')
180 el.classList.remove('likely');
183 q = q.replace(/^\s+/, '');
184 q = q.replace(/\s+$/, '');
186 if ( /^#?\d+$/.test(q) || /^CVE-/.test(q) )
189 if ( /^[a-z0-9][a-z0-9\-+.]+$/.test(q) )
192 if ( /.@[a-z0-9-]/i.test(q) )
195 if ( /^<.+@.+>$/.test(q) )
198 if ( /^d[sl]a[- ]\d+(-\d+)?$/i.test(q) )
201 document.querySelectorAll('.like-b .hint.b, .like-p .hint.p, .like-m .hint.m, .like-i .hint.i, .like-s .hint.s')
203 el.parentElement.parentElement.classList.add('likely');
207 function get_clipboard_contents() {
208 let clip_pot = document.getElementById('clip-pot');
209 let clip_input = document.getElementById("clipboard");
211 if (document.execCommand("Paste")) {
212 let q = clip_pot.textContent.trim();
213 clip_input.value = q;
215 clip_input.setSelectionRange(0, clip_input.value.length);
217 check_likely_inputs(q);
221 window.addEventListener('DOMContentLoaded', (e) => {
222 document.querySelectorAll('.icedeb-button, #button-list-container a')
223 .forEach(function(el){
224 el.addEventListener('mouseup', link_clicked);
227 document.querySelector('#clipboard')
228 .addEventListener('input', function(ev) {
229 check_likely_inputs(ev.target.value);
232 document.addEventListener('change', (e) => {
233 if ( !e.target.classList.contains('icedeb-option') )
239 window.requestAnimationFrame(()=>{
240 window.requestAnimationFrame(get_clipboard_contents);