From 5e7a28878f5f14f58c85c4cef3aac9aefaed9c19 Mon Sep 17 00:00:00 2001 From: "Carlos (Almeira)" Date: Thu, 26 Mar 2026 14:21:32 -0500 Subject: [PATCH] Fix: NewsTicker public fetch and Mobile Menu button interaction --- src/components/Navbar.tsx | 9 +++++++-- src/components/NewsTicker.tsx | 10 ++++++++-- src/lib/appwrite.server.ts | 16 ++++++++++++++++ 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx index 3b2d440..e56d803 100644 --- a/src/components/Navbar.tsx +++ b/src/components/Navbar.tsx @@ -109,8 +109,13 @@ export const Navbar = ({ entity }: { entity?: any }) => { {/* Menú Móvil Toggle */} diff --git a/src/components/NewsTicker.tsx b/src/components/NewsTicker.tsx index a6f57b0..1f22ff4 100644 --- a/src/components/NewsTicker.tsx +++ b/src/components/NewsTicker.tsx @@ -7,8 +7,14 @@ export default async function NewsTicker() { let noticias: any[] = []; try { - const sessionClient = await createSessionClient(); - if (!sessionClient) throw new Error("Anonymous context required"); // Nextjs might render this in public if we use anon client + // NewsTicker is public, we use admin client if session is not available + let client: any = await createSessionClient(); + if (!client) { + const { createAdminClient } = await import('@/lib/appwrite.server'); + client = await createAdminClient(); + } + + if (!client) throw new Error("No Appwrite client available"); // We need an Anonymous or Public read client if this is shown in home. // Since 'createSessionClient' uses the session cookie, we might have issues on public incognito pages. diff --git a/src/lib/appwrite.server.ts b/src/lib/appwrite.server.ts index d1163d4..f931662 100644 --- a/src/lib/appwrite.server.ts +++ b/src/lib/appwrite.server.ts @@ -33,6 +33,22 @@ export async function createSessionClient() { }; } +export async function createAdminClient() { + const client = new Client() + .setEndpoint(ENDPOINT) + .setProject(PROJECT_ID) + .setKey(process.env.APPWRITE_API_KEY || ''); + + return { + get account() { + return new Account(client); + }, + get databases() { + return new Databases(client); + } + }; +} + export async function getLoggedInUser() { const cookieStore = await cookies(); const sessionCookie = cookieStore.get('a_session_' + PROJECT_ID.toLowerCase());