react-dadata
Version:
React-компонент для подсказок адресов, организаций и банков с помощью сервиса DaData.ru
47 lines (46 loc) • 1.45 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeRequest = void 0;
var xhr;
var makeRequest = function (method, endpoint, data, cache, onReceiveData) {
if (xhr) {
xhr.abort();
}
var cacheKey;
if (cache) {
cacheKey = cache.serializeCacheKey({
headers: data.headers,
body: data.json,
url: endpoint,
method: method,
});
var cachedData = cache.get(cacheKey);
if (cachedData) {
onReceiveData(cachedData);
return;
}
}
xhr = new XMLHttpRequest();
xhr.open(method, endpoint);
if (data.headers) {
for (var _i = 0, _a = Object.entries(data.headers); _i < _a.length; _i++) {
var _b = _a[_i], header = _b[0], headerValue = _b[1];
xhr.setRequestHeader(header, headerValue);
}
}
xhr.send(JSON.stringify(data.json));
xhr.onreadystatechange = function () {
var _a;
if (!xhr || xhr.readyState !== 4) {
return;
}
if (xhr.status === 200) {
var payload = (_a = JSON.parse(xhr.response)) === null || _a === void 0 ? void 0 : _a.suggestions;
if (payload) {
cache === null || cache === void 0 ? void 0 : cache.set(cacheKey, payload);
onReceiveData(payload);
}
}
};
};
exports.makeRequest = makeRequest;
;