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
+8 -5
View File
@@ -1,11 +1,13 @@
'use client';
import { useState, useEffect, useCallback } from 'react';
import { listIPNSKeys, ipnsPublish, ipnsResolve, ipnsGenKey, type IPNSKey } from '@/lib/api';
import { listIPNSKeys, ipnsPublish, ipnsResolve, ipnsGenKey, type IPNSKey } from '@/lib/api/ipns';
import PortalLayout from '@/app/layout-portal';
import { RefreshCw, ExternalLink, Key, FileText, Plus } from 'lucide-react';
import { SkeletonTable } from '@/components/Skeleton';
type Status = 'idle' | 'loading' | 'success' | 'error';
import ErrorBoundary from '@/components/ErrorBoundary';
import type { Status } from './helpers';
export default function IPNSPage() {
const [keys, setKeys] = useState<IPNSKey[]>([]);
@@ -95,6 +97,7 @@ export default function IPNSPage() {
return (
<PortalLayout>
<ErrorBoundary label="IPNS">
{/* Header */}
<div className="flex items-center justify-between mb-6">
<div>
@@ -123,9 +126,8 @@ export default function IPNSPage() {
</div>
{status === 'loading' && (
<div className="flex items-center gap-2 text-sm text-surface-400 py-4">
<RefreshCw className="w-3.5 h-3.5 animate-spin" />
Loading keys...
<div className="overflow-hidden">
<SkeletonTable rows={4} cols={3} />
</div>
)}
@@ -281,6 +283,7 @@ export default function IPNSPage() {
)}
</section>
</div>
</ErrorBoundary>
</PortalLayout>
);
}