Fix production build errors, static rendering, and eslint configuration

This commit is contained in:
Carlos (Almeira) 2026-07-09 15:07:57 -05:00
parent a17f989ba1
commit 8d377b0d7c
11 changed files with 26 additions and 15 deletions

4
.eslintignore Normal file
View File

@ -0,0 +1,4 @@
*.js
/out
/.next
/node_modules

Binary file not shown.

View File

@ -12,6 +12,7 @@ const eslintConfig = defineConfig([
"out/**",
"build/**",
"next-env.d.ts",
"*.js",
]),
]);

View File

@ -8,6 +8,7 @@ const nextConfig: NextConfig = {
experimental: {
serverActions: {
bodySizeLimit: (process.env.SERVER_ACTIONS_BODY_SIZE_LIMIT as any) || '100mb',
allowedOrigins: ['almeiraproducciones.com', 'news.almeira.com.co', 'www.almeiraproducciones.com', 'localhost:3000'],
},
},
};

View File

@ -58,10 +58,10 @@ async function fetchClasificadosData() {
Query.equal('$id', mediaIds)
]);
const mediaMap = new Map<string, MediaItem>(mediaRes.documents.map(m => [m.$id, m as unknown as MediaItem]));
posts = posts.map(p => ({
posts = posts.map(p => JSON.parse(JSON.stringify({
...p,
resolved_media: mediaMap.get(p.imagen_destacada_id as string)
}));
})));
} else {
posts = JSON.parse(JSON.stringify(posts));
}
@ -78,7 +78,8 @@ export default async function ClasificadosPage() {
const { posts, cardSettings } = await fetchClasificadosData();
const hasSidebar = await hasSidebarContent();
const user = await getLoggedInUser();
const rawUser = await getLoggedInUser();
const user = rawUser ? JSON.parse(JSON.stringify(rawUser)) : null;
const isAdmin = (user as any)?.labels?.includes('admin') || (user as any)?.labels?.includes('editor') || user?.$id === 'admin-emergency';
return (

View File

@ -4,6 +4,8 @@ import { redirect } from 'next/navigation';
import { ToastProvider } from '@/components/publications/ToastProvider';
import { ErrorBoundary } from '@/components/publications/ErrorBoundary';
export const dynamic = 'force-dynamic';
export default async function DashboardLayout({
children,
}: {

View File

@ -11,7 +11,8 @@ import {
import Link from 'next/link';
export default async function DashboardPage() {
const user = await getLoggedInUser();
const rawUser = await getLoggedInUser();
const user = rawUser ? JSON.parse(JSON.stringify(rawUser)) : null;
let stats = {
totalPosts: 0,
totalMedia: 0,

View File

@ -58,10 +58,10 @@ async function fetchEventosData() {
Query.equal('$id', mediaIds)
]);
const mediaMap = new Map<string, MediaItem>(mediaRes.documents.map(m => [m.$id, m as unknown as MediaItem]));
posts = posts.map(p => ({
posts = posts.map(p => JSON.parse(JSON.stringify({
...p,
resolved_media: mediaMap.get(p.imagen_destacada_id as string)
}));
})));
} else {
posts = JSON.parse(JSON.stringify(posts));
}
@ -78,7 +78,8 @@ export default async function EventosPage() {
const { posts, cardSettings } = await fetchEventosData();
const hasSidebar = await hasSidebarContent();
const user = await getLoggedInUser();
const rawUser = await getLoggedInUser();
const user = rawUser ? JSON.parse(JSON.stringify(rawUser)) : null;
const isAdmin = (user as any)?.labels?.includes('admin') || (user as any)?.labels?.includes('editor') || user?.$id === 'admin-emergency';
return (

View File

@ -101,7 +101,8 @@ export default async function Home(props: { searchParams: Promise<{ [key: string
const page = Number(searchParams?.page) || 1;
const adminMonth = searchParams?.month ? Number(searchParams.month) : null;
const user = await getLoggedInUser();
const rawUser = await getLoggedInUser();
const user = rawUser ? JSON.parse(JSON.stringify(rawUser)) : null;
const isAdmin = (user as any)?.labels?.includes('admin') || (user as any)?.labels?.includes('editor') || user?.$id === 'admin-emergency';
const { posts, cardSettings, totalPages } = await fetchHomeData(page, isAdmin, adminMonth);

View File

@ -1,5 +1,5 @@
import { APPWRITE_ALMEIRA_CONFIG } from '@/lib/appwrite';
import { createSessionClient } from '@/lib/appwrite.server';
import { createAdminClient } from '@/lib/appwrite.server';
import { Query } from 'node-appwrite';
import Link from 'next/link';
import { MessageCircle } from 'lucide-react';
@ -11,12 +11,7 @@ export default async function NewsTicker() {
let showNewsDate = true;
try {
let client: any = await createSessionClient();
if (!client) {
const { createAdminClient } = await import('@/lib/appwrite.server');
client = await createAdminClient();
}
const client: any = await createAdminClient();
if (!client) throw new Error("No Appwrite client available");
// 1. Fetch Settings

View File

@ -77,6 +77,10 @@ export async function getLoggedInUser() {
return await sessionClient.account.get();
} catch (error: any) {
// Next.js uses a specific error to bailout of static generation. We MUST re-throw it.
if (error?.digest === 'DYNAMIC_SERVER_USAGE' || error?.message?.includes('Dynamic server usage')) {
throw error;
}
if (error?.code !== 401) {
console.error("getLoggedInUser: Error al validar sesión:", error.message || error);
}