Fix freezing after a battle ends due to not clearing session

pull/14/head
Flashfyre 2023-12-31 22:49:50 -05:00
parent 183b53286e
commit 83e9f6d784
2 changed files with 40 additions and 21 deletions

View File

@ -85,6 +85,12 @@ export class LoginPhase extends BattlePhase {
this.end(); this.end();
}); });
} }
end(): void {
this.scene.ui.setMode(Mode.MESSAGE);
super.end();
}
} }
// TODO: Remove // TODO: Remove
@ -2592,20 +2598,20 @@ export class GameOverPhase extends BattlePhase {
start() { start() {
super.start(); super.start();
this.scene.gameData.clearSession(); this.scene.gameData.clearSession().then(() => {
this.scene.time.delayedCall(1000, () => {
this.scene.time.delayedCall(1000, () => { if (this.victory)
if (this.victory) this.scene.validateAchv(achvs.CLASSIC_VICTORY);
this.scene.validateAchv(achvs.CLASSIC_VICTORY); const fadeDuration = this.victory ? 10000 : 5000;
const fadeDuration = this.victory ? 10000 : 5000; this.scene.fadeOutBgm(fadeDuration, true);
this.scene.fadeOutBgm(fadeDuration, true); this.scene.ui.fadeOut(fadeDuration).then(() => {
this.scene.ui.fadeOut(fadeDuration).then(() => { this.scene.clearPhaseQueue();
this.scene.clearPhaseQueue(); this.scene.ui.clearText();
this.scene.ui.clearText(); this.handleUnlocks(this.scene.getParty());
this.handleUnlocks(this.scene.getParty()); this.scene.reset();
this.scene.reset(); this.scene.unshiftPhase(new CheckLoadPhase(this.scene));
this.scene.unshiftPhase(new CheckLoadPhase(this.scene)); this.end();
this.end(); });
}); });
}); });
} }

View File

@ -19,7 +19,7 @@ import { Egg } from "../data/egg";
import { VoucherType, vouchers } from "./voucher"; import { VoucherType, vouchers } from "./voucher";
import { AES, enc } from "crypto-js"; import { AES, enc } from "crypto-js";
import { Mode } from "../ui/ui"; import { Mode } from "../ui/ui";
import { updateUserInfo } from "../account"; import { loggedInUser, updateUserInfo } from "../account";
const saveKey = 'x0i2O7WRiANTqPmZ'; // Temporary; secure encryption is not yet necessary const saveKey = 'x0i2O7WRiANTqPmZ'; // Temporary; secure encryption is not yet necessary
@ -357,8 +357,6 @@ export class GameData {
timestamp: new Date().getTime() timestamp: new Date().getTime()
} as SessionSaveData; } as SessionSaveData;
console.log(JSON.stringify(sessionData));
if (!bypassLogin) { if (!bypassLogin) {
Utils.apiPost(`savedata/update?datatype=${GameDataType.SESSION}`, JSON.stringify(sessionData)) Utils.apiPost(`savedata/update?datatype=${GameDataType.SESSION}`, JSON.stringify(sessionData))
.then(response => response.text()) .then(response => response.text())
@ -465,8 +463,6 @@ export class GameData {
return resolve(false); return resolve(false);
} }
console.log(JSON.parse(response));
await handleSessionData(response); await handleSessionData(response);
}); });
} else } else
@ -474,8 +470,25 @@ export class GameData {
}); });
} }
clearSession(): void { clearSession(): Promise<boolean> {
localStorage.removeItem('sessionData'); return new Promise<boolean>(resolve => {
if (bypassLogin) {
localStorage.removeItem('sessionData');
return resolve(true);
}
updateUserInfo().then(success => {
if (success !== null && !success)
return resolve(false);
Utils.apiFetch(`savedata/delete?datatype=${GameDataType.SESSION}`).then(response => {
if (response.ok) {
loggedInUser.hasGameSession = false;
return resolve(true);
}
resolve(false);
});
});
});
} }
parseSessionData(dataStr: string): SessionSaveData { parseSessionData(dataStr: string): SessionSaveData {