Skip to content

Demander les rappels au premier Programmer et déclarer les notifications (E-18, E-08) #495

Open

Description

@PaulThiberville

Contexte

Epic : #14
Maquette : E-18 · validée le 2026-09-28
Ecrans › E-18 (Rappels, premier « Programmer » ; Texte agrandi et lecteur d'écran) · Ecrans › E-08 (Votre sortie, ligne des rappels) · E-18 · E-08 · E-06 · D-060 · D-061

#188 configure le premier lancement (PR #494), mais il ne livre pas la partie des rappels de E-18 (découverte de CODE, 2026-10-15). Pour demander l'autorisation des notifications, il faut le module natif expo-notifications (avec le droit aps-environment sur iOS et un nouveau build) et déclarer android.permission.POST_NOTIFICATIONS sur Android 13 et plus (découverte pendant #189). Ce module est celui qui reçoit les push dans #44, et c'est #44 qui l'installe. Ce ticket est donc bloqué par #44.

Planches : recevoir un rappel · autorisation des notifications · rappels désactivés (E-08) · texte agrandi, recevoir un rappel · texte agrandi, rappels désactivés. Tokens prêts : mappings.firstLaunch.reminderPermission, states.notificationsOff.

Comportement attendu

  • Premier « Programmer » (E-18) : tant que le téléphone n'a jamais posé la question, la sheet de programmation (E-06) se ferme, puis « Recevoir un rappel ? » s'ouvre sur la fiche, avec une poignée : cloche pleine blue-ink dans un disque blue-soft de 64 px ; « Nous vous prévenons la veille à 18:00, puis une heure avant le départ. » ; « Activer les rappels » (bouton bleu, 52 px) ouvre la fenêtre du système ; « Plus tard » (texte, 48 px), le glissement ou le voile ferment la sheet. Le toast « Sortie programmée » vient ensuite. La sheet ne revient pas d'elle-même.
  • Votre sortie (E-08) : quand les rappels sont refusés, remis à plus tard ou absents, la ligne affiche « Rappels désactivés » (cloche barrée bell-slash en muted) et « Activer » en blue-ink. « Activer » ouvre la fenêtre du système si elle n'a jamais été montrée, sinon les réglages de Widoo dans le téléphone. Au retour, la ligne des rappels revient.
  • État réel des notifications (D-061) : l'app lit l'autorisation du système (getPermissionsAsync) pour Votre sortie et pour Réglages › Notifications (E-19). readPhoneNotifications (apps/mobile/src/settings/phoneNotifications.ts) est remplacé.
  • Accessibilité : au plus grand texte, « Recevoir un rappel ? » passe sur deux lignes et ses boutons prennent toute la largeur. La sheet est un dialogue, et le geste d'échappement vaut « Plus tard ». Les toasts sont annoncés sans déplacer le focus.

Critères d'acceptation

  • Au premier « Programmer » sur un téléphone neuf, la sheet de E-06 se ferme puis « Recevoir un rappel ? » s'ouvre ; aux « Programmer » suivants, elle ne s'ouvre plus (iOS et Android, captures dans la PR)
  • « Activer les rappels » ouvre la fenêtre du système ; Android 13 et plus la montre, ce qui suppose POST_NOTIFICATIONS déclarée
  • Après un refus ou « Plus tard », Votre sortie affiche « Rappels désactivés » et « Activer » ; « Activer » ouvre la fenêtre du système ou les réglages du téléphone, et la ligne des rappels revient au retour si l'autorisation est donnée
  • Réglages › Notifications et Votre sortie lisent l'état réel du système, sur iOS comme sur Android
  • Texte à 150 % et lecteur d'écran conformes à E-18 (deux lignes, boutons pleine largeur, échappement = « Plus tard »), mentionnés dans la PR
  • Test de la règle « montrée une seule fois » (état gardé sur l'appareil)

Notes techniques

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions