fix(project-management) : reflect saved task immediately in board, list and reopened modal

TaskModal now emits the fresh task returned by the API (same task:read
shape as the collection). The board, my-tasks and archives pages reinject
it into their local state and selectedTask before the background re-fetch,
so the list and a reopened modal no longer show the previous snapshot while
loadData() is still running.
This commit is contained in:
Matthieu
2026-06-23 12:14:22 +02:00
parent f6d37e4667
commit bf55a55fa6
4 changed files with 26 additions and 5 deletions
@@ -150,7 +150,13 @@ function openTaskEdit(task: Task) {
taskDrawerOpen.value = true
}
async function onSaved() {
async function onSaved(savedTask?: Task) {
// Mise à jour optimiste avant le re-fetch (cf. index.vue) pour éviter le snapshot stale.
if (savedTask) {
const idx = archivedTasks.value.findIndex(t => t.id === savedTask.id)
if (idx !== -1) archivedTasks.value[idx] = savedTask
if (selectedTask.value?.id === savedTask.id) selectedTask.value = savedTask
}
await loadData()
}
@@ -473,7 +473,16 @@ async function onBulkDelete() {
await loadData()
}
async function onSaved() {
async function onSaved(savedTask?: Task) {
// Mise à jour optimiste : la modale se ferme avant la fin du re-fetch, on
// réinjecte immédiatement la tâche fraîche renvoyée par l'API pour éviter
// que la liste (et un éventuel ré-ouverture de la modale) reste sur l'ancien snapshot.
if (savedTask) {
const idx = tasks.value.findIndex(t => t.id === savedTask.id)
if (idx !== -1) tasks.value[idx] = savedTask
else tasks.value.push(savedTask)
if (selectedTask.value?.id === savedTask.id) selectedTask.value = savedTask
}
await loadData()
}