Solución del login colgado
Some checks failed
/ Deploy to Cloudflare Pages (push) Has been cancelled
Some checks failed
/ Deploy to Cloudflare Pages (push) Has been cancelled
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user