import {IBidTask, IBidTaskResult} from "/src-com";
|
import {readTabLoadedStatus} from "../lib/readTab";
|
import {callTabMsgMethod} from "gs-br-ext";
|
import {commitBidBg} from "../services/commitBidBg";
|
|
export async function executeBidTask(task: IBidTask) {
|
const id = parseInt(`${task.id}`);
|
if (!/^\w\d+$/.test(task.params?.goodsId)) {
|
const results = {error: 'params.goodsId format error'}
|
return {
|
task,
|
localResult: results,
|
remoteResult: await commitBidBg({id, results})
|
}
|
}
|
|
const taskUrl = `https://auctions.yahoo.co.jp/jp/auction/${task.params.goodsId}`;
|
console.log('正在执行:', taskUrl, task)
|
const existTab = await chrome.tabs.query({url: taskUrl})
|
if (existTab.length) {
|
const {id: tabId} = existTab[0]
|
return executeToContent(task, tabId);
|
}
|
const {id: tabId} = await chrome.tabs.create({url: taskUrl})
|
const sender: any = {tab: {id: tabId}}
|
return executeToContent(task, tabId, sender);
|
}
|
|
async function executeToContent(task: IBidTask, tabId: number, sender?: chrome.runtime.MessageSender) {
|
const id = parseInt(`${task.id}`);
|
const status = await readTabLoadedStatus(tabId);
|
if (status != 'complete') {
|
const results = {error: 'create browser window/tab failed'}
|
return {
|
task,
|
localResult: results,
|
remoteResult: await commitBidBg({id, results}, sender)
|
}
|
}
|
const results: IBidTaskResult['results'] = await callTabMsgMethod({
|
id: tabId,
|
method: 'executeBidTask',
|
arg: task,
|
hasReturn: true
|
})
|
return {
|
task,
|
link: `https://auctions.yahoo.co.jp/jp/show/bid_hist?aID=${task?.params?.goodsId}`,
|
link2: `https://auctions.yahoo.co.jp/my/bidding`,
|
localResult: results,
|
remoteResult: await commitBidBg({id, results}, sender)
|
};
|
}
|