From b1f16c5756e3128d1d845eccd83f6e784e5c7ead Mon Sep 17 00:00:00 2001 From: 230417 <230417@epvc.pt> Date: Tue, 3 Mar 2026 17:03:54 +0000 Subject: [PATCH] app --- web/src/context/AppContext.tsx | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/web/src/context/AppContext.tsx b/web/src/context/AppContext.tsx index 11dafbd..aa0e2ae 100644 --- a/web/src/context/AppContext.tsx +++ b/web/src/context/AppContext.tsx @@ -115,15 +115,18 @@ export const AppProvider = ({ children }: { children: React.ReactNode }) => { })); setState((s) => { - // Preservar lojas criadas localmente que ainda não apareceram no fetch - const existingLocalShops = s.shops.filter( - (localShop) => !fetchedShops.some((fs) => fs.id === localShop.id) - ); - return { - ...s, - shops: [...fetchedShops, ...existingLocalShops], - shopsReady: true - }; + // Substituir completamente com dados do Supabase. + // Para a loja do utilizador atual (se for barbearia), preservar dados locais mais recentes + // para não sobrepor com dados antigos da BD durante a mesma sessão. + const mergedShops = fetchedShops.map((fetchedShop) => { + const localVersion = s.shops.find(ls => ls.id === fetchedShop.id); + // Se o utilizador atual é o dono desta loja, preferir a versão local (mais atualizada) + if (localVersion && s.user?.shopId === fetchedShop.id) { + return { ...fetchedShop, ...localVersion }; + } + return fetchedShop; + }); + return { ...s, shops: mergedShops, shopsReady: true }; }); } catch (err) { console.error('refreshShops error:', err); @@ -253,8 +256,10 @@ export const AppProvider = ({ children }: { children: React.ReactNode }) => { }; const logout = () => { - setState((s) => ({ ...s, user: undefined })); - supabase.auth.signOut().catch(console.error); + setState((s) => ({ ...s, user: undefined, shops: [], shopsReady: false })); + supabase.auth.signOut() + .then(() => refreshShops()) + .catch(console.error); }; const toggleFavorite = (shopId: string) => {