1/** 2 * Copyright (c) 650 Industries. 3 * Copyright (c) Facebook, Inc. and its affiliates. 4 * 5 * This source code is licensed under the MIT license found in the 6 * LICENSE file in the root directory of this source tree. 7 */ 8import { Platform } from 'react-native'; 9// @ts-expect-error 10import Networking from 'react-native/Libraries/Network/RCTNetworking'; 11export function fetchAsync(url) { 12 let id = null; 13 let responseText = null; 14 let headers = {}; 15 let dataListener = null; 16 let completeListener = null; 17 let responseListener = null; 18 return new Promise((resolve, reject) => { 19 const addListener = Networking.addListener; 20 dataListener = addListener('didReceiveNetworkData', ([requestId, response]) => { 21 if (requestId === id) { 22 responseText = response; 23 } 24 }); 25 responseListener = addListener('didReceiveNetworkResponse', ([requestId, status, responseHeaders]) => { 26 if (requestId === id) { 27 headers = responseHeaders; 28 } 29 }); 30 completeListener = addListener('didCompleteNetworkResponse', ([requestId, error]) => { 31 if (requestId === id) { 32 if (error) { 33 reject(error); 34 } 35 else { 36 resolve({ body: responseText, headers }); 37 } 38 } 39 }); 40 Networking.sendRequest('GET', 'asyncRequest', url, { 41 'expo-platform': Platform.OS, 42 }, '', 'text', false, 0, (requestId) => { 43 id = requestId; 44 }, true); 45 }).finally(() => { 46 dataListener?.remove(); 47 completeListener?.remove(); 48 responseListener?.remove(); 49 }); 50} 51//# sourceMappingURL=fetchAsync.native.js.map