1
0
forked from maik/IPFS-portal

refactor: codebase opschoning — type safety, error handling, central config, page splits

- categorie A: alle catch(e: any) → catch(e: unknown) met instanceof check
- categorie B: stille .catch() logging toegevoegd (SWRegister, admin, upload, auth)
- categorie C: hardcoded 192.168.1.176 IPs vervangen door env var defaults
- categorie D: page files >250L gesplitst (history, settings, explorer, admin/payment,
  ipns, users, upload, dashboard) in helpers/components
- categorie E: eslint-disable vervangen in SearchInput.tsx
- src/lib/config.ts centrale config module (localhost defaults)
- CSP in next.config.ts dynamisch via env var
- deploy.sh: geen hardcoded IP meer (REQUIRED arg)
- lib/api/ lib/auth/ lib/wallet/ lib/search-index/ lib/storage/ gesplitst in modules
- ongebruikte bestanden verwijderd: api.ts, auth.tsx, wallet.ts, search-index.ts,
  PaymentPanel.tsx, SearchBar.tsx, proxy.ts, serve-static.js
This commit is contained in:
maikrolf
2026-07-19 15:35:18 +02:00
parent 88ce38a49e
commit f72b775379
144 changed files with 4644 additions and 10230 deletions
+6 -2
View File
@@ -1,10 +1,13 @@
'use client';
import { useEffect, useState } from 'react';
import { checkHealth } from '@/lib/api';
import { checkHealth } from '@/lib/api/gateway';
import { useAuth } from '@/lib/auth';
import { Shield, LogOut } from 'lucide-react';
// NOTE: PortalHeader fetches node status + auth internally via useEffect.
// Pages that need a custom header can pass one via PortalLayout's `header` slot
// instead of modifying this component. See layout-portal.tsx PortalLayoutProps.
export default function PortalHeader() {
const { user, logout } = useAuth();
const [nodeStatus, setNodeStatus] = useState<'online' | 'offline' | 'checking'>('checking');
@@ -18,7 +21,8 @@ export default function PortalHeader() {
if (!mounted) return;
setNodeStatus('online');
setNodeVersion(h.node);
} catch {
} catch (err) {
console.error('[PortalHeader] Health check failed:', err);
if (!mounted) return;
setNodeStatus('offline');
}