/**
 * @fileoverview Utility module for progress.js
 * 
 * @module pages.Atividades.utils.progress
 */

/*
  MIGRATION: Wave 2 — Portuguese -> English identifier migration
  All storage keys and function names use English identifiers.
*/

/**
 * Calcula a porcentagem de conclusão de um jogo (0-100%).
 * Recupera as fases completadas do localStorage usando a chave padrão de migração.
 *
 * A chave de armazenamento segue o padrão: `{gameId}-completed-phases`
 * Mantém compatibilidade com a chave anterior durante transição.
 *
 * @function calculateProgress
 * @param {string} gameId - ID único do jogo (ex: 'molemash', 'semaforo')
 * @param {Array<number>} phases - Array de fases do jogo (ex: [1, 2, 3, 4, 5])
 * @returns {number} Percentual de conclusão do jogo (0-100, sempre arredondado)
 *
 * @example
 * const percent = calculateProgress('semaforo', [1, 2, 3]);
 * // Se completedPhases=[1], retorna 33
 *
 * @throws {console.error} Se localStorage estiver corrompido (retorna 0)
 */
export const calculateProgress = (gameId, phases) => {
  if (!phases || phases.length === 0) return 0;

  try {
    const storageKey = `${gameId}-completed-phases`;
    const completedPhases = JSON.parse(
      localStorage.getItem(storageKey) || "[]",
    );

    // Calculamos a porcentagem baseada no tamanho do array de concluídos
    const percentage = (completedPhases.length / phases.length) * 100;

    // Retorna no máximo 100 e arredondado
    return Math.min(Math.round(percentage), 100);
  } catch (error) {
    console.error("Erro ao ler localStorage:", error);
    return 0;
  }
};
