Skip to content

Ignorer l'absence de moteur haptique au lieu de remonter une erreur #476

Closed

Description

@PaulThiberville

Contexte

Epic : #6
Maquette : sans objet — robustesse d'un module de base, aucun changement visible.
Direction-Artistique › Mouvement · D-030

Constat de Paul en recette le 2026-10-15 (build preview EAS 858b93ac, Redmi Note 9) : chaque vibration de toast lève « Call to function 'ExpoHaptics.performHapticsAsync' has been rejected → A haptics engine is not available on this device ». L'erreur remonte à Sentry (issue WIDOO-MOBILE-W, 4 événements en 20 minutes : 09:01:08Z, 09:02:38Z, 09:10:50Z, 09:19:04Z).

Les vibrations sont centralisées dans apps/mobile/src/ui/haptics.ts (fonction haptic, livrée avec le toast par la PR #419 pour #387) : les promesses d'expo-haptics y sont lancées par void, sans catch, d'où un rejet non géré.

Comportement attendu

  • Tous les appels haptiques passent par une enveloppe qui intercepte le refus du moteur : l'absence de moteur haptique est ignorée silencieusement, ni erreur, ni rapport Sentry.
  • Le reste de l'action (toast, navigation) se déroule normalement.

Critères d'acceptation

  • Les appels expo-haptics (Android et iOS) sont enveloppés dans haptic ; aucun appel direct à expo-haptics ailleurs dans apps/mobile/src
  • Un refus du moteur haptique ne produit ni erreur non gérée, ni rapport Sentry
  • Test unitaire : un performAndroidHapticsAsync (et un appel iOS) rejeté ne remonte rien et ne lève rien

Activity

  1. PaulThiberville commented on Oct 15, 2026

    @PaulThiberville
    CollaboratorAuthor

    🔨 Démarrage — plan : une enveloppe vibrate dans apps/mobile/src/ui/haptics.ts qui intercepte le rejet de chaque appel expo-haptics (Android et iOS), et l'exception synchrone d'un module natif absent ; test Vitest qui simule le refus du moteur et vérifie l'absence de promesse non gérée et d'appel Sentry. Branche issue/476-haptics-rejection.

  2. PaulThiberville commented on Oct 15, 2026

    @PaulThiberville
    CollaboratorAuthor

    Recette sur appareil, déclarée par Paul en session le 2026-10-15 vers 13:40 (Paris), consignée par MANAGER. Build preview EAS 98b537be (main 4b766c5), Redmi Note 9 (Android), API de staging. Paul : « tout est bon ».

    Status du Project : Terminés.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions