1
mirror of https://github.com/jakejarvis/jarv.is.git synced 2026-06-05 19:15:30 -04:00

fix: batch server requests from posts list

This commit is contained in:
2026-01-28 14:37:37 -05:00
parent 9d8e775fcd
commit 4dca81b58a
50 changed files with 160 additions and 143 deletions
+1 -1
View File
@@ -10,4 +10,4 @@ const Analytics = () => {
);
};
export default Analytics;
export { Analytics };
+2 -2
View File
@@ -1,7 +1,7 @@
import { env } from "@/lib/env";
import { JsonLd } from "react-schemaorg";
import PageTitle from "@/components/layout/page-title";
import Video from "@/components/video";
import { PageTitle } from "@/components/layout/page-title";
import { Video } from "@/components/video";
import { createMetadata } from "@/lib/metadata";
import type { VideoObject } from "schema-dts";
+1 -1
View File
@@ -1,4 +1,4 @@
import PageTitle from "@/components/layout/page-title";
import { PageTitle } from "@/components/layout/page-title";
import { createMetadata } from "@/lib/metadata";
export const metadata = createMetadata({
+2 -2
View File
@@ -1,5 +1,5 @@
import PageTitle from "@/components/layout/page-title";
import ContactForm from "@/components/contact-form";
import { PageTitle } from "@/components/layout/page-title";
import { ContactForm } from "@/components/contact-form";
import { createMetadata } from "@/lib/metadata";
export const metadata = createMetadata({
+2 -1
View File
@@ -193,9 +193,10 @@
::selection {
@apply bg-selection text-selection-foreground;
}
/* https://ui.shadcn.com/docs/components/button#cursor */
button:not(:disabled),
[role="button"]:not(:disabled) {
@apply cursor-pointer;
cursor: pointer;
}
}
+2 -2
View File
@@ -1,7 +1,7 @@
import { env } from "@/lib/env";
import { JsonLd } from "react-schemaorg";
import PageTitle from "@/components/layout/page-title";
import Video from "@/components/video";
import { PageTitle } from "@/components/layout/page-title";
import { Video } from "@/components/video";
import { createMetadata } from "@/lib/metadata";
import type { VideoObject } from "schema-dts";
+4 -4
View File
@@ -1,11 +1,11 @@
import { ViewTransition } from "react";
import { env } from "@/lib/env";
import { JsonLd } from "react-schemaorg";
import Providers from "@/components/providers";
import Header from "@/components/layout/header";
import Footer from "@/components/layout/footer";
import { Providers } from "@/components/providers";
import { Header } from "@/components/layout/header";
import { Footer } from "@/components/layout/footer";
import { Toaster } from "@/components/ui/sonner";
import Analytics from "@/app/analytics";
import { Analytics } from "@/app/analytics";
import { defaultMetadata } from "@/lib/metadata";
import { GeistSans, GeistMono } from "@/lib/fonts";
import siteConfig from "@/lib/config/site";
+2 -2
View File
@@ -1,7 +1,7 @@
import { env } from "@/lib/env";
import { JsonLd } from "react-schemaorg";
import PageTitle from "@/components/layout/page-title";
import Video from "@/components/video";
import { PageTitle } from "@/components/layout/page-title";
import { Video } from "@/components/video";
import { createMetadata } from "@/lib/metadata";
import type { VideoObject } from "schema-dts";
+1 -1
View File
@@ -1,4 +1,4 @@
import PageTitle from "@/components/layout/page-title";
import { PageTitle } from "@/components/layout/page-title";
import { createMetadata } from "@/lib/metadata";
export const metadata = createMetadata({
+1 -1
View File
@@ -1,5 +1,5 @@
import { Button } from "@/components/ui/button";
import Video from "@/components/video";
import { Video } from "@/components/video";
import Link from "next/link";
import type { Metadata } from "next";
+4 -4
View File
@@ -3,10 +3,10 @@ import { Suspense } from "react";
import Link from "next/link";
import { JsonLd } from "react-schemaorg";
import { CalendarDaysIcon, TagIcon, SquarePenIcon, EyeIcon, MessagesSquareIcon } from "lucide-react";
import ViewCounter from "@/components/view-counter";
import CommentCount from "@/components/comment-count";
import Comments from "@/components/comments/comments";
import CommentsSkeleton from "@/components/comments/comments-skeleton";
import { ViewCounter } from "@/components/view-counter";
import { CommentCount } from "@/components/comment-count";
import { Comments } from "@/components/comments/comments";
import { CommentsSkeleton } from "@/components/comments/comments-skeleton";
import { getSlugs, getFrontMatter, POSTS_DIR } from "@/lib/posts";
import { createMetadata } from "@/lib/metadata";
import siteConfig from "@/lib/config/site";
+7 -5
View File
@@ -1,6 +1,6 @@
import Link from "next/link";
import PageTitle from "@/components/layout/page-title";
import PostStats from "@/components/post-stats";
import { PageTitle } from "@/components/layout/page-title";
import { PostStats, PostStatsProvider } from "@/components/post-stats";
import { getFrontMatter, POSTS_DIR, type FrontMatter } from "@/lib/posts";
import { createMetadata } from "@/lib/metadata";
import authorConfig from "@/lib/config/author";
@@ -61,12 +61,12 @@ const PostsList = async () => {
{dateDisplay}
</time>
</span>
<div className="space-x-2.5">
<div className="space-x-2">
{/* htmlTitle is sanitized by rehypeSanitize in lib/posts.ts with strict allowlist: only code, em, strong tags */}
<Link
href={`/${POSTS_DIR}/${slug}`}
dangerouslySetInnerHTML={{ __html: htmlTitle || title }}
className="underline-offset-4 hover:underline"
className="mr-2.5 underline-offset-4 hover:underline"
style={{ viewTransitionName: `note-title-${slug}` }}
/>
@@ -87,7 +87,9 @@ const Page = async () => {
return (
<>
<PageTitle canonical="/notes">Notes</PageTitle>
<PostsList />
<PostStatsProvider>
<PostsList />
</PostStatsProvider>
</>
);
};
+2 -2
View File
@@ -1,5 +1,5 @@
import PageTitle from "@/components/layout/page-title";
import Marquee from "@/components/marquee";
import { PageTitle } from "@/components/layout/page-title";
import { Marquee } from "@/components/marquee";
import { Win95Icon } from "@/components/icons";
import { createMetadata } from "@/lib/metadata";
import { PageStyles } from "./page-styles";
+1 -1
View File
@@ -1,4 +1,4 @@
import PageTitle from "@/components/layout/page-title";
import { PageTitle } from "@/components/layout/page-title";
import { createMetadata } from "@/lib/metadata";
export const metadata = createMetadata({
+3 -3
View File
@@ -3,9 +3,9 @@ import { Suspense } from "react";
import { notFound } from "next/navigation";
import { GitForkIcon, StarIcon } from "lucide-react";
import { Skeleton } from "@/components/ui/skeleton";
import PageTitle from "@/components/layout/page-title";
import RelativeTime from "@/components/relative-time";
import ActivityCalendar from "@/components/activity-calendar";
import { PageTitle } from "@/components/layout/page-title";
import { RelativeTime } from "@/components/relative-time";
import { ActivityCalendar } from "@/components/activity-calendar";
import { GitHubIcon } from "@/components/icons";
import { cn } from "@/lib/utils";
import { createMetadata } from "@/lib/metadata";
+1 -1
View File
@@ -1,4 +1,4 @@
import PageTitle from "@/components/layout/page-title";
import { PageTitle } from "@/components/layout/page-title";
import { createMetadata } from "@/lib/metadata";
export const metadata = createMetadata({
+1 -1
View File
@@ -1,4 +1,4 @@
import PageTitle from "@/components/layout/page-title";
import { PageTitle } from "@/components/layout/page-title";
import { createMetadata } from "@/lib/metadata";
import backgroundImg from "./sundar.jpg";