simplify alarm and check webRequest without using 'in'

This commit is contained in:
Sebastian 2022-04-28 15:55:20 -03:00
parent b239ae1029
commit 508f5d2ea7
No known key found for this signature in database
GPG Key ID: BE4FF68352439FC1
2 changed files with 10 additions and 39 deletions

View File

@ -326,27 +326,6 @@ export interface RetryLoopOpts {
stopWhenDone?: boolean; stopWhenDone?: boolean;
} }
/**
* This iteration hint will keep incrementing while the taskLoop iteration.
* If the hint does not match the current iteration it means that another
* promises is also working or has done some work before.
*/
let iterationHint = 0
function thereIsAnotherPromiseWorking(iteration: number): boolean {
if (iterationHint > iteration) {
logger.trace(`some other promise is or has done some progress`);
iterationHint = iteration;
//we know that another promise did some work but don't know if still active
//so we take ownership and do work
} else if (iterationHint < iteration) {
//another promise take ownership that means that our time has come to an end
return true
}
// increment the hint to match the next loop
iterationHint++
return false
}
/** /**
* Main retry loop of the wallet. * Main retry loop of the wallet.
* *
@ -357,10 +336,6 @@ async function runTaskLoop(
opts: RetryLoopOpts = {}, opts: RetryLoopOpts = {},
): Promise<void> { ): Promise<void> {
for (let iteration = 0; !ws.stopped; iteration++) { for (let iteration = 0; !ws.stopped; iteration++) {
if (thereIsAnotherPromiseWorking(iteration)) {
logger.trace(`another promise is working, we just need one`);
return;
}
const pending = await getPendingOperations(ws); const pending = await getPendingOperations(ws);
logger.trace(`pending operations: ${j2s(pending)}`); logger.trace(`pending operations: ${j2s(pending)}`);
let numGivingLiveness = 0; let numGivingLiveness = 0;

View File

@ -51,11 +51,11 @@ function keepAlive(callback: any): void {
chrome.alarms.onAlarm.addListener((a) => { chrome.alarms.onAlarm.addListener((a) => {
logger.trace(`kee p alive alarm: ${a.name}`) logger.trace(`kee p alive alarm: ${a.name}`)
callback() // callback()
}) })
} else { // } else {
callback();
} }
callback();
} }
@ -331,29 +331,25 @@ function registerTalerHeaderListener(callback: (tabId: number, url: string) => v
getPermissionsApi().containsHostPermissions().then(result => { getPermissionsApi().containsHostPermissions().then(result => {
//if there is a handler already, remove it //if there is a handler already, remove it
if ( if (
"webRequest" in chrome &&
"onHeadersReceived" in chrome.webRequest &&
prevHeaderListener && prevHeaderListener &&
chrome.webRequest.onHeadersReceived.hasListener(prevHeaderListener) chrome?.webRequest?.onHeadersReceived?.hasListener(prevHeaderListener)
) { ) {
chrome.webRequest.onHeadersReceived.removeListener(prevHeaderListener); chrome.webRequest.onHeadersReceived.removeListener(prevHeaderListener);
} }
//if the result was positive, add the headerListener //if the result was positive, add the headerListener
if (result) { if (result) {
chrome.webRequest.onHeadersReceived.addListener( chrome?.webRequest?.onHeadersReceived?.addListener(
headerListener, headerListener,
{ urls: ["<all_urls>"] }, { urls: ["<all_urls>"] },
["responseHeaders"], ["responseHeaders"],
); );
} }
//notify the browser about this change, this operation is expensive //notify the browser about this change, this operation is expensive
if ("webRequest" in chrome) { chrome?.webRequest?.handlerBehaviorChanged(() => {
chrome.webRequest.handlerBehaviorChanged(() => { if (chrome.runtime.lastError) {
if (chrome.runtime.lastError) { console.error(JSON.stringify(chrome.runtime.lastError));
console.error(JSON.stringify(chrome.runtime.lastError)); }
} });
});
}
}); });
} }