From a1a0e595a4c8f4cabdda514375e3847ba19e737b Mon Sep 17 00:00:00 2001 From: Ricardo Gonzalez Date: Fri, 29 May 2026 02:15:05 -0500 Subject: [PATCH] =?UTF-8?q?Fix:=20team=20members=20no=20se=20persist=C3=AD?= =?UTF-8?q?an=20ni=20cargaban=20al=20inicio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Bug: App.vue llama fetchProjects() antes de que ProjectListView monte, el watch de projects.length nunca se disparaba - Fix: watch con immediate:true + dependencia dual (projects + users), guard teamInitialized para ejecutar una sola vez - Garantiza que loadAllTeams corra cuando AMBOS datos estén listos --- src/views/ProjectListView.vue | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/views/ProjectListView.vue b/src/views/ProjectListView.vue index fc513ca..f123e2d 100644 --- a/src/views/ProjectListView.vue +++ b/src/views/ProjectListView.vue @@ -54,6 +54,7 @@ function getInitials(name: string): string { // ─── Per-project team members ─────────────── const teamByProject = ref>(new Map()) +const teamInitialized = ref(false) const teamDialogProjectId = ref(null) const teamDialogOpen = ref(false) const pendingTeam = ref>(new Set()) @@ -96,9 +97,16 @@ async function loadAllTeams() { teamByProject.value = map } -watch(() => projects.projects.length, async () => { - if (projects.projects.length > 0) await loadAllTeams() -}) +watch( + [() => projects.projects.length, () => usersStore.users.length], + async ([pLen, uLen]) => { + if (pLen > 0 && uLen > 0 && !teamInitialized.value) { + teamInitialized.value = true + await loadAllTeams() + } + }, + { immediate: true } +) function getTeamMembers(projectId: number): AlphaUser[] { const ids = teamByProject.value.get(projectId) ?? []