Add configurable homepage social links

This commit is contained in:
爱喝水的木子
2026-03-20 14:31:24 +08:00
parent 8e6bd210a8
commit 8c7148f819
7 changed files with 379 additions and 10 deletions

View File

@@ -2,9 +2,11 @@ import { cookies } from "next/headers";
import { AdminPostList } from "@/components/AdminPostList";
import { AdminUserManager } from "@/components/AdminUserManager";
import { CreatePostForm } from "@/components/CreatePostForm";
import { SocialLinksManager } from "@/components/SocialLinksManager";
import { cookieName, isAdminSession, verifySession } from "@/lib/auth";
import { getDb } from "@/lib/mongo";
import { buildOwnedPostFilter, buildPinnedSort, serializePost } from "@/lib/posts";
import { getDefaultSocialLinks, getSiteSettings } from "@/lib/site-settings";
import { findUserById, getEffectiveDailyPostLimit, getShanghaiDayRange } from "@/lib/users";
import { Post } from "@/types/post";
@@ -203,13 +205,15 @@ export default async function AdminPage() {
const adminView = isAdminSession(session);
const roleLabel = ROLE_LABELS[(session?.role as ManagedUser["role"]) || "user"];
const [recentPosts, favoritePosts, availableTags, publishQuota, managedUsers] = await Promise.all([
fetchRecentPosts(session),
fetchFavoritePosts(session),
fetchAvailableTags(session),
fetchPublishQuota(session),
adminView ? fetchManagedUsers() : Promise.resolve([] as ManagedUser[])
]);
const [recentPosts, favoritePosts, availableTags, publishQuota, managedUsers, siteSettings] =
await Promise.all([
fetchRecentPosts(session),
fetchFavoritePosts(session),
fetchAvailableTags(session),
fetchPublishQuota(session),
adminView ? fetchManagedUsers() : Promise.resolve([] as ManagedUser[]),
adminView ? getSiteSettings() : Promise.resolve({ socialLinks: getDefaultSocialLinks() })
]);
return (
<div className="space-y-6">
@@ -218,7 +222,7 @@ export default async function AdminPage() {
<div className="space-y-2">
<h1 className="text-2xl font-semibold text-slate-900"></h1>
<p className="text-sm text-slate-500">
/
/
</p>
</div>
<div className="flex items-center gap-3">
@@ -235,6 +239,8 @@ export default async function AdminPage() {
</div>
</section>
{adminView ? <SocialLinksManager initialLinks={siteSettings.socialLinks} /> : null}
<CreatePostForm
availableTags={availableTags}
publishLimit={publishQuota.limit}