1import {isValidStr} from "./util.js"; 2import {alertError, alertSimpleSuccess, showSuccessToast} from "./uiutil.js"; 3 4export function sendPutOrPostRequest(url, payload, successOnCloseCallback, failureOnCloseCallback, 5 alwaysCallback, submitBtnId, requestType, 6 successOnOpenCallback = null, failureOnOpenCallback = null) { 7 8 if (!isValidStr(requestType)) { 9 requestType = 'PUT' 10 } 11 12 if (requestType !== "PUT" && requestType !== "POST") { 13 return; 14 } 15 16 if (isValidStr(submitBtnId)) { 17 $("#" + submitBtnId).attr('disabled', true); 18 } 19 20 $.ajax({ 21 async: true, 22 type: requestType, 23 url: url, 24 headers: getDefaultHttpHeaders(), 25 contentType: "application/json; charset=utf-8", 26 data: String(payload), 27 cache: false, 28 timeout: 90000, 29 }) 30 .done(function (data) { 31 try { 32 processAjaxSuccessResult(data, successOnCloseCallback, successOnOpenCallback); 33 } catch (e) { 34 } 35 }) 36 .fail(function (jqXHR, textStatus) { 37 try { 38 processAjaxErrorResponse(jqXHR, textStatus, failureOnCloseCallback, failureOnOpenCallback); 39 } catch (e) { 40 } 41 }) 42 .always(function () { 43 if (isValidStr(submitBtnId)) { 44 $("#" + submitBtnId).attr('disabled', false); 45 } 46 47 if (alwaysCallback != null) { 48 alwaysCallback(); 49 } 50 }); 51} 52 53export function sendDeleteRequest(url, successOnCloseCallback, failureOnCloseCallback, 54 alwaysCallback, submitBtnId, 55 successOnOpenCallback = null, 56 failureOnOpenCallback = null) { 57 58 if (isValidStr(submitBtnId)) { 59 $("#" + submitBtnId).attr('disabled', true); 60 } 61 62 $.ajax({ 63 async: true, 64 type: 'DELETE', 65 url: url, 66 headers: getDefaultHttpHeaders(), 67 contentType: "application/json; charset=utf-8", 68 cache: false, 69 timeout: 90000, 70 }) 71 .done(function (data) { 72 try { 73 processAjaxSuccessResult(data, successOnCloseCallback, successOnOpenCallback); 74 } catch (e) { 75 } 76 77 }) 78 .fail(function (jqXHR, textStatus) { 79 try { 80 processAjaxErrorResponse(jqXHR, textStatus, failureOnCloseCallback, failureOnOpenCallback); 81 } catch (e) { 82 } 83 84 }) 85 .always(function () { 86 if (isValidStr(submitBtnId)) { 87 $("#" + submitBtnId).attr('disabled', false); 88 } 89 90 if (alwaysCallback != null) { 91 alwaysCallback(); 92 } 93 }); 94} 95 96export function sendGetRequest(url, successCallback, failureCallback, 97 alwaysCallback, submitBtnId) { 98 99 if (isValidStr(submitBtnId)) { 100 $("#" + submitBtnId).attr('disabled', true); 101 } 102 103 $.ajax({ 104 async: true, 105 type: 'GET', 106 url: url, 107 headers: getDefaultHttpHeaders(), 108 contentType: "application/json; charset=utf-8", 109 cache: false, 110 timeout: 90000, 111 }) 112 .done(function (data) { 113 try { 114 if (successCallback != null) { 115 successCallback(data); 116 } 117 } catch (e) { 118 } 119 }) 120 .fail(function (jqXHR, textStatus) { 121 try { 122 processAjaxErrorResponse(jqXHR, textStatus, failureCallback); 123 } catch (e) { 124 } 125 }) 126 .always(function () { 127 if (isValidStr(submitBtnId)) { 128 $("#" + submitBtnId).attr('disabled', false); 129 } 130 131 if (alwaysCallback != null) { 132 alwaysCallback(); 133 } 134 }); 135} 136 137 138export function processAjaxSuccessResult(data, onCloseCallback = null, onOpenCallback = null) { 139 // If there is no success message to display 140 if (typeof data === 'string' && !isValidStr(data)) { 141 if (onCloseCallback != null) { 142 onCloseCallback(); 143 } 144 145 return; 146 } 147 148 let result; 149 if (typeof data === 'string') { 150 result = JSON.parse(data); 151 } else { 152 result = JSON.parse(JSON.stringify(data)) 153 } 154 if (result.displayAsToast === "true") { 155 showSuccessToast(result.alertTitle, result.alertDetails, 156 onCloseCallback, onOpenCallback); 157 } else { 158 alertSimpleSuccess(result.alertTitle, 159 result.alertDetails, onCloseCallback, onOpenCallback, data); 160 } 161 162} 163 164export function processAjaxErrorResponse(jqXHR, textStatus, onCloseCallback = null, onOpenCallback = null) { 165 if (jqXHR.status === 302) { 166 window.location.href = jqXHR.responseText; 167 return; 168 } 169 170 try { 171 alertError(jqXHR, textStatus, onCloseCallback, onOpenCallback); 172 } catch (ignore) { 173 if (onCloseCallback !== null) { 174 onCloseCallback(); 175 } 176 } 177 178} 179 180export function getDefaultHttpHeaders() { 181 var headers = { 182 "gb-dashboard-view-id": window.sessionStorage.getItem("gb-dashboard-view-id"), 183 "referer-lang": document.documentElement.lang 184 }; 185 try { 186 var country = localStorage.getItem("gb_user_country"); 187 if (country) headers["gb-user-country"] = country; 188 } catch (e) { /* private browsing */ 189 } 190 return headers; 191}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.