/**
 * @fileOverview Load/save the state to the local browser store
 */

const KEY = "game_progress";

/** Load from browser storage */
export function loadState() {
  try {
    const serializedState = localStorage.getItem(KEY);
    if (!serializedState) return undefined;
    let x = JSON.parse(serializedState);
    // Compatibility: `state.level` has been renamed to `x.games`.
    if (x.level) {
      x.games = x.level
      x.level = undefined
    }
    // Compatibility: code has been moved to `data` and inventory has been added.
    for (var gameState in x.games) {
      if (!x.games[gameState].data) {
        x.games[gameState] = null
      }
    }
    return x
  } catch (e) {
    return undefined;
  }
}

/** Save to browser storage */
export async function saveState(state: any) {
  try {
    const serializedState = JSON.stringify(state)
    localStorage.setItem(KEY, serializedState);
  } catch (e) {
    // Ignore
  }
}
