[Offline P1] Fix wrong local save being deleted when creating a new run (#4598)

This commit is contained in:
MokaStitcher 2024-10-08 17:11:21 +02:00 committed by GitHub
parent 0ede7b057d
commit 57a967890a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 12 additions and 4 deletions

View File

@ -1125,10 +1125,16 @@ export class GameData {
}); });
} }
/**
* Delete the session data at the given slot when overwriting a save file
* For deleting the session of a finished run, use {@linkcode tryClearSession}
* @param slotId the slot to clear
* @returns Promise with result `true` if the session was deleted successfully, `false` otherwise
*/
deleteSession(slotId: integer): Promise<boolean> { deleteSession(slotId: integer): Promise<boolean> {
return new Promise<boolean>(resolve => { return new Promise<boolean>(resolve => {
if (bypassLogin) { if (bypassLogin) {
localStorage.removeItem(`sessionData${this.scene.sessionSlotId ? this.scene.sessionSlotId : ""}_${loggedInUser?.username}`); localStorage.removeItem(`sessionData${slotId ? slotId : ""}_${loggedInUser?.username}`);
return resolve(true); return resolve(true);
} }
@ -1139,7 +1145,7 @@ export class GameData {
Utils.apiFetch(`savedata/session/delete?slot=${slotId}&clientSessionId=${clientSessionId}`, true).then(response => { Utils.apiFetch(`savedata/session/delete?slot=${slotId}&clientSessionId=${clientSessionId}`, true).then(response => {
if (response.ok) { if (response.ok) {
loggedInUser!.lastSessionSlot = -1; // TODO: is the bang correct? loggedInUser!.lastSessionSlot = -1; // TODO: is the bang correct?
localStorage.removeItem(`sessionData${this.scene.sessionSlotId ? this.scene.sessionSlotId : ""}_${loggedInUser?.username}`); localStorage.removeItem(`sessionData${slotId ? slotId : ""}_${loggedInUser?.username}`);
resolve(true); resolve(true);
} }
return response.text(); return response.text();
@ -1190,7 +1196,9 @@ export class GameData {
/** /**
* Attempt to clear session data. After session data is removed, attempt to update user info so the menu updates * Attempt to clear session data after the end of a run
* After session data is removed, attempt to update user info so the menu updates
* To delete an unfinished run instead, use {@linkcode deleteSession}
*/ */
async tryClearSession(scene: BattleScene, slotId: integer): Promise<[success: boolean, newClear: boolean]> { async tryClearSession(scene: BattleScene, slotId: integer): Promise<[success: boolean, newClear: boolean]> {
let result: [boolean, boolean] = [ false, false ]; let result: [boolean, boolean] = [ false, false ];
@ -1204,7 +1212,7 @@ export class GameData {
if (response.ok) { if (response.ok) {
loggedInUser!.lastSessionSlot = -1; // TODO: is the bang correct? loggedInUser!.lastSessionSlot = -1; // TODO: is the bang correct?
localStorage.removeItem(`sessionData${this.scene.sessionSlotId ? this.scene.sessionSlotId : ""}_${loggedInUser?.username}`); localStorage.removeItem(`sessionData${slotId ? slotId : ""}_${loggedInUser?.username}`);
} }
const jsonResponse: PokerogueApiClearSessionData = await response.json(); const jsonResponse: PokerogueApiClearSessionData = await response.json();