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 }>(); 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) => { 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 = () => {