Untitled
export async function nodejsFetch(input: RequestInfo | URL, init?: RequestInit) { const { url, method, headers, body } = processFetchInput(input, init); return new Promise<CapacitorResponse>((resolve, reject) => { let response: CapacitorResponse | undefined; const reqid = Date.now() + Math.random().toString(36).substring(2); NodeJS.whenReady().then(() => { const cleanup = () => NodeJS.removeAllListeners(reqid); NodeJS.addListener(reqid, (event) => { try { const [operationStatus, ...args] = event.args; switch (operationStatus) { case 'error': cleanup(); reject(new Error(args[0])); break; case 'success': response = new CapacitorResponse(args[0]); break; case 'done': cleanup(); if (response) resolve(response); else reject(new Error('No response received')); break; } } catch (err) { cleanup(); reject(err); } }); NodeJS.send({ eventName: 'fetch', args: [reqid, url, method, headers, body], }); }).catch(reject); }); }
Leave a Comment