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:
parent
95a8bf99cb
commit
dfb8d1038b
1 changed files with 12 additions and 2 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue