@sendbird/chat
Version:
Sendbird SDK for JavaScript
2 lines (1 loc) • 1.56 kB
JavaScript
var e=require("./__bundle-846135d7.cjs");exports.xmlHttpRequest=(r,s)=>new Promise(((t,o)=>{if("undefined"!=typeof XMLHttpRequest){const{dispatcher:n,logger:d}=e.Vault.of(r),{requestId:a,method:i,url:u,headers:p={},data:c="",uploadProgressHandler:l}=s;let m=!1;const E=new XMLHttpRequest;E.open(i,u),Object.keys(p).forEach((e=>{E.setRequestHeader(e,p[e])})),l&&E.upload.addEventListener("progress",(e=>{e.lengthComputable?l(a,e.loaded,e.total):d.debug("Progress computing failed: `Content-Length` header is not given.")})),E.onabort=()=>{o(e.SendbirdError.requestCanceled)},E.onerror=r=>{o(e.SendbirdError.networkError)},E.onreadystatechange=()=>{if(E.readyState===XMLHttpRequest.DONE&&!m)if(0===E.status||E.status>=200&&E.status<400)try{const s=JSON.parse(E.responseText);t(new e.APIResponseCommand(r,s))}catch(r){o(e.SendbirdError.networkError)}else try{const r=JSON.parse(E.responseText);if(r){const s=new e.SendbirdError(r);if(s.isSessionExpiredError){if(n.dispatch(new e.SessionExpiredCommand({reason:s.code,message:s.message})),!(E instanceof e.SessionRefreshAPICommand)){const r=new e.Deferred;return n.dispatch(new e.RequestResendCommand({request:E,deferred:r,error:s})),r.promise}}else s.isSessionInvalidatedError&&n.dispatch(new e.SessionExpiredCommand({reason:s.code,message:s.message}));o(s)}else o(e.SendbirdError.requestFailed)}catch(r){o(e.SendbirdError.requestFailed)}},n.on((r=>{r instanceof e.CancelXMLHttpRequestCommand&&(r.requestId&&r.requestId!==a||(m=!0,E.abort()))})),E.send(c)}else o(e.SendbirdError.xmlHttpRequestNotSupported)}));