[Web] getExistingAnonymousId does not decode JSON-stringified ajs_anonymous_id from localStorage
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 82/100
Piste de recherche
Commencez dans packages/core/lib/utils/store/web.dart, au niveau de getExistingAnonymousId(), où la valeur de localStorage est lue. Vérifiez comment la valeur brute ajs_anonymous_id est traitée et validez la modification avec des valeurs sérialisées en JSON comme avec des valeurs de type string simples. La tâche est terminée lorsque Flutter web renvoie l’UUID propre, sans guillemets autour, tout en préservant la compatibilité avec les valeurs existantes.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Bug
When analytics.js (the Segment JavaScript SDK) writes ajs_anonymous_id to localStorage, it uses JSON.stringify(), which wraps the UUID in surrounding double-quote characters. The Flutter SDK's getExistingAnonymousId() in packages/core/lib/utils/store/web.dart reads this value via localStorage.getItem() but does not decode it, so the quotes become part of the anonymous ID string.
This means any Flutter web app running on a domain where analytics.js has previously set ajs_anonymous_id will pick up a corrupted anonymous ID (e.g. "d039d945-..." instead of d039d945-...), causing identity mismatches between the JS and Flutter SDKs.
Expected behavior
anonymousId should be a clean UUID:
d039d945-572c-4148-b072-2b54ef52102a
Actual behavior
anonymousId includes surrounding quotes, which get double-escaped when serialized to analytics-flutter-userInfo.json:
{"anonymousId":"\"d039d945-572c-4148-b072-2b54ef52102a\""}
Proposed fix
json.decode the raw localStorage value in getExistingAnonymousId() before returning it, with a try/catch fallback for values that are already plain strings.
- Langage dominant
- Dart
- Étoiles
- 33
- Forks
- 60
- Merge moyen
- 1 j 13 h
- PR mergées (30 j)
- 5
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de segmentio/analytics_flutter
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
segmentio/analytics_flutter#204 · 1 réaction ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 50/100
segmentio/analytics_flutter#209 · 1 commentaire ·
-
segment_analytics 1.1.11: UI jank / apparent freezes on trackPeut-être pris @marian-bitstack l’a pris il y a 4 jours. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
segmentio/analytics_flutter#199 · 1 réaction ·
-
the reset not workingOuverte
Difficulté 3/5 1-2 jours Accessibilité débutants 35/100
segmentio/analytics_flutter#187 · 2 commentaires ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 25/100
segmentio/analytics_flutter#186 · 1 commentaire ·
Toutes les issues de segmentio/analytics_flutter
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 64/100
bannzai/medicalarm#478 ·
Les mainteneurs répondent en général sous 1 jour
-
genkit_anthropic: responses with an empty or unknown usage.service_tier fail with FormatException: Unknown ServiceTierPeut-être pris @kenzieschmoll l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
genkit-ai/genkit-dart#686 ·
Les mainteneurs répondent en général sous 3 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
aaronified/fluenough#918 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
VeryGoodOpenSource/very_good_analysis#255 ·
Les mainteneurs répondent en général sous 1 jour