Fix bug retrieving token
Some checks failed
Continuous Deployment / lint (push) Successful in 30s
Continuous Deployment / deploy-chrome (push) Failing after 19s
Continuous Deployment / deploy-firefox (push) Successful in 1m25s

This commit is contained in:
2025-12-07 16:28:09 +01:00
parent 3dd67d776b
commit 1f3addf328
4 changed files with 57 additions and 55 deletions

View File

@@ -1,5 +1,9 @@
# Changelog # Changelog
## 1.12.3 (2026-12-07)
- correction du bug de récupération du token
## 1.12.2 (2026-12-07) ## 1.12.2 (2026-12-07)
- correction du bug sur les villages non trouvés - correction du bug sur les villages non trouvés

View File

@@ -1,7 +1,7 @@
{ {
"manifest_version": 3, "manifest_version": 3,
"name": "KAplus", "name": "KAplus",
"version": "1.12.2", "version": "1.12.3",
"developer": { "developer": {
"name": "Samuel Campos", "name": "Samuel Campos",

View File

@@ -5,8 +5,8 @@
"firefox" "firefox"
], ],
"release_notes": { "release_notes": {
"fr": "- correction du bug sur les villages non trouvés", "fr": "- correction du bug de récupération du token",
"en-US": "- fix bug non found villages" "en-US": "- fix bug retrieving token"
} }
} }
} }

View File

@@ -122,68 +122,66 @@ function selectVillage(selectRef, inputXRef, inputYRef) {
} }
} }
function storeOrderToken(ownVillages, targetVillage) { function storeOrderToken(ownVillages, targetVillage, recursiveIndex) {
let orderToken = sessionStorage.getItem("orderToken"); let orderToken = sessionStorage.getItem("orderToken");
if (orderToken !== null) { if (orderToken !== null) {
return; return;
} }
let breakLoop = false; let villageId = Object.keys(ownVillages)[recursiveIndex];
for (let villageId in ownVillages) { let xhrOrder = new XMLHttpRequest();
if (breakLoop === true) { xhrOrder.addEventListener("readystatechange", function () {
return; if (xhrOrder.readyState === xhrOrder.DONE) {
} let parser = new DOMParser();
let xhrOrder = new XMLHttpRequest(); let doc = parser.parseFromString(xhrOrder.responseText, "text/html");
xhrOrder.addEventListener("readystatechange", function () { let quantityDivs = doc.getElementsByClassName("quantity");
if (xhrOrder.readyState === xhrOrder.DONE) { let unit = null;
let parser = new DOMParser(); for (let i = 0; i < quantityDivs.length; i ++) {
let doc = parser.parseFromString(xhrOrder.responseText, "text/html"); let quantityInput = quantityDivs[i].getElementsByTagName("input")[0];
let quantityDivs = doc.getElementsByClassName("quantity"); let quantityClick = quantityDivs[i].getElementsByClassName("click")[0];
let unit = null; if (quantityClick.textContent !== "(0)") {
for (let i = 0; i < quantityDivs.length; i ++) { unit = quantityInput.getAttribute("name");
let quantityInput = quantityDivs[i].getElementsByTagName("input")[0]; break;
let quantityClick = quantityDivs[i].getElementsByClassName("click")[0];
if (quantityClick.textContent !== "(0)") {
unit = quantityInput.getAttribute("name");
break;
}
} }
if (unit === null) {
return;
}
let xhrSend = new XMLHttpRequest();
let formData = new FormData();
formData.set(unit, "1");
formData.set("send_x", targetVillage.x);
formData.set("send_y", targetVillage.y);
formData.set("support", "Envoyer du renfort");
let formParams = new URLSearchParams(formData);
xhrSend.addEventListener("readystatechange", function () {
if (xhrSend.readyState === xhrSend.DONE) {
let parser = new DOMParser();
let doc = parser.parseFromString(xhrSend.responseText, "text/html");
let form = doc.getElementsByTagName("form")[0];
let action = form.getAttribute("action");
let orderToken = action.replace(/^.*p=([a-z0-9]+).*$/, "$1");
sessionStorage.setItem("orderToken", orderToken);
breakLoop = true;
}
});
xhrSend.open("POST", "/?village=" + villageId + "&s=build_barracks&m=command&sub=send");
xhrSend.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhrSend.send(formParams.toString());
} }
}); if (unit === null) {
xhrOrder.open("GET", "/?village=" + villageId + "&s=build_barracks"); if (recursiveIndex < ownVillages.length - 1) {
xhrOrder.send(); storeOrderToken(ownVillages, targetVillage, recursiveIndex + 1);
} }
return;
}
let xhrSend = new XMLHttpRequest();
let formData = new FormData();
formData.set(unit, "1");
formData.set("send_x", targetVillage.x);
formData.set("send_y", targetVillage.y);
formData.set("support", "Envoyer du renfort");
let formParams = new URLSearchParams(formData);
xhrSend.addEventListener("readystatechange", function () {
if (xhrSend.readyState === xhrSend.DONE) {
let parser = new DOMParser();
let doc = parser.parseFromString(xhrSend.responseText, "text/html");
let form = doc.getElementsByTagName("form")[0];
let action = form.getAttribute("action");
let orderToken = action.replace(/^.*p=([a-z0-9]+).*$/, "$1");
sessionStorage.setItem("orderToken", orderToken);
breakLoop = true;
}
});
xhrSend.open("POST", "/?village=" + villageId + "&s=build_barracks&m=command&sub=send");
xhrSend.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhrSend.send(formParams.toString());
}
});
xhrOrder.open("GET", "/?village=" + villageId + "&s=build_barracks");
xhrOrder.send();
} }
function storeTargetVillage(ownVillages) { function storeTargetVillage(ownVillages) {
let targetVillage = sessionStorage.getItem("targetVillage"); let targetVillage = sessionStorage.getItem("targetVillage");
if (targetVillage !== null) { if (targetVillage !== null) {
storeOrderToken(ownVillages, JSON.parse(targetVillage)); storeOrderToken(ownVillages, JSON.parse(targetVillage), 0);
return; return;
} }
@@ -193,7 +191,7 @@ function storeTargetVillage(ownVillages) {
if (xhr.readyState === xhr.DONE) { if (xhr.readyState === xhr.DONE) {
let parser = new DOMParser(); let parser = new DOMParser();
let doc = parser.parseFromString(xhr.responseText, "text/html"); let doc = parser.parseFromString(xhr.responseText, "text/html");
let cells = doc.getElementsByClassName("occupied range"); let cells = doc.getElementsByClassName("occupied");
for (let i = 0; i < cells.length; i ++) { for (let i = 0; i < cells.length; i ++) {
let links = cells[i].getElementsByTagName("a"); let links = cells[i].getElementsByTagName("a");
if (links.length === 0) { if (links.length === 0) {
@@ -206,7 +204,7 @@ function storeTargetVillage(ownVillages) {
let villageXY = links[0].getAttribute("onmouseover").replace(/^.*(\d{3}\|\d{3}).*$/, "$1").split("|"); let villageXY = links[0].getAttribute("onmouseover").replace(/^.*(\d{3}\|\d{3}).*$/, "$1").split("|");
targetVillage = {x: parseInt(villageXY[0]), y: parseInt(villageXY[1])}; targetVillage = {x: parseInt(villageXY[0]), y: parseInt(villageXY[1])};
sessionStorage.setItem("targetVillage", JSON.stringify(targetVillage)); sessionStorage.setItem("targetVillage", JSON.stringify(targetVillage));
storeOrderToken(ownVillages, targetVillage); storeOrderToken(ownVillages, targetVillage, 0);
break; break;
} }
} }