Compare commits

..

No commits in common. "eb4698109ed5ad3f6c07feadb92e57656931ab08" and "3c7516a372e28d75b096868aa70f9f8068582b1d" have entirely different histories.

11 changed files with 24 additions and 55 deletions

View File

@ -28,12 +28,8 @@ function run(changedFile) {
runproc = undefined; runproc = undefined;
} }
const thisbuildproc = spawn("npm", ["run", "build:dev"], { stdio: "inherit", shell: true }); buildproc = spawn("npm", ["run", "build:dev"], { stdio: "inherit", shell: true });
buildproc = thisbuildproc;
buildproc.on("exit", code => { buildproc.on("exit", code => {
if (buildproc !== thisbuildproc) {
return;
}
buildproc = undefined; buildproc = undefined;
if (code === 0) { if (code === 0) {
runproc = spawn("npm", ["run", "start", "--", ...args], { stdio: "inherit", shell: true }); runproc = spawn("npm", ["run", "start", "--", ...args], { stdio: "inherit", shell: true });
@ -48,8 +44,6 @@ run();
chokidar.watch("src").on("change", run); chokidar.watch("src").on("change", run);
chokidar.watch("static/fixed_responses").on("change", run); chokidar.watch("static/fixed_responses").on("change", run);
chokidar.watch("static/webui").on("change", async () => { chokidar.watch("static/webui").on("change", () => {
try { fetch("http://localhost/custom/webuiFileChangeDetected?secret=" + secret);
await fetch("http://localhost/custom/webuiFileChangeDetected?secret=" + secret);
} catch (e) {}
}); });

View File

@ -1,10 +1,11 @@
import { args } from "@/src/helpers/commandLineArguments"; import { args } from "@/src/helpers/commandLineArguments";
import { config } from "@/src/services/configService";
import { sendWsBroadcast } from "@/src/services/webService"; import { sendWsBroadcast } from "@/src/services/webService";
import { RequestHandler } from "express"; import { RequestHandler } from "express";
export const webuiFileChangeDetectedController: RequestHandler = (req, res) => { export const webuiFileChangeDetectedController: RequestHandler = (req, res) => {
if (args.dev && args.secret && req.query.secret == args.secret) { if (args.dev && args.secret && req.query.secret == args.secret) {
sendWsBroadcast({ reload: true }); sendWsBroadcast({ ports: { http: config.httpPort, https: config.httpsPort } });
} }
res.end(); res.end();
}; };

View File

@ -284,7 +284,6 @@ apiRouter.post("/inventorySlots.php", inventorySlotsController);
apiRouter.post("/joinSession.php", joinSessionController); apiRouter.post("/joinSession.php", joinSessionController);
apiRouter.post("/login.php", loginController); apiRouter.post("/login.php", loginController);
apiRouter.post("/loginRewardsSelection.php", loginRewardsSelectionController); apiRouter.post("/loginRewardsSelection.php", loginRewardsSelectionController);
apiRouter.post("/logout.php", logoutController); // from ~U16, don't know when they changed it to GET
apiRouter.post("/maturePet.php", maturePetController); apiRouter.post("/maturePet.php", maturePetController);
apiRouter.post("/missionInventoryUpdate.php", missionInventoryUpdateController); apiRouter.post("/missionInventoryUpdate.php", missionInventoryUpdateController);
apiRouter.post("/modularWeaponCrafting.php", modularWeaponCraftingController); apiRouter.post("/modularWeaponCrafting.php", modularWeaponCraftingController);

View File

@ -1825,15 +1825,12 @@ export const addChallenges = (
return affiliationMods; return affiliationMods;
}; };
export const addMissionComplete = (inventory: TInventoryDatabaseDocument, { Tag, Completes, Tier }: IMission): void => { export const addMissionComplete = (inventory: TInventoryDatabaseDocument, { Tag, Completes }: IMission): void => {
const { Missions } = inventory; const { Missions } = inventory;
const itemIndex = Missions.findIndex(item => item.Tag === Tag); const itemIndex = Missions.findIndex(item => item.Tag === Tag);
if (itemIndex !== -1) { if (itemIndex !== -1) {
Missions[itemIndex].Completes += Completes; Missions[itemIndex].Completes += Completes;
if (Tier) {
Missions[itemIndex].Tier = Tier;
}
} else { } else {
Missions.push({ Tag, Completes }); Missions.push({ Tag, Completes });
} }

View File

@ -110,7 +110,6 @@ interface IWsMsgFromClient {
} }
interface IWsMsgToClient { interface IWsMsgToClient {
reload?: boolean;
ports?: { ports?: {
http: number | undefined; http: number | undefined;
https: number | undefined; https: number | undefined;
@ -176,17 +175,7 @@ const wsOnConnect = (ws: ws, _req: http.IncomingMessage): void => {
} }
} }
if (data.logout) { if (data.logout) {
const accountId = (ws as IWsCustomData).accountId;
(ws as IWsCustomData).accountId = undefined; (ws as IWsCustomData).accountId = undefined;
await Account.updateOne(
{
_id: accountId,
ClientType: "webui"
},
{
Nonce: 0
}
);
} }
}); });
}; };

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -9,10 +9,9 @@
/* eslint-disable @typescript-eslint/explicit-function-return-type */ /* eslint-disable @typescript-eslint/explicit-function-return-type */
let auth_pending = false, let auth_pending = false,
did_initial_auth = false, did_initial_auth = false;
ws_is_open = false;
const sendAuth = isRegister => { const sendAuth = isRegister => {
if (ws_is_open && localStorage.getItem("email") && localStorage.getItem("password")) { if (localStorage.getItem("email") && localStorage.getItem("password")) {
auth_pending = true; auth_pending = true;
window.ws.send( window.ws.send(
JSON.stringify({ JSON.stringify({
@ -29,18 +28,10 @@ const sendAuth = isRegister => {
function openWebSocket() { function openWebSocket() {
window.ws = new WebSocket("/custom/ws"); window.ws = new WebSocket("/custom/ws");
window.ws.onopen = () => { window.ws.onopen = () => {
ws_is_open = true;
sendAuth(false); sendAuth(false);
}; };
window.ws.onmessage = e => { window.ws.onmessage = e => {
const msg = JSON.parse(e.data); const msg = JSON.parse(e.data);
if ("reload" in msg) {
setTimeout(() => {
getWebSocket().then(() => {
location.reload();
});
}, 100);
}
if ("ports" in msg) { if ("ports" in msg) {
location.port = location.protocol == "https:" ? msg.ports.https : msg.ports.http; location.port = location.protocol == "https:" ? msg.ports.https : msg.ports.http;
} }
@ -81,7 +72,7 @@ function openWebSocket() {
} }
}; };
window.ws.onclose = function () { window.ws.onclose = function () {
ws_is_open = false; window.ws = undefined;
setTimeout(openWebSocket, 3000); setTimeout(openWebSocket, 3000);
}; };
} }
@ -91,7 +82,7 @@ function getWebSocket() {
return new Promise(resolve => { return new Promise(resolve => {
let interval; let interval;
interval = setInterval(() => { interval = setInterval(() => {
if (ws_is_open) { if (window.ws) {
clearInterval(interval); clearInterval(interval);
resolve(window.ws); resolve(window.ws);
} }
@ -126,7 +117,7 @@ function logout() {
function doLogout() { function doLogout() {
logout(); logout();
if (ws_is_open) { if (window.ws) {
// Unsubscribe from notifications about nonce invalidation // Unsubscribe from notifications about nonce invalidation
window.ws.send(JSON.stringify({ logout: true })); window.ws.send(JSON.stringify({ logout: true }));
} }

View File

@ -100,7 +100,7 @@ dict = {
inventory_bulkRankUpSentinels: `Maximizar rango de todos los centinelas`, inventory_bulkRankUpSentinels: `Maximizar rango de todos los centinelas`,
inventory_bulkRankUpSentinelWeapons: `Maximizar rango de todas las armas de centinela`, inventory_bulkRankUpSentinelWeapons: `Maximizar rango de todas las armas de centinela`,
inventory_bulkRankUpEvolutionProgress: `Maximizar todo el progreso de evolución Incarnon`, inventory_bulkRankUpEvolutionProgress: `Maximizar todo el progreso de evolución Incarnon`,
inventory_maxPlexus: `Rango máximo de Plexus`, inventory_maxPlexus: `[UNTRANSLATED] Max Rank Plexus`,
quests_list: `Misiones`, quests_list: `Misiones`,
quests_completeAll: `Completar todas las misiones`, quests_completeAll: `Completar todas las misiones`,
@ -135,10 +135,10 @@ dict = {
cheats_infiniteRegalAya: `Aya Real infinita`, cheats_infiniteRegalAya: `Aya Real infinita`,
cheats_infiniteHelminthMaterials: `Materiales Helminto infinitos`, cheats_infiniteHelminthMaterials: `Materiales Helminto infinitos`,
cheats_claimingBlueprintRefundsIngredients: `Reclamar ingredientes devueltos por planos`, cheats_claimingBlueprintRefundsIngredients: `Reclamar ingredientes devueltos por planos`,
cheats_dontSubtractPurchaseCreditCost: `No restar costo en créditos de la compra`, cheats_dontSubtractPurchaseCreditCost: `[UNTRANSLATED] Don't Subtract Purchase Credit Cost`,
cheats_dontSubtractPurchasePlatinumCost: `No restar costo en platino de la compra`, cheats_dontSubtractPurchasePlatinumCost: `[UNTRANSLATED] Don't Subtract Purchase Platinum Cost`,
cheats_dontSubtractPurchaseItemCost: `No restar costo de ítem en la compra`, cheats_dontSubtractPurchaseItemCost: `[UNTRANSLATED] Don't Subtract Purchase Item Cost`,
cheats_dontSubtractPurchaseStandingCost: `No restar costo en reputación de la compra`, cheats_dontSubtractPurchaseStandingCost: `[UNTRANSLATED] Don't Subtract Purchase Standing Cost`,
cheats_dontSubtractVoidTraces: `No descontar vestigios del Vacío`, cheats_dontSubtractVoidTraces: `No descontar vestigios del Vacío`,
cheats_dontSubtractConsumables: `No restar consumibles`, cheats_dontSubtractConsumables: `No restar consumibles`,
cheats_unlockAllShipFeatures: `Desbloquear todas las funciones de nave`, cheats_unlockAllShipFeatures: `Desbloquear todas las funciones de nave`,
@ -159,7 +159,7 @@ dict = {
cheats_noDeathMarks: `Sin marcas de muerte`, cheats_noDeathMarks: `Sin marcas de muerte`,
cheats_noKimCooldowns: `Sin tiempo de espera para conversaciones KIM`, cheats_noKimCooldowns: `Sin tiempo de espera para conversaciones KIM`,
cheats_syndicateMissionsRepeatable: `Misiones de sindicato rejugables`, cheats_syndicateMissionsRepeatable: `Misiones de sindicato rejugables`,
cheats_unlockAllProfitTakerStages: `Deslobquea todas las etapas del Roba-ganancias`, cheats_unlockAllProfitTakerStages: `[UNTRANSLATED] Unlock All Profit Taker Stages`,
cheats_instantFinishRivenChallenge: `Terminar desafío de agrietado inmediatamente`, cheats_instantFinishRivenChallenge: `Terminar desafío de agrietado inmediatamente`,
cheats_instantResourceExtractorDrones: `Drones de extracción de recursos instantáneos`, cheats_instantResourceExtractorDrones: `Drones de extracción de recursos instantáneos`,
cheats_noResourceExtractorDronesDamage: `Sin daño a los drones extractores de recursos`, cheats_noResourceExtractorDronesDamage: `Sin daño a los drones extractores de recursos`,
@ -170,7 +170,7 @@ dict = {
cheats_noDojoResearchCosts: `Sin costo de investigación del dojo`, cheats_noDojoResearchCosts: `Sin costo de investigación del dojo`,
cheats_noDojoResearchTime: `Sin tiempo de investigación del dojo`, cheats_noDojoResearchTime: `Sin tiempo de investigación del dojo`,
cheats_fastClanAscension: `Ascenso rápido del clan`, cheats_fastClanAscension: `Ascenso rápido del clan`,
cheats_missionsCanGiveAllRelics: `Las misiones pueden otorgar todas las reliquias`, cheats_missionsCanGiveAllRelics: `[UNTRANSLATED] Missions Can Give All Relics`,
cheats_spoofMasteryRank: `Rango de maestría simulado (-1 para desactivar)`, cheats_spoofMasteryRank: `Rango de maestría simulado (-1 para desactivar)`,
cheats_nightwaveStandingMultiplier: `Multiplicador de Reputación de Onda Nocturna`, cheats_nightwaveStandingMultiplier: `Multiplicador de Reputación de Onda Nocturna`,
cheats_save: `Guardar`, cheats_save: `Guardar`,