45 lines
1.7 KiB
Markdown
45 lines
1.7 KiB
Markdown
## 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 l’URL (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 d’import/chemins suite au déplacement de code
|
||
- oubli d’un export explicite ou d’un type de retour (règles TypeScript/ESLint strictes)
|