1*a5fb1ba8SEvan Bacon"use strict";
226ad19fcSEvan Bacon/**
326ad19fcSEvan Bacon * Copyright (c) 650 Industries.
426ad19fcSEvan Bacon * Copyright (c) Facebook, Inc. and its affiliates.
526ad19fcSEvan Bacon *
626ad19fcSEvan Bacon * This source code is licensed under the MIT license found in the
726ad19fcSEvan Bacon * LICENSE file in the root directory of this source tree.
826ad19fcSEvan Bacon */
9*a5fb1ba8SEvan Baconvar __importDefault = (this && this.__importDefault) || function (mod) {
10*a5fb1ba8SEvan Bacon    return (mod && mod.__esModule) ? mod : { "default": mod };
11*a5fb1ba8SEvan Bacon};
12*a5fb1ba8SEvan BaconObject.defineProperty(exports, "__esModule", { value: true });
13*a5fb1ba8SEvan Baconexports.fetchAsync = void 0;
14*a5fb1ba8SEvan Baconconst react_native_1 = require("react-native");
1526ad19fcSEvan Bacon// @ts-expect-error
16*a5fb1ba8SEvan Baconconst RCTNetworking_1 = __importDefault(require("react-native/Libraries/Network/RCTNetworking"));
17*a5fb1ba8SEvan Baconfunction fetchAsync(url) {
1826ad19fcSEvan Bacon    let id = null;
1926ad19fcSEvan Bacon    let responseText = null;
2026ad19fcSEvan Bacon    let headers = {};
2126ad19fcSEvan Bacon    let dataListener = null;
2226ad19fcSEvan Bacon    let completeListener = null;
2326ad19fcSEvan Bacon    let responseListener = null;
2426ad19fcSEvan Bacon    return new Promise((resolve, reject) => {
25*a5fb1ba8SEvan Bacon        const addListener = RCTNetworking_1.default.addListener;
2626ad19fcSEvan Bacon        dataListener = addListener('didReceiveNetworkData', ([requestId, response]) => {
2726ad19fcSEvan Bacon            if (requestId === id) {
2826ad19fcSEvan Bacon                responseText = response;
2926ad19fcSEvan Bacon            }
3026ad19fcSEvan Bacon        });
3126ad19fcSEvan Bacon        responseListener = addListener('didReceiveNetworkResponse', ([requestId, status, responseHeaders]) => {
3226ad19fcSEvan Bacon            if (requestId === id) {
3326ad19fcSEvan Bacon                headers = responseHeaders;
3426ad19fcSEvan Bacon            }
3526ad19fcSEvan Bacon        });
3626ad19fcSEvan Bacon        completeListener = addListener('didCompleteNetworkResponse', ([requestId, error]) => {
3726ad19fcSEvan Bacon            if (requestId === id) {
3826ad19fcSEvan Bacon                if (error) {
3926ad19fcSEvan Bacon                    reject(error);
4026ad19fcSEvan Bacon                }
4126ad19fcSEvan Bacon                else {
4226ad19fcSEvan Bacon                    resolve({ body: responseText, headers });
4326ad19fcSEvan Bacon                }
4426ad19fcSEvan Bacon            }
4526ad19fcSEvan Bacon        });
46*a5fb1ba8SEvan Bacon        RCTNetworking_1.default.sendRequest('GET', 'asyncRequest', url, {
47*a5fb1ba8SEvan Bacon            'expo-platform': react_native_1.Platform.OS,
4826ad19fcSEvan Bacon        }, '', 'text', false, 0, (requestId) => {
4926ad19fcSEvan Bacon            id = requestId;
5026ad19fcSEvan Bacon        }, true);
5126ad19fcSEvan Bacon    }).finally(() => {
5226ad19fcSEvan Bacon        dataListener?.remove();
5326ad19fcSEvan Bacon        completeListener?.remove();
5426ad19fcSEvan Bacon        responseListener?.remove();
5526ad19fcSEvan Bacon    });
5626ad19fcSEvan Bacon}
57*a5fb1ba8SEvan Baconexports.fetchAsync = fetchAsync;
5826ad19fcSEvan Bacon//# sourceMappingURL=fetchAsync.native.js.map