0.3.2.1 UI修复3

This commit is contained in:
liaibo
2026-01-20 07:24:12 +08:00
parent fa7235b1a7
commit f13de35321
16 changed files with 741 additions and 108 deletions
@@ -0,0 +1,22 @@
import { NextResponse } from "next/server";
import { HttpError } from "@/lib/auth/authContext";
import { getAuthedConvexClient } from "@/lib/convex/route";
export const dynamic = "force-dynamic";
export async function GET() {
try {
const { auth } = await getAuthedConvexClient();
return NextResponse.json({
userId: auth.userId,
email: auth.email ?? null,
name: auth.name ?? null,
});
} catch (err) {
if (err instanceof HttpError) {
return NextResponse.json({ error: "未登录" }, { status: err.status });
}
return NextResponse.json({ error: "未登录" }, { status: 401 });
}
}
@@ -0,0 +1,42 @@
import { NextResponse } from "next/server";
import type { MediaAsset } from "@/types/media";
import { isConvexEnabled } from "@/lib/convex/enabled";
import { HttpError, requireAuthContext } from "@/lib/auth/authContext";
import { api } from "@/lib/convex/api";
import { getConvexAuthedHttpClient } from "@/lib/convex/server";
export const dynamic = "force-dynamic";
export async function GET(request: Request) {
if (isConvexEnabled()) {
let auth;
try {
auth = await requireAuthContext();
} catch (err) {
if (err instanceof HttpError) {
return NextResponse.json({ error: "未登录" }, { status: err.status });
}
return NextResponse.json({ error: "未登录" }, { status: 401 });
}
const { searchParams } = new URL(request.url);
const documentId = searchParams.get("documentId") ?? "";
const limit = Number.parseInt(searchParams.get("limit") ?? "200", 10);
if (!documentId) {
return NextResponse.json({ error: "缺少 documentId" }, { status: 400 });
}
const client = await getConvexAuthedHttpClient();
const items = await client.query(api.mediaAssets.listByDocument, {
userId: auth.userId,
documentId,
limit: Number.isNaN(limit) ? 200 : limit,
});
return NextResponse.json({ items: (items ?? []) as MediaAsset[] });
}
return NextResponse.json({ error: "当前仅支持 Convex 模式" }, { status: 501 });
}
@@ -82,7 +82,11 @@ export async function POST(request: Request) {
if (isConvexEnabled()) {
try {
// 说明:Convex 模式下,保存写回 Convex Files,并更新 media_assets.storage_id/file_url。
const userId = String(process.env.DEV_USER_ID || "dev-user").trim() || "dev-user";
// 优先使用前端在 /onlyoffice 页面透传的 userId;避免固定 dev-user 导致 workspace membership 校验失败。
const userId =
String(searchParams.get("userId") || "").trim() ||
String(process.env.DEV_USER_ID || "").trim() ||
"dev-user";
const client = getConvexHttpClient();
const asset = await client.query(api.mediaAssets.getById, { userId, id: assetId });
+14 -2
View File
@@ -97,6 +97,18 @@ export async function GET(request: Request) {
includeDeleted: true,
});
const mediaAssets = await client.query(api.mediaAssets.listByWorkspace, {
userId: auth.userId,
workspaceId: targetWorkspaceId,
limit: 200,
});
const trashedMediaAssets = await client.query(api.mediaAssets.listDeletedByWorkspace, {
userId: auth.userId,
workspaceId: targetWorkspaceId,
limit: 2000,
});
const activeMindmaps = (mindmapRows ?? []).filter((r) => !r.deleted_at);
const trashedMindmaps = (mindmapRows ?? []).filter((r) => !!r.deleted_at);
@@ -166,13 +178,13 @@ export async function GET(request: Request) {
workspaces,
documents,
trashedDocuments,
trashedMediaAssets: [],
trashedMediaAssets: (trashedMediaAssets ?? []) as MediaAsset[],
trashedMindmapAssets,
mindmapDocs,
mindmapAssets,
mindmapAssetChildren,
tableAssets: [],
mediaAssets: [],
mediaAssets: (mediaAssets ?? []) as MediaAsset[],
};
return NextResponse.json(payload);