1
This commit is contained in:
@@ -1,27 +1,21 @@
|
||||
import type { CrawlTaskState } from '@/types';
|
||||
|
||||
// chrome.storage.local 中保存当前爬取任务状态的键名。
|
||||
const CRAWL_TASK_STORAGE_KEY = 'crawlTaskState';
|
||||
|
||||
/**
|
||||
* 从 chrome.storage.local 读取当前爬取任务状态。
|
||||
*/
|
||||
export async function getCrawlTaskState(): Promise<CrawlTaskState | null> {
|
||||
const result = await chrome.storage.local.get(CRAWL_TASK_STORAGE_KEY);
|
||||
const state = result[CRAWL_TASK_STORAGE_KEY];
|
||||
return isCrawlTaskState(state) ? state : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将最新爬取任务状态写入 chrome.storage.local,供 popup 和 content script 同步读取。
|
||||
*/
|
||||
export async function setCrawlTaskState(state: CrawlTaskState): Promise<void> {
|
||||
await chrome.storage.local.set({ [CRAWL_TASK_STORAGE_KEY]: state });
|
||||
}
|
||||
|
||||
/**
|
||||
* 读取任务状态后执行不可变更新,避免覆盖已取消或已替换的任务。
|
||||
*/
|
||||
export async function clearCrawlTaskState(): Promise<void> {
|
||||
await chrome.storage.local.remove(CRAWL_TASK_STORAGE_KEY);
|
||||
}
|
||||
|
||||
export async function updateCrawlTaskState(
|
||||
taskId: string,
|
||||
updater: (state: CrawlTaskState) => CrawlTaskState,
|
||||
@@ -35,9 +29,6 @@ export async function updateCrawlTaskState(
|
||||
await setCrawlTaskState(updater(state));
|
||||
}
|
||||
|
||||
/**
|
||||
* 粗略判断 storage 中读取到的值是否像一个爬取任务状态对象。
|
||||
*/
|
||||
function isCrawlTaskState(value: unknown): value is CrawlTaskState {
|
||||
return typeof value === 'object' && value !== null && 'id' in value && 'steps' in value;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user