Highly ambitious ATProtocol AppView service and sdks

fix records card on slice overview, don't show hero content on the landing page if logged in

+16 -1
+4
frontend/src/features/landing/templates/LandingPage.tsx
··· 56 currentUser={currentUser} 57 > 58 <div className="px-4 py-8"> 59 {/* Hero Section */} 60 <div className="text-center mb-16"> 61 <Text ··· 457 </div> 458 </div> 459 </div> 460 461 <PageHeader title="Timeline" /> 462
··· 56 currentUser={currentUser} 57 > 58 <div className="px-4 py-8"> 59 + {!currentUser?.isAuthenticated && ( 60 + <> 61 {/* Hero Section */} 62 <div className="text-center mb-16"> 63 <Text ··· 459 </div> 460 </div> 461 </div> 462 + </> 463 + )} 464 465 <PageHeader title="Timeline" /> 466
+12 -1
frontend/src/features/slices/overview/handlers.tsx
··· 2 import { withAuth } from "../../../routes/middleware.ts"; 3 import { renderHTML } from "../../../utils/render.tsx"; 4 import { SliceOverview } from "./templates/SliceOverview.tsx"; 5 - import { withSliceAccess } from "../../../routes/slice-middleware.ts"; 6 import { extractSliceParams } from "../../../utils/slice-params.ts"; 7 8 async function handleSliceOverview( ··· 34 return Response.redirect(lexiconUrl, 302); 35 } 36 37 return renderHTML( 38 <SliceOverview 39 slice={context.sliceContext!.slice!} 40 sliceId={sliceParams.sliceId} 41 currentTab="overview" 42 currentUser={authContext.currentUser} 43 hasSliceAccess={context.sliceContext?.hasAccess}
··· 2 import { withAuth } from "../../../routes/middleware.ts"; 3 import { renderHTML } from "../../../utils/render.tsx"; 4 import { SliceOverview } from "./templates/SliceOverview.tsx"; 5 + import { 6 + getSliceStats, 7 + withSliceAccess, 8 + } from "../../../routes/slice-middleware.ts"; 9 import { extractSliceParams } from "../../../utils/slice-params.ts"; 10 11 async function handleSliceOverview( ··· 37 return Response.redirect(lexiconUrl, 302); 38 } 39 40 + const stats = await getSliceStats(context.sliceContext!.sliceUri); 41 + const collections = stats.collections.map((stat) => ({ 42 + name: stat.name, 43 + count: stat.count, 44 + actors: stat.actors, 45 + })); 46 + 47 return renderHTML( 48 <SliceOverview 49 slice={context.sliceContext!.slice!} 50 sliceId={sliceParams.sliceId} 51 + collections={collections} 52 currentTab="overview" 53 currentUser={authContext.currentUser} 54 hasSliceAccess={context.sliceContext?.hasAccess}