-
{{ review.username }}: {{ review.title }}
-
{{ review.rating }}
-
- {{ paragraph }}
+
+
+
+
+
{{ review.username }}: {{ review.title }}
+
{{ review.rating }}
+
+ {{ paragraph }}
+
+
{{ review.dateInfo }}
+
- {{ review.dateInfo }}
+
+
-
+
diff --git a/src/components/ResultTable.vue b/src/components/ResultTable.vue
index 23b698a..3dccd30 100644
--- a/src/components/ResultTable.vue
+++ b/src/components/ResultTable.vue
@@ -1,14 +1,26 @@
Review Page
-
-
测试
-
{{ output }}
+
+
+
+
+
+
+ 开始
+
+
+
+
+
+ 停止
+
+
+
+ 警告,在插件运行期间请勿与浏览器交互。
+
+
diff --git a/src/sidepanel/SearchPageEntry.vue b/src/sidepanel/SearchPageEntry.vue
index 252ef77..aa2c678 100644
--- a/src/sidepanel/SearchPageEntry.vue
+++ b/src/sidepanel/SearchPageEntry.vue
@@ -3,8 +3,11 @@ import { keywordsList } from '~/logic/storage';
import pageWorker from '~/logic/page-worker';
import { NButton } from 'naive-ui';
import { searchItems } from '~/logic/storage';
+import { useLongTask } from '~/composables/useLongTask';
const message = useMessage();
+const { isRunning, startTask } = useLongTask();
+
//#region Initial Page Worker
const worker = pageWorker.useAmazonPageWorker();
worker.channel.on('error', ({ message: msg }) => {
@@ -16,7 +19,6 @@ worker.channel.on('error', ({ message: msg }) => {
});
message.error(msg);
worker.stop();
- running.value = false;
});
worker.channel.on('item-links-collected', ({ objs }) => {
timelines.value.push({
@@ -28,7 +30,6 @@ worker.channel.on('item-links-collected', ({ objs }) => {
searchItems.value = searchItems.value.concat(objs); // Add records
});
//#endregion
-const running = ref(false);
const timelines = ref<
{
@@ -39,12 +40,8 @@ const timelines = ref<
}[]
>([]);
-const handleFetchInfoFromPage = async () => {
- if (keywordsList.value.length === 0) {
- return;
- }
+const task = async () => {
const kws = unref(keywordsList);
- running.value = true;
timelines.value = [
{
type: 'info',
@@ -71,11 +68,17 @@ const handleFetchInfoFromPage = async () => {
time: new Date().toLocaleString(),
content: `搜索任务结束`,
});
- running.value = false;
+};
+
+const handleStart = async () => {
+ if (keywordsList.value.length === 0) {
+ return;
+ }
+ startTask(task);
};
const handleInterrupt = () => {
- if (!running.value) return;
+ if (!isRunning.value) return;
worker.stop();
message.info('已触发中断,正在等待当前任务完成。', { duration: 2000 });
};
@@ -86,7 +89,7 @@ const handleInterrupt = () => {
Search Page
{
round
placeholder="请输入关键词采集信息"
/>
-
+
@@ -113,7 +116,7 @@ const handleInterrupt = () => {
中断
-
+
警告,在插件运行期间请勿与浏览器交互。
diff --git a/src/styles/index.ts b/src/styles/index.ts
index 74f07de..f1ad40f 100644
--- a/src/styles/index.ts
+++ b/src/styles/index.ts
@@ -1 +1 @@
-import './main.css';
+import './main.scss';
diff --git a/src/styles/main.css b/src/styles/main.scss
similarity index 100%
rename from src/styles/main.css
rename to src/styles/main.scss
diff --git a/src/tests/demo.spec.ts b/src/tests/demo.spec.ts
deleted file mode 100644
index 06c8725..0000000
--- a/src/tests/demo.spec.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { describe, expect, it } from 'vitest';
-
-describe('demo', () => {
- it('should work', () => {
- expect(1 + 1).toBe(2);
- });
-});