From c7ea6a44427b40aabee9ec052dd835b88bf0508e Mon Sep 17 00:00:00 2001
From: Danny Spina <danny.spina@hotmail.it>
Date: Sat, 24 Jun 2023 00:42:39 +0200
Subject: [PATCH] Add marker to links saved in cache

---
 dist/styles/serp.css |  0
 index.ts             | 16 +++++++++++++---
 utils.ts             | 21 +++++++++++++++++++++
 3 files changed, 34 insertions(+), 3 deletions(-)
 create mode 100644 dist/styles/serp.css

diff --git a/dist/styles/serp.css b/dist/styles/serp.css
new file mode 100644
index 0000000..e69de29
diff --git a/index.ts b/index.ts
index 9823112..f2a8206 100644
--- a/index.ts
+++ b/index.ts
@@ -12,6 +12,7 @@ import { minify } from "html-minifier";
 import {
   blazeFunctionality,
   blazeUrl,
+  highlightBlazedLinks,
   injectBlazeToPageLinks,
 } from "./utils.js";
 import etag from "etag";
@@ -86,9 +87,9 @@ app.get("/", async (req, res) => {
       const results = data.web.results.map(
         (result: any) => `
             <article>
-              <a href="${blazeUrl}/blazed?url=${result.url}">
-                <h2>${result.title}</h2>
-              </a>
+              <h2><a href="${blazeUrl}/blazed?url=${result.url}">
+                ${result.title}
+              </a></h2>
               <span>${result.meta_url.hostname}</span>
               <p>${result.description}</p>
             </article>
@@ -122,7 +123,12 @@ app.get("/", async (req, res) => {
                 ${results.join("")}
                 <script>
                   ${blazeFunctionality}
+                  ${highlightBlazedLinks}
+
                   blazeFunctionality('${blazeUrl}')
+                  const links = document.querySelectorAll('a')
+                  highlightBlazedLinks(links)
+
                 </script>
               </body>
             </html>
@@ -261,6 +267,10 @@ app.get("/blazed", async (req, res) => {
           const url = "${blazeUrl}"
           const currentUrl = "${req.query.url}"
           injectBlazeToPageLinks(url, currentUrl)
+
+          ${highlightBlazedLinks}
+          const links = document.querySelectorAll('a')
+          highlightBlazedLinks(links)
         </script>
       </body></html>
       `;
diff --git a/utils.ts b/utils.ts
index a7ea9e4..68a5006 100644
--- a/utils.ts
+++ b/utils.ts
@@ -31,3 +31,24 @@ export function blazeFunctionality(blazeUrl: string) {
     location.href = blazeUrl + "?q=" + encodeURIComponent(c!.value);
   });
 }
+
+export function highlightBlazedLinks(links: HTMLLinkElement[]) {
+  links.forEach((link) => {
+    if (
+      !link.href ||
+      link.href === "http://localhost:8888/" ||
+      link.href === "https://blaze.cyclic.app"
+    ) {
+      return;
+    }
+
+    const url = new URL(link.href);
+    caches.open("blaze").then((cache) => {
+      cache.match(url.href).then((response) => {
+        if (response) {
+          link.innerHTML = `${link.textContent} ⚡`;
+        }
+      });
+    });
+  });
+}