fix: save and back buttons not navigating away from task screen (#21) #22
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: maximus/simpl-liste#22
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/simpl-liste-21-save-button-navigation"
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 #21
Problem
The Save button on the task edit screen reacts visually (becomes dimmed) but the screen stays open instead of navigating back. The back arrow button has the same issue. Both buttons call
router.back()which can silently fail when there is no navigation history to return to.Additionally, in the task edit screen, if
updateTaskorsetTagsForTaskthrows an error, thesavingstate is reset in thecatchblock butrouter.back()is never called. However if the operations succeed, there is nofinallyblock to resetsaving, so the button stays permanently disabled.Changes
app/task/[id].tsx: AddgoBack()helper that checksrouter.canGoBack()before callingrouter.back(), with a fallback torouter.replace('/'). Replace allrouter.back()calls (save, back arrow, delete) withgoBack(). ChangecatchtofinallyinhandleSaveso the save button always resets its disabled/dimmed state.app/task/new.tsx: SamegoBack()helper applied to the save button and X (close) button for consistency.Replace all router.back() calls with a goBack() helper that checks router.canGoBack() first and falls back to router.replace('/') when there is no screen to return to. In the task edit screen, change catch to finally so the save button always resets its disabled state even if updateTask/setTagsForTask throws. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>Reviewer automatique — needs-fix
Le remplacement de
catchparfinallydans [id].tsx supprime la gestion d'erreurs : les erreurs deupdateTask/setTagsForTaskdeviennent des rejections non gérées et provoquent ungoBack()même en cas d'échec de la sauvegarde. Le helpergoBack()est aussi dupliqué entre les deux fichiers.Suggestions de simplification
goBack()est dupliquée mot pour mot dans[id].tsxetnew.tsx. Extraire dans un hook ou un utilitaire partagé (ex:hooks/useGoBack.ts) pour éviter la duplication.Problèmes détectés
catcha été remplacé parfinally. Conséquence 1 : les erreurs deupdateTaskousetTagsForTaskne sont plus attrapées et deviennent des unhandled promise rejections. Conséquence 2 :goBack()est appelé dans letry, donc en cas de succès la navigation se fait PUISfinallyexécutesetSaving(false)sur un composant en cours de démontage. Conséquence 3 : en cas d'erreur,setSaving(false)est appelé mais l'erreur remonte quand même (pas decatch). Il faut restaurer lecatchpour la gestion d'erreurs, et déplacergoBack()+setSaving(false)correctement :goBack()dans le try (après le await),setSaving(false)dans le catch.Reviewer automatique — approved
Les deux problèmes du round 1 sont corrigés : le bloc catch est préservé (pas de régression sur la gestion d'erreurs) et le helper goBack() est extrait dans un module partagé. Le fix est minimal, correct et résout l'issue de navigation.