Ver código fonte

feat: query in the get tab url block

Ahmad Kholid 2 anos atrás
pai
commit
cb399bfc3f

+ 22 - 1
src/components/newtab/workflow/edit/EditTabURL.vue

@@ -16,7 +16,28 @@
         {{ t(`workflow.blocks.tab-url.types.${type}`) }}
       </option>
     </ui-select>
-    <insert-workflow-data :data="data" variables @update="updateData" />
+    <div v-if="data.type === 'all'" class="mt-4 p-2 rounded-lg border">
+      <p class="text-sm text-gray-600">
+        {{ t('workflow.blocks.tab-url.query.title') }}
+      </p>
+      <ui-input
+        :model-value="data.qMatchPatterns"
+        class="mt-2 w-full"
+        placeholder="https://example.com/*"
+        @change="updateData({ qMatchPatterns: $event })"
+      >
+        <template #label>
+          {{ t('workflow.blocks.tab-url.query.matchPatterns') }}
+        </template>
+      </ui-input>
+      <ui-input
+        :model-value="data.qTitle"
+        :label="t('workflow.blocks.tab-url.query.tabTitle')"
+        class="mt-2 w-full"
+        @change="updateData({ qTitle: $event })"
+      />
+    </div>
+    <insert-workflow-data variables @update="updateData" />
   </div>
 </template>
 <script setup>

+ 5 - 0
src/locales/en/blocks.json

@@ -186,6 +186,11 @@
         "types": {
           "active-tab": "Active tab",
           "all": "All tabs"
+        },
+        "query": {
+          "title": "Query",
+          "matchPatterns": "@:workflow.blocks.switch-tab.matchPattern (optional)",
+          "tabTitle": "Tab title (optional)"
         }
       },
       "reload-tab": {

+ 2 - 0
src/utils/shared.js

@@ -1124,6 +1124,8 @@ export const tasks = {
       saveData: true,
       assignVariable: false,
       variableName: '',
+      qTitle: '',
+      qMatchPatterns: '',
     },
   },
   'slice-variable': {

+ 10 - 1
src/workflowEngine/blocksHandler/handlerTabUrl.js

@@ -9,7 +9,16 @@ export async function logData({ id, data }) {
     const tab = await browser.tabs.get(this.activeTab.id);
     urls = tab.url || tab.pendingUrl || '';
   } else {
-    const tabs = await browser.tabs.query({});
+    const query = {};
+
+    if (data.qMatchPatterns) {
+      query.url = data.qMatchPatterns;
+    }
+    if (data.qTitle) {
+      query.title = data.qTitle;
+    }
+
+    const tabs = await browser.tabs.query(query);
     urls = tabs.map((tab) => tab.url);
   }