mirror of
https://github.com/felipegcoutinho/openmonetis.git
synced 2026-05-09 19:01:47 +00:00
perf(logos): pré-resolver mapeamentos Logo.dev no servidor
Cada EstablishmentLogo dispara um GET para /api/logo/mapping por nome único (deduplicado pelo React Query, mas ainda N requests por página). Em /dashboard, /transactions e /payers/[payerId] agora fazemos uma única query SQL em batch (fetchEstablishmentLogoMap) e semeamos o cache do React Query antes do primeiro render via novo LogoPrefetchProvider — eliminando os requests da rede. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
28
src/features/dashboard/extract-logo-names.ts
Normal file
28
src/features/dashboard/extract-logo-names.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import type { DashboardData } from "./fetch-dashboard-data";
|
||||
|
||||
/**
|
||||
* Coleta todos os nomes de estabelecimentos exibidos nos widgets do
|
||||
* dashboard que renderizam `<EstablishmentLogo />`. Usado para
|
||||
* pré-resolver os mapeamentos Logo.dev no servidor.
|
||||
*/
|
||||
export function extractDashboardLogoNames(data: DashboardData): string[] {
|
||||
const names: string[] = [];
|
||||
|
||||
for (const bill of data.billsSnapshot.bills) names.push(bill.name);
|
||||
for (const expense of data.recurringExpensesData.expenses)
|
||||
names.push(expense.name);
|
||||
for (const expense of data.installmentExpensesData.expenses)
|
||||
names.push(expense.name);
|
||||
for (const establishment of data.topEstablishmentsData.establishments)
|
||||
names.push(establishment.name);
|
||||
for (const expense of data.topExpensesAll.expenses) names.push(expense.name);
|
||||
for (const expense of data.topExpensesCardOnly.expenses)
|
||||
names.push(expense.name);
|
||||
for (const transactions of Object.values(
|
||||
data.purchasesByCategoryData.transactionsByCategory,
|
||||
)) {
|
||||
for (const transaction of transactions) names.push(transaction.name);
|
||||
}
|
||||
|
||||
return names;
|
||||
}
|
||||
Reference in New Issue
Block a user