Skip to content

Commit 8c66f66

Browse files
committed
Able to stop workers
1 parent 75ec7f4 commit 8c66f66

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

frontend/src/pages/AccountReceive.vue

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@
101101
</div>
102102
<div v-else class="text-center text-italic">{{ $t('Receive.fetching-latest') }}</div>
103103
</div>
104+
<base-button @click="terminateWorkers()" class="text-center" label="stop workers" />
104105
</div>
105106
</q-page>
106107
</template>
@@ -130,6 +131,7 @@ function useScan() {
130131
const scanStatus = ref<ScanStatus>('waiting');
131132
const scanPercentage = ref<number>(0);
132133
const userAnnouncements = ref<UserAnnouncement[]>([]);
134+
const workers: Worker[] = [];
133135
134136
// Start and end blocks for advanced mode settings
135137
const { advancedMode, startBlock, endBlock, setScanBlocks, setScanPrivateKey, scanPrivateKey, resetScanSettings } =
@@ -199,6 +201,10 @@ function useScan() {
199201
await scan();
200202
}
201203
204+
function terminateWorkers() {
205+
workers.forEach((worker) => worker.terminate());
206+
}
207+
202208
async function scan() {
203209
if (!umbra.value) throw new Error('No umbra instance found. Please make sure you are on a supported network');
204210
scanStatus.value = 'fetching latest';
@@ -228,6 +234,7 @@ function useScan() {
228234
spendingPublicKey,
229235
viewingPrivateKey,
230236
announcements,
237+
workers,
231238
(percent) => {
232239
scanPercentage.value = Math.floor(percent);
233240
},
@@ -296,6 +303,9 @@ function useScan() {
296303
}
297304
// Wait for the first batch of web workers to finish scanning before creating new workers
298305
await firstScanPromise;
306+
terminateWorkers();
307+
// Clear out existing workers
308+
workers.length = 0;
299309
scanStatus.value = 'scanning';
300310
await filterUserAnnouncementsAsync(spendingPubKey, viewingPrivKey, announcementsQueue);
301311
scanStatus.value = 'complete';
@@ -337,6 +347,7 @@ function useScan() {
337347
startBlockLocal,
338348
userAddress,
339349
userAnnouncements,
350+
terminateWorkers,
340351
};
341352
}
342353

frontend/src/worker/worker.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ export const filterUserAnnouncements = (
55
spendingPublicKey: string,
66
viewingPrivateKey: string,
77
announcements: AnnouncementDetail[],
8+
workers: Worker[],
89
progress: (percentage: number) => void,
910
completion: (userAnnouncements: UserAnnouncement[]) => void
1011
) => {
@@ -58,7 +59,6 @@ export const filterUserAnnouncements = (
5859
}
5960

6061
// assign tasks to workers
61-
const workers: Worker[] = [];
6262
const progressRecorder: number[] = [];
6363
let progressSum = 0;
6464
// Here we will initialize `nCores` workers by constructing `Worker()` imported from worker script `filter.worker.ts`

0 commit comments

Comments
 (0)