refactor post_toast_callback a bit and create createXhrWithFormKey function

master
justcool393 2022-10-14 04:31:02 -07:00
parent 6884774906
commit f22ef3a7e5
2 changed files with 28 additions and 64 deletions

View File

@ -86,12 +86,8 @@ function vote(type, id, dir) {
}
}
}
const xhr = new XMLHttpRequest();
xhr.open("POST", "/vote/" + type.replace('-mobile','') + "/" + id + "/" + votedirection);
xhr.setRequestHeader('xhr', 'xhr');
const form = new FormData()
form.append("formkey", formkey());
const xhr = createXhrWithFormKey("/vote/" + type.replace('-mobile','') + "/" + id + "/" + votedirection);
xhr.send(form);
}
@ -127,14 +123,9 @@ function pick(kind, canbuy1, canbuy2) {
function buy(mb) {
const kind = document.getElementById('kind').value;
const xhr = new XMLHttpRequest();
url = `/buy/${kind}`
if (mb) url += "?mb=true"
xhr.open("POST", url);
xhr.setRequestHeader('xhr', 'xhr');
const form = new FormData()
form.append("formkey", formkey());
const xhr = createXhrWithFormKey(url);
if(typeof data === 'object' && data !== null) {
for(let k of Object.keys(data)) {
form.append(k, data[k]);

View File

@ -1,5 +1,3 @@
/*const bootstrap = require("./bootstrap");*/
function isShopConfirmation(t) {
return t.id.startsWith('buy1-') || t.id.startsWith('buy2-');
}
@ -76,14 +74,20 @@ function postPostToastNonShopActions(t, url, button1, button2, className) {
}
}
function postToast(t, url, button1, button2, className, extraActions, extraActionsError) {
prePostToastNonShopActions(t, url, button1, button2, className)
const xhr = new XMLHttpRequest();
xhr.open("POST", url);
xhr.setRequestHeader('xhr', 'xhr');
const form = new FormData()
form.append("formkey", formkey());
function createXhrWithFormKey(url, method="POST", form=null) {
const xhr = new XMLHttpRequest();
xhr.open(method, url);
xhr.setRequestHeader('xhr', 'xhr');
if (!form) {
form = new FormData();
}
form.append("formkey", formkey());
return xhr;
}
function postToast(t, url, button1, button2, className, extraActions, extraActionsError) {
prePostToastNonShopActions(t, url, button1, button2, className);
const xhr = createXhrWithFormKey(url);
xhr.onload = function() {
postToastLoad(xhr, className, extraActions, extraActionsError)
postPostToastNonShopActions(t, url, button1, button2, className)
@ -97,57 +101,26 @@ function post_toast(t, url, button1, button2, classname, extra_actions, extra_ac
}
function post_toast_callback(url, data, callback) {
const xhr = new XMLHttpRequest();
xhr.open("POST", url);
xhr.setRequestHeader('xhr', 'xhr');
const form = new FormData()
form.append("formkey", formkey());
const xhr = createXhrWithFormKey(url);
if(typeof data === 'object' && data !== null) {
for(let k of Object.keys(data)) {
form.append(k, data[k]);
}
}
form.append("formkey", formkey());
xhr.onload = function() {
let result
if (callback) result = callback(xhr);
if (xhr.status >= 200 && xhr.status < 300) {
var myToast = bootstrap.Toast.getOrCreateInstance(document.getElementById('toast-post-error'));
myToast.hide();
var myToast = bootstrap.Toast.getOrCreateInstance(document.getElementById('toast-post-success'));
myToast.show();
try {
if(typeof result == "string") {
document.getElementById('toast-post-success-text').innerText = result;
} else {
document.getElementById('toast-post-success-text').innerText = JSON.parse(xhr.response)["message"];
}
} catch(e) {
}
return true;
} else {
var myToast = bootstrap.Toast.getOrCreateInstance(document.getElementById('toast-post-success'));
myToast.hide();
var myToast = bootstrap.Toast.getOrCreateInstance(document.getElementById('toast-post-error'));
myToast.show();
try {
if(typeof result == "string") {
document.getElementById('toast-post-error-text').innerText = result;
} else {
document.getElementById('toast-post-error-text').innerText = JSON.parse(xhr.response)["error"];
}
return false
} catch(e) {console.log(e)}
return false;
}
let message;
let success = xhr.status >= 200 && xhr.status < 300;
if (typeof result == "string") {
message = result;
} else {
message = getMessageFromJsonData(success, JSON.parse(xhr.response));
}
let oldToast = bootstrap.Toast.getOrCreateInstance(document.getElementById('toast-post-' + (success ? 'error': 'success'))); // intentionally reversed here: this is the old toast
oldToast.hide();
showToast(success, message);
return success;
};
xhr.send(form);
}