/*
 * useMelissaToques — preferencia de toque de termino do Melissa
 * -------------------------------------------------------------
 * Encapsula apenas a preferencia (qual toque tocar) e o botao de
 * teste do painel Personalizar. NAO controla o cronometro em si —
 * o componente <MelissaCronometro> recebe `toque-termino` como prop
 * e dispara o som ao final da sessao com a propria logica.
 *
 * Estado:
 *   - toqueTermino: string — id do toque selecionado (default 'sino')
 *
 * Acao:
 *   - testarToque(): toca o toque selecionado (preview no Personalizar)
 *
 * Constante exportada:
 *   - TOQUE_IDS: Set<string> — ids validos, usado pra sanitizar payload
 *     vindo de localStorage/DB no MelissaLayout
 *
 * Persistencia: NAO eh responsabilidade deste composable. O pai
 * (MelissaLayout) persiste `toqueTermino` junto com outras prefs em
 * user_settings.melissa_prefs.
 */
import { ref } from 'vue';
import { TOQUES, playToque } from '../melissaToques';

export const TOQUE_IDS = new Set(TOQUES.map((t) => t.id));

export function useMelissaToques(initialId = 'sino') {
    // Sanitiza o default — se passarem id invalido cai pro 'sino'
    const safeInitial = TOQUE_IDS.has(initialId) ? initialId : 'sino';
    const toqueTermino = ref(safeInitial);

    function testarToque() {
        playToque(toqueTermino.value);
    }

    return {
        toqueTermino,
        testarToque
    };
}
