fix: replace broken swipe-to-refresh with toolbar button (#61) #67
No reviewers
Labels
No labels
source:analyste
source:defenseur
source:human
source:medic
status:approved
status:blocked
status:in-progress
status:needs-fix
status:ready
status:review
status:triage
type:bug
type:feature
type:infra
type:refactor
type:schema
type:security
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: maximus/simpl-liste#67
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-61-refresh-button-toolbar"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixes #61
Problème
Le
RefreshControlajouté dans la PR #64 ne déclenchait aucun feedback visuel. Cause :react-native-draggable-flatlistenveloppe son FlatList interne dans unGestureDetectoravecGesture.Pan(), qui intercepte les swipes verticaux avant queRefreshControlpuisse les détecter — particulièrement avecactivationDistance=0en mode sortposition(le défaut).Fix
RefreshCwdelucide-react-native) ajouté dans la toolbar de l'inbox et du détail de listespin(Animated.loop avec rotation) pendant le refresh, cohérent avec l'UX webRefreshControl, proprefreshControlsur DraggableFlatList)Test plan
RefreshControlf273e4ad8bto5b0d27175cVerdict : APPROVE
Summary
Le fix remplace correctement le
RefreshControlintercepte par leGestureDetectorinterne dereact-native-draggable-flatlistpar un bouton dans la toolbar avec animation de rotation. Code propre, coherent entre inbox et detail de liste, aucun secret ni regression.Suggestions (non bloquantes)
app/(tabs)/index.tsx:91etapp/list/[id].tsx:116—spinAnim.stopAnimation()arrete la valeur courante a son angle actuel. Au prochainhandleRefresh, lespinAnim.setValue(0)remet a zero, mais entre deux refreshs l'icone peut rester figee a un angle arbitraire. EnvisagerspinAnim.stopAnimation(() => spinAnim.setValue(0))pour un rendu plus propre au repos.Double boucle de rafraichissement — Il y a deja un
setInterval(loadTasks, 500)qui recharge toutes les demi-secondes (index.tsx:71, list/[id].tsx:96). Le bouton refresh est donc essentiellement cosmetique. Pas bloquant, mais a considerer a terme en remplacant le polling par des live queries.Accessibilite — Le
Pressabledu bouton refresh n'a pas deaccessibilityLabel. Coherent avec les autres boutons de la toolbar, mais dette a11y a garder en tete.Dependance
spinAnim—spinAnimest unuseRef, sa reference ne change jamais. Pas besoin de le lister dans les dependances deuseCallback, mais exhaustive-deps l'encourage donc ok.Checklist
Fixes #61)RefreshControl) correctement retire des deux ecransReview adversariale via
/pr-review