Cheguei ao final do projeto, tudo lindo. Tudo funcionando conforme o esperado maaaaaas... notei que uma vez iniciado o contador, ao navegar entre os botões foco, descanso curto e descanso longo, o tempo continua contando, mas reiniciando o tempo conforme o contexto. No meu entendimento de melhor usabilidade, faz sentido que se eu estiver nos últimos segundos do descanso curto, e decida já mudar para foco, o contador deveria parar e esperar a minha ação no click do botão começar, em vez de continuar contando a partir dos 25 minutos.
Segue abaixo a minha solução:
1º, chamei a função zerar() nos addEventListener de todos os botões:
focoBt.addEventListener("click", () => {
zerar();
timer = 1500;
alterarContexto("foco");
focoBt.classList.add("active");
});
curtoBt.addEventListener("click", () => {
zerar();
timer = 300;
alterarContexto("descanso-curto");
curtoBt.classList.add("active");
});
longoBt.addEventListener("click", () => {
zerar();
timer = 900;
alterarContexto("descanso-longo");
longoBt.classList.add("active");
});
2º, adicionei a função zerar() a mudança do texto e do ícone do botão start-pause:
function zerar () {
clearInterval(contando);
textoBt.textContent = "Começar";
iconBt.setAttribute("src", "/imagens/play_arrow.png");
contando = null;
Após salvar, o app adotou o comportamento que faz mais sentido pra mim.