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:
@@ -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()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user