breakout71/src/migrations.ts

55 lines
1.4 KiB
TypeScript
Raw Normal View History

2025-04-02 17:03:53 +02:00
import { RunHistoryItem } from "./types";
function migrate(name: string, cb: () => void) {
if (!localStorage.getItem(name)) {
try {
cb();
console.debug("Ran migration : " + name);
localStorage.setItem(name, "" + Date.now());
} catch (e) {
console.warn("Migration " + name + " failed : ", e);
}
}
}
migrate("migrate_high_scores", () => {
const old = localStorage.getItem("breakout-3-hs");
if (old) {
localStorage.setItem("breakout-3-hs-short", old);
localStorage.removeItem("breakout-3-hs");
}
});
migrate("recover_high_scores", () => {
let runsHistory = JSON.parse(
localStorage.getItem("breakout_71_runs_history") || "[]",
) as RunHistoryItem[];
runsHistory.forEach((r) => {
const currentHS = parseInt(
localStorage.getItem("breakout-3-hs-" + (r.mode || "short")) || "0",
);
if (r.score > currentHS) {
localStorage.setItem(
"breakout-3-hs-" + (r.mode || "short"),
"" + r.score,
);
}
});
});
2025-04-06 10:13:10 +02:00
migrate("remove_long_and_creative_mode_data", () => {
let runsHistory = JSON.parse(
localStorage.getItem("breakout_71_runs_history") || "[]",
) as RunHistoryItem[];
2025-04-06 15:38:30 +02:00
let cleaned = runsHistory.filter((r) => {
if ("mode" in r) {
if (r.mode !== "short") {
return false;
2025-04-06 10:13:10 +02:00
}
}
2025-04-06 15:38:30 +02:00
return true;
});
if (cleaned.length !== runsHistory.length)
localStorage.setItem("breakout_71_runs_history", JSON.stringify(cleaned));
2025-04-06 10:13:10 +02:00
});