fix API error propegation
This commit is contained in:
parent
4c94f65493
commit
7a9aaf377b
3 changed files with 27 additions and 25 deletions
|
@ -69,7 +69,7 @@ export function doUserEmailNew(email) {
|
||||||
"post"
|
"post"
|
||||||
)
|
)
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
if (error.xhr && error.xhr.status == 409) {
|
if (error.response && error.response.status == 409) {
|
||||||
return lbryio.call(
|
return lbryio.call(
|
||||||
"user_email",
|
"user_email",
|
||||||
"resend_token",
|
"resend_token",
|
||||||
|
|
|
@ -9,26 +9,28 @@ jsonrpc.call = function(
|
||||||
connectFailedCallback,
|
connectFailedCallback,
|
||||||
timeout
|
timeout
|
||||||
) {
|
) {
|
||||||
function checkStatus(response) {
|
function checkAndParse(response) {
|
||||||
if (response.status >= 200 && response.status < 300) {
|
if (response.status >= 200 && response.status < 300) {
|
||||||
return response;
|
return response.json();
|
||||||
} else {
|
} else {
|
||||||
var error = new Error(response.statusText);
|
return response.json().then(json => {
|
||||||
error.response = response;
|
let error;
|
||||||
throw error;
|
if (json.error) {
|
||||||
|
error = new Error(json.error);
|
||||||
|
} else {
|
||||||
|
error = new Error("Protocol error with unknown response signature");
|
||||||
|
}
|
||||||
|
return Promise.reject(error);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function parseJSON(response) {
|
|
||||||
return response.json();
|
|
||||||
}
|
|
||||||
|
|
||||||
function makeRequest(url, options) {
|
function makeRequest(url, options) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
fetch(url, options).then(resolve).catch(reject);
|
fetch(url, options).then(resolve).catch(reject);
|
||||||
|
|
||||||
if (timeout) {
|
if (timeout) {
|
||||||
const e = new Error(__("XMLHttpRequest connection timed out"));
|
const e = new Error(__("Protocol request timed out"));
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
return reject(e);
|
return reject(e);
|
||||||
}, timeout);
|
}, timeout);
|
||||||
|
@ -51,8 +53,7 @@ jsonrpc.call = function(
|
||||||
sessionStorage.setItem("JSONRPCCounter", counter + 1);
|
sessionStorage.setItem("JSONRPCCounter", counter + 1);
|
||||||
|
|
||||||
return fetch(url, options)
|
return fetch(url, options)
|
||||||
.then(checkStatus)
|
.then(checkAndParse)
|
||||||
.then(parseJSON)
|
|
||||||
.then(response => {
|
.then(response => {
|
||||||
const error =
|
const error =
|
||||||
response.error || (response.result && response.result.error);
|
response.error || (response.result && response.result.error);
|
||||||
|
|
|
@ -45,24 +45,25 @@ lbryio.call = function(resource, action, params = {}, method = "get") {
|
||||||
return Promise.reject(new Error(__("Invalid method")));
|
return Promise.reject(new Error(__("Invalid method")));
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkStatus(response) {
|
function checkAndParse(response) {
|
||||||
if (response.status >= 200 && response.status < 300) {
|
if (response.status >= 200 && response.status < 300) {
|
||||||
return response;
|
return response.json();
|
||||||
} else {
|
} else {
|
||||||
var error = new Error(response.statusText);
|
return response.json().then(json => {
|
||||||
error.response = response;
|
let error;
|
||||||
throw error;
|
if (json.error) {
|
||||||
|
error = new Error(json.error);
|
||||||
|
} else {
|
||||||
|
error = new Error("Unknown API error signature");
|
||||||
|
}
|
||||||
|
error.response = response; //this is primarily a hack used in actions/user.js
|
||||||
|
return Promise.reject(error);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function parseJSON(response) {
|
|
||||||
return response.json();
|
|
||||||
}
|
|
||||||
|
|
||||||
function makeRequest(url, options) {
|
function makeRequest(url, options) {
|
||||||
return fetch(url, options).then(checkStatus).then(parseJSON).catch(e => {
|
return fetch(url, options).then(checkAndParse);
|
||||||
throw e;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return lbryio.getAuthToken().then(token => {
|
return lbryio.getAuthToken().then(token => {
|
||||||
|
|
Loading…
Add table
Reference in a new issue