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