/**
 * Onglet actif transmis d'une page à l'autre via l'état d'historique
 * (`history.state`), SANS le mettre dans l'URL. Sert à préserver l'onglet courant
 * du Répertoire (Clients / Prospects / Prestataires) lors de l'aller-retour
 * liste ↔ fiche, dans les deux sens (flèche de l'app ET flèche du navigateur).
 *
 * On reste fidèle à la règle « état d'UI local, pas dans l'URL » : l'onglet
 * voyage dans l'entrée d'historique de la navigation, l'URL ne change pas.
 */

/**
 * Lit la clé d'onglet posée dans `history.state.tab` si elle fait partie des
 * onglets valides. Retourne `null` sinon : navigation directe / deep link,
 * rechargement de page, ou onglet inexistant.
 */
export function readHistoryTab(validKeys: string[]): string | null {
    if (typeof window === 'undefined') {
        return null
    }
    const tab = (window.history.state as Record<string, unknown> | null)?.tab
    return typeof tab === 'string' && validKeys.includes(tab) ? tab : null
}

/**
 * Estampille l'entrée d'historique COURANTE avec l'onglet actif, sans créer de
 * nouvelle entrée ni changer l'URL. À appeler juste avant de naviguer vers une
 * fiche : au retour via la flèche du navigateur (popstate), cette entrée
 * « liste » est restaurée avec son onglet.
 */
export function stampHistoryTab(tab: string): void {
    if (typeof window === 'undefined') {
        return
    }
    window.history.replaceState({ ...window.history.state, tab }, '')
}
