Browse Source

feat: nothing

Ahmad Kholid 3 years ago
parent
commit
2878213c2b
4 changed files with 47 additions and 12 deletions
  1. 15 11
      src/content/index.js
  2. 1 1
      src/content/services/web-service.js
  3. 30 0
      src/content/take-screenshot.js
  4. 1 0
      src/utils/shared.js

+ 15 - 11
src/content/index.js

@@ -35,17 +35,21 @@ import blocksHandler from './blocks-handler';
         return;
       }
 
-      if (data.type === 'content-script-exists') {
-        resolve(true);
-      } else if (data.type === 'select-element') {
-        elementSelector();
-        resolve(true);
-      } else if (data.type === 'give-me-the-frame-id') {
-        browser.runtime.sendMessage({
-          type: 'this-is-the-frame-id',
-        });
-
-        resolve();
+      switch (data.type) {
+        case 'content-script-exists':
+          resolve(true);
+          break;
+        case 'select-element':
+          elementSelector();
+          resolve(true);
+          break;
+        case 'give-me-the-frame-id':
+          browser.runtime.sendMessage({
+            type: 'this-is-the-frame-id',
+          });
+          resolve();
+          break;
+        default:
       }
     });
   });

+ 1 - 1
src/content/services/web-service.js

@@ -25,7 +25,7 @@ function initWebListener() {
 
 async function listenWindowMessage(workflows) {
   try {
-    if (secrets?.webOrigin.includes(window.location.origin)) return;
+    if (!secrets?.webOrigin.includes(window.location.origin)) return;
 
     const db = await openDB('automa', 1, {
       upgrade(event) {

+ 30 - 0
src/content/take-screenshot.js

@@ -0,0 +1,30 @@
+function findScrollableElement(element = document.body, maxDepth = 3) {
+  if (maxDepth === 0) return null;
+
+  const excludeTags = ['SCRIPT', 'STYLE', 'SVG'];
+  const isScrollable = element.scrollHeight > window.innerHeight;
+
+  if (isScrollable) return element;
+
+  for (let index = 0; index < element.childElementCount; index += 1) {
+    const currentChild = element.children.item(index);
+    const isExcluded =
+      currentChild.tagName.includes('-') ||
+      excludeTags.includes(currentChild.tagName);
+
+    if (!isExcluded) {
+      const scrollableElement = findScrollableElement(
+        currentChild,
+        maxDepth - 1
+      );
+
+      if (scrollableElement) return scrollableElement;
+    }
+  }
+
+  return null;
+}
+
+export default async function () {
+  findScrollableElement();
+}

+ 1 - 0
src/utils/shared.js

@@ -176,6 +176,7 @@ export const tasks = {
       ext: 'png',
       quality: 100,
       dataColumn: '',
+      fullPage: false,
       saveToColumn: false,
       saveToComputer: true,
       captureActiveTab: true,