]> git.ktnx.net Git - icedeb.git/blobdiff - icedeb.js
Add 'Reproducible builds' link
[icedeb.git] / icedeb.js
index 338f292691466a8fdc677b6c63fd172ce849504f..be9c21771b73b1b56f34e6b4676ec5710c5cfb32 100644 (file)
--- a/icedeb.js
+++ b/icedeb.js
@@ -117,11 +117,9 @@ function link_clicked(e) {
   }
 
   let clip_input = document.getElementById("clipboard");
-  if(clip_input.textContent == '')
-    get_clipboard_contents();
-  let clip = trim(clip_input.textContent);
+  let clip = trim(clip_input.value);
 
-  if(clip_input.textContent == '') return;
+  if(clip_input.value == '') return;
 
   let url;
 
@@ -139,17 +137,19 @@ function link_clicked(e) {
       url = 'https://lists.debian.org/msgid-search/' + clip;
       break;
     case 'ddpo':
-      url = 'https://qa.debian.org/developer.php';
-      if (clip != '')
-        url += '?login=' + clip;
+      url = 'https://qa.debian.org/developer.php?login=' + clip;
+      break;
+    case 'dmd':
+      url = 'https://udd.debian.org/dmd.cgi?email1=' + clip;
       break;
     case 'buildd':
       url = 'https://buildd.debian.org/' + clip;
       break;
     case 'security':
-      url = 'https://security-tracker.debian.org/';
-      if (clip != '')
-        url += 'tracker/' + clip;
+      url = 'https://security-tracker.debian.org/tracker/' + clip;
+      break;
+    case 'r-b':
+      url = 'https://tests.reproducible-builds.org/debian/rb-pkg/' + clip + '.html';
       break;
   }
 
@@ -165,15 +165,44 @@ function link_clicked(e) {
   return false;
 }
 
-function get_clipboard_contents() {
-  document.getElementById('error').classList.add('hidden');
+function check_likely_inputs(q) {
+  let cnt = document.getElementById('button-list-container').classList;
+
+  cnt.remove('like-b', 'like-p', 'like-m', 'like-i');
+  document.querySelectorAll('.likely')
+    .forEach((el) => {
+        el.classList.remove('likely');
+    });
+
+  if ( /^\d+$/.test(q) || /^CVE-/.test(q) )
+    cnt.add('like-b');
+
+  if ( /^[a-z0-9][a-z0-9\-+.]+$/.test(q) )
+    cnt.add('like-p');
+
+  if ( /.@[a-z0-9-]/i.test(q) )
+    cnt.add('like-m');
 
+  if ( /^<.+@.+>$/.test(q) )
+    cnt.add('like-i');
+
+  document.querySelectorAll('.like-b .hint.b, .like-p .hint.p, .like-m .hint.m, .like-i .hint.i')
+    .forEach((el) => {
+      el.parentElement.parentElement.classList.add('likely');
+    } );
+}
+
+function get_clipboard_contents() {
+  let clip_pot = document.getElementById('clip-pot');
   let clip_input = document.getElementById("clipboard");
-  clip_input.focus();
-  if (!document.execCommand("paste")) {
-    let err = document.getElementById('error');
-    err.textContent = 'Error retrieving clipboard contents';
-    err.classList.remove('hidden');
+  clip_pot.focus();
+  if (document.execCommand("Paste")) {
+    let q = clip_pot.textContent.trim();
+    clip_input.value = q;
+    clip_input.focus();
+    clip_input.setSelectionRange(0, clip_input.value.length);
+
+    check_likely_inputs(q);
   }
 }
 
@@ -183,6 +212,11 @@ window.addEventListener('DOMContentLoaded', (e) => {
       el.addEventListener('mouseup', link_clicked);
     });
 
+  document.querySelector('#clipboard')
+    .addEventListener('input', function(ev) {
+      check_likely_inputs(ev.target.value);
+    });
+
   document.addEventListener('change', (e) => {
     if ( !e.target.classList.contains('icedeb-option') )
       return;
@@ -190,5 +224,7 @@ window.addEventListener('DOMContentLoaded', (e) => {
     save_settings();
   });
 
-  get_clipboard_contents();
+  window.requestAnimationFrame(()=>{
+    window.requestAnimationFrame(get_clipboard_contents);
+  });
 });