From 3734c83d218accefcab4eded61041dd7032f09d5 Mon Sep 17 00:00:00 2001
From: johnathan <952508490@qq.com>
Date: Tue, 20 May 2025 17:57:03 +0800
Subject: [PATCH] Update UI & Worker
---
src/components/DetailDescription.vue | 12 ++++-
src/components/HeaderMenu.vue | 35 -------------
src/components/HeaderTitle.vue | 52 +++++++++++++++++++
src/logic/page-worker/index.ts | 11 ++--
src/logic/page-worker/types.d.ts | 2 +-
...tailPageWorker.vue => DetailPageEntry.vue} | 38 ++++++--------
src/sidepanel/ReviewPageEntry.vue | 18 +++++++
...archPageWorker.vue => SearchPageEntry.vue} | 16 ++----
src/sidepanel/Sidepanel.vue | 13 +++--
9 files changed, 116 insertions(+), 81 deletions(-)
delete mode 100644 src/components/HeaderMenu.vue
create mode 100644 src/components/HeaderTitle.vue
rename src/sidepanel/{DetailPageWorker.vue => DetailPageEntry.vue} (91%)
create mode 100644 src/sidepanel/ReviewPageEntry.vue
rename src/sidepanel/{SearchPageWorker.vue => SearchPageEntry.vue} (93%)
diff --git a/src/components/DetailDescription.vue b/src/components/DetailDescription.vue
index 98f3d17..0efec53 100644
--- a/src/components/DetailDescription.vue
+++ b/src/components/DetailDescription.vue
@@ -6,7 +6,7 @@ const props = defineProps<{ model: AmazonDetailItem }>();
-
+
{{ props.model.asin }}
@@ -28,11 +28,19 @@ const props = defineProps<{ model: AmazonDetailItem }>();
{{ props.model.category2?.rank || '-' }}
-
+
{{ link }}
+
+
+
{{ review.username }}:
+
+ {{ paragraph }}
+
+
+
diff --git a/src/components/HeaderMenu.vue b/src/components/HeaderMenu.vue
deleted file mode 100644
index b098cf7..0000000
--- a/src/components/HeaderMenu.vue
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/components/HeaderTitle.vue b/src/components/HeaderTitle.vue
new file mode 100644
index 0000000..e76c5f9
--- /dev/null
+++ b/src/components/HeaderTitle.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
diff --git a/src/logic/page-worker/index.ts b/src/logic/page-worker/index.ts
index 2e6920d..b5844c5 100644
--- a/src/logic/page-worker/index.ts
+++ b/src/logic/page-worker/index.ts
@@ -177,11 +177,12 @@ class AmazonPageWorkerImpl implements AmazonPageWorker {
await new Promise((resolve) => setTimeout(resolve, 2000)); // Wait 2 seconds.
//#endregion
//#region Fetch Top Reviews
- // const reviews = await injector.getReviews();
- // reviews.length > 0 &&
- // this.channel.emit('item-top-reviews-collected', {
- // reviews: reviews.map((r) => ({ asin: params.asin, ...r })),
- // });
+ const reviews = await injector.getTopReviews();
+ reviews.length > 0 &&
+ this.channel.emit('item-top-reviews-collected', {
+ asin: params.asin,
+ topReviews: reviews.map((r) => ({ asin: params.asin, ...r })),
+ });
//#endregion
}
diff --git a/src/logic/page-worker/types.d.ts b/src/logic/page-worker/types.d.ts
index 570fd71..6e7805d 100644
--- a/src/logic/page-worker/types.d.ts
+++ b/src/logic/page-worker/types.d.ts
@@ -57,7 +57,7 @@ interface AmazonPageWorkerEvents {
/**
* The event is fired when top reviews collected
*/
- ['item-top-reviews-collected']: { reviews: AmazonReview[] };
+ ['item-top-reviews-collected']: Pick;
/**
* Error event that occurs when there is an issue with the Amazon page worker.
diff --git a/src/sidepanel/DetailPageWorker.vue b/src/sidepanel/DetailPageEntry.vue
similarity index 91%
rename from src/sidepanel/DetailPageWorker.vue
rename to src/sidepanel/DetailPageEntry.vue
index 1ecef0b..2dccaba 100644
--- a/src/sidepanel/DetailPageWorker.vue
+++ b/src/sidepanel/DetailPageEntry.vue
@@ -45,7 +45,7 @@ worker.channel.on('item-rating-collected', (ev) => {
time: new Date().toLocaleString(),
content: `评分: ${ev.rating};评价数:${ev.ratingCount}`,
});
- createOrUpdateDetailItem(ev);
+ updateDetailItems(ev);
});
worker.channel.on('item-category-rank-collected', (ev) => {
timelines.value.push({
@@ -57,7 +57,7 @@ worker.channel.on('item-category-rank-collected', (ev) => {
ev.category2 ? `#${ev.category2.rank} in ${ev.category2.name}` : '',
].join('\n'),
});
- createOrUpdateDetailItem(ev);
+ updateDetailItems(ev);
});
worker.channel.on('item-images-collected', (ev) => {
timelines.value.push({
@@ -66,7 +66,16 @@ worker.channel.on('item-images-collected', (ev) => {
time: new Date().toLocaleString(),
content: `图片数: ${ev.imageUrls!.length}`,
});
- createOrUpdateDetailItem(ev);
+ updateDetailItems(ev);
+});
+worker.channel.on('item-top-reviews-collected', (ev) => {
+ timelines.value.push({
+ type: 'success',
+ title: `商品${ev.asin}精选评论`,
+ time: new Date().toLocaleString(),
+ content: `精选评论数: ${ev.topReviews!.length}`,
+ });
+ updateDetailItems(ev);
});
const handleImportAsin: UploadOnChange = ({ fileList }) => {
@@ -139,7 +148,7 @@ const handleInterrupt = () => {
message.info('已触发中断,正在等待当前任务完成。', { duration: 2000 });
};
-const createOrUpdateDetailItem = (info: AmazonDetailItem) => {
+const updateDetailItems = (info: AmazonDetailItem) => {
const targetIndex = detailItems.value.findLastIndex((item) => info.asin === item.asin);
if (targetIndex > -1) {
const origin = detailItems.value[targetIndex];
@@ -152,12 +161,8 @@ const createOrUpdateDetailItem = (info: AmazonDetailItem) => {
-
-
-
-
-
Detail Page
-
+
+
Detail Page
@@ -210,24 +215,13 @@ const createOrUpdateDetailItem = (info: AmazonDetailItem) => {
diff --git a/src/sidepanel/SearchPageWorker.vue b/src/sidepanel/SearchPageEntry.vue
similarity index 93%
rename from src/sidepanel/SearchPageWorker.vue
rename to src/sidepanel/SearchPageEntry.vue
index 6c602dd..252ef77 100644
--- a/src/sidepanel/SearchPageWorker.vue
+++ b/src/sidepanel/SearchPageEntry.vue
@@ -82,12 +82,8 @@ const handleInterrupt = () => {
-
-
-
-
- Search Page
-
+
+
Search Page
{
警告,在插件运行期间请勿与浏览器交互。
-
+