check url change before extract data
This commit is contained in:
		| @ -1,5 +1,5 @@ | ||||
| import { Actions, Request } from "../common"; | ||||
| import { sendMessage } from "./messaging"; | ||||
| import { sendMessage, ResponseChecker } from "./messaging"; | ||||
| import { logger } from "./logger"; | ||||
|  | ||||
| /** | ||||
| @ -15,7 +15,7 @@ export function redirectTab(tab: chrome.tabs.Tab, url: string) { | ||||
|                 action: Actions.GOTO_URL, | ||||
|                 url: url | ||||
|             } | ||||
|             let checker = async (u, err, tryCount): Promise<string> => { | ||||
|             let checker: ResponseChecker<string> = async (r, err, tryCount): Promise<string> => { | ||||
|                 let queryErr: any; | ||||
|                 let newURL = await queryUrl(tab).catch(e => queryErr = e); | ||||
|                 if (queryErr) { | ||||
| @ -42,13 +42,16 @@ export function redirectTab(tab: chrome.tabs.Tab, url: string) { | ||||
|  * @param {Array<string>} fieldSelectors fields selectors for selecting fields (data columns) under each item | ||||
|  * @returns {Promise<string[]>} a promise of extracted data | ||||
|  */ | ||||
| export function extractTabData(tab: chrome.tabs.Tab, itemsSelector: string, fieldSelectors: string[], askOnfail?: boolean) { | ||||
|     let req = { | ||||
| export function extractTabData(tab: chrome.tabs.Tab, itemsSelector: string, fieldSelectors: string[], expectedURL?: string, askOnfail?: boolean) { | ||||
|     let req: Request = { | ||||
|         action: Actions.EXTRACT, | ||||
|         itemsSelector: itemsSelector, | ||||
|         fieldSelectors: fieldSelectors | ||||
|         fieldSelectors: fieldSelectors, | ||||
|         url: expectedURL, | ||||
|     } | ||||
|     let checker = (result, err, tryCount) => { | ||||
|     let checker: ResponseChecker<string[][]> = (response, err, tryCount) => { | ||||
|         if (response.error) throw response.error; | ||||
|         let result = response.result; | ||||
|         if (!result || !result.length) { | ||||
|             if ( | ||||
|                 tryCount % 20 == 0 && ( | ||||
| @ -76,7 +79,9 @@ export async function ping(tab, count = 1) { | ||||
|     let req = { | ||||
|         action: Actions.PING | ||||
|     } | ||||
|     let checker = (r: string, e, c) => r == "pong" ? r : undefined; | ||||
|     let checker: ResponseChecker<string> = (r, e, c) => | ||||
|         r.result == "pong" ? r.result : undefined; | ||||
|  | ||||
|     let pong = await sendMessage<string>(tab, req, 'Check tab availability...', checker, 1000, count).catch(() => { }); | ||||
|     return pong == "pong"; | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user