44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
function attachLiveContext(result, context, page) {
|
|
if (!result || typeof result !== 'object' || !context) return result;
|
|
Object.defineProperties(result, {
|
|
_erpContext: { value: context, enumerable: false },
|
|
_erpPage: { value: page || null, enumerable: false },
|
|
});
|
|
return result;
|
|
}
|
|
|
|
function getLiveContext(carrier) {
|
|
if (!carrier || !carrier._erpContext) return null;
|
|
return {
|
|
context: carrier._erpContext,
|
|
page: carrier._erpPage || null,
|
|
};
|
|
}
|
|
|
|
async function closeLiveContext(carrier) {
|
|
const live = getLiveContext(carrier);
|
|
if (!live) return;
|
|
await live.context.close().catch(() => {});
|
|
}
|
|
|
|
function shouldKeepLiveContextOpen(options = {}) {
|
|
const browser = (options.config && options.config.browser) || {};
|
|
return browser.keepOpenAfterOperation === true || browser.keepContextOpen === true;
|
|
}
|
|
|
|
async function closeLiveContextUnlessKept(carrier, options = {}) {
|
|
if (shouldKeepLiveContextOpen(options)) return false;
|
|
const live = getLiveContext(carrier);
|
|
if (!live) return false;
|
|
await closeLiveContext(carrier);
|
|
return true;
|
|
}
|
|
|
|
module.exports = {
|
|
attachLiveContext,
|
|
getLiveContext,
|
|
closeLiveContext,
|
|
closeLiveContextUnlessKept,
|
|
shouldKeepLiveContextOpen,
|
|
};
|