Fix routing vers une piste spécifique avec hash

Problème : L'URL avec hash (#serumwc_lasertone_empty) n'ouvrait pas la bonne
piste/variation mais toujours la première.

Cause : Incohérence entre les underscores du hash et les tirets du slug backend.
slugify convertit les underscores en tirets, mais les slugs Kirby peuvent
varier.

Solution : Comparer le hash de 3 façons :
1. Comparaison directe
2. Hash avec underscores → tirets
3. Slug avec tirets → underscores

Cela gère tous les cas de figure.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
isUnknown 2026-01-15 12:29:49 +01:00
parent 95a8bf99cb
commit dfb8d1038b

View file

@ -100,8 +100,18 @@ onBeforeMount(() => {
if (route?.hash && route.hash.length > 0) {
const variations = tracks.value.flatMap((t) => t.variations || []);
initialVariation =
variations.find((v) => v.slug === route.hash.substring(1)) || null;
const hashValue = route.hash.substring(1);
// Essayer de trouver la variation soit par slug direct, soit en normalisant le hash
initialVariation = variations.find((v) => {
// Comparaison directe
if (v.slug === hashValue) return true;
// Comparaison en convertissant underscores en tirets (slugify par défaut)
if (v.slug === hashValue.replace(/_/g, '-')) return true;
// Comparaison inverse : le slug du backend pourrait avoir des underscores
if (v.slug.replace(/-/g, '_') === hashValue) return true;
return false;
}) || null;
}
// fallback : première variation du premier track