story-research-zapwall/fixKnowledge/2026-01-13-lint-max-lines-author-page.md
2026-01-13 15:56:14 +01:00

45 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Contexte
ESLint signalait un `max-lines` sur `pages/author/[pubkey].tsx` (fichier trop long). Le reste du projet passait.
## Root cause
La page regroupait dans un seul fichier :
- logique de chargement (hook + requêtes)
- composants de présentation (header, sponsoring, liste de séries)
- parsing de lURL (compatibilité ancien format vs hash)
Ce regroupement dépassait la limite `max-lines` (250).
## Correctif
Refactor purement structurel (sans changement fonctionnel) :
- extraction de la logique et des sous-composants dans `components/authorPage/*`
- remplacement de `pages/author/[pubkey].tsx` par un simple re-export du composant page
## Pages / fichiers affectés
- `pages/author/[pubkey].tsx`
- `components/authorPage/AuthorPage.tsx`
- `components/authorPage/AuthorPageContent.tsx`
- `components/authorPage/AuthorPageHeader.tsx`
- `components/authorPage/SponsoringSummary.tsx`
- `components/authorPage/SeriesList.tsx`
- `components/authorPage/useAuthorData.ts`
- `components/authorPage/resolveAuthorHashIdOrPubkey.ts`
- `pages/api/nip95-upload.ts` (shim de compatibilité pour la validation Next/TypeScript)
- `lib/metadataExtractor/reviewTip.ts` (validation stricte des champs requis)
- `lib/paymentNotes/sponsoring.ts` (exactOptionalPropertyTypes)
- `components/relayManager/RelayCard.tsx` (typage lastSyncDate)
- `lib/keyManagementTwoLevel/crypto.ts` (BufferSource)
## Vérification
- `npm run lint` (doit sortir en succès, sans erreur `max-lines` sur `pages/author/[pubkey].tsx`)
- `npm run type-check` (doit sortir en succès)
## Risques / régressions possibles
- erreurs dimport/chemins suite au déplacement de code
- oubli dun export explicite ou dun type de retour (règles TypeScript/ESLint strictes)