Solución del login colgado
Some checks failed
/ Deploy to Cloudflare Pages (push) Has been cancelled

This commit is contained in:
2026-06-18 21:33:48 -03:00
parent 0b07fffad9
commit 81a9424f7f
5 changed files with 171 additions and 1 deletions

View File

@@ -724,8 +724,9 @@ export function LibraryPage() {
const { message: toastMessage, show: showToast } = useToast()
useEffect(() => {
if (!user) return // no fetchear hasta tener usuario confirmado (evita race condition con sesión Supabase)
load()
}, [load])
}, [load, user])
function navigateToGroup(groupId: string | null) {
setTransitioning(true)

View File

@@ -1,4 +1,5 @@
import { useEffect, useState } from 'react'
import { supabase } from '@/lib/supabase'
import { supabaseActivityRepo } from '@/persistence/supabase/activity-repo'
import { supabaseResourceRepo } from '@/persistence/supabase/resource-repo'
import { supabaseProcessRepo } from '@/persistence/supabase/process-repo'
@@ -29,6 +30,8 @@ export function useReportData(processId: string): ReportData {
setIsLoading(true)
setError(null)
try {
// Barrera única: garantiza sesión restaurada antes del fan-out en paralelo
await supabase.auth.getSession()
const [proc, sim, acts, res] = await Promise.all([
supabaseProcessRepo.getById(processId),
supabaseSimulationRepo.getLatestByProcess(processId),

View File

@@ -1,5 +1,6 @@
import { create } from 'zustand'
import { v4 as uuidv4 } from 'uuid'
import { supabase } from '@/lib/supabase'
import { supabaseProcessRepo } from '@/persistence/supabase/process-repo'
import { supabaseGroupRepo } from '@/persistence/supabase/group-repo'
import { supabaseSettingsRepo } from '@/persistence/supabase/settings-repo'
@@ -39,6 +40,14 @@ export const useLibraryStore = create<LibraryState>((set, get) => ({
load: async () => {
set({ isLoading: true })
try {
// Barrera única: garantiza que el cliente Supabase tenga la sesión restaurada
// antes de salir a buscar datos en paralelo (evita 0 filas por RLS en el primer load)
const { data: sessionData } = await supabase.auth.getSession()
console.log('[library-store] load session:', {
hasSession: !!sessionData.session,
userId: sessionData.session?.user?.id ?? 'NULL',
})
const [groups, processes, settings] = await Promise.all([
supabaseGroupRepo.getAll(),
supabaseProcessRepo.getAll(),

View File

@@ -1,4 +1,5 @@
import { create } from 'zustand'
import { supabase } from '@/lib/supabase'
import { supabaseProcessRepo } from '@/persistence/supabase/process-repo'
import { supabaseActivityRepo } from '@/persistence/supabase/activity-repo'
import { supabaseGatewayRepo } from '@/persistence/supabase/gateway-repo'
@@ -35,6 +36,8 @@ export const useProcessStore = create<ProcessState>((set, get) => ({
loadProcess: async (processId) => {
set({ isLoading: true, error: null })
try {
// Barrera única: garantiza sesión restaurada antes del fan-out en paralelo
await supabase.auth.getSession()
const [process, activities, gateways, resources] = await Promise.all([
supabaseProcessRepo.getById(processId),
supabaseActivityRepo.getByProcess(processId),
@@ -50,6 +53,7 @@ export const useProcessStore = create<ProcessState>((set, get) => ({
setCurrentProcess: async (process, userId) => {
await supabaseProcessRepo.save(process, userId)
await supabase.auth.getSession()
const [activities, gateways, resources] = await Promise.all([
supabaseActivityRepo.getByProcess(process.id),
supabaseGatewayRepo.getByProcess(process.id),