Lighten Android chat realtime refreshes

This commit is contained in:
kris
2026-04-10 17:15:39 +08:00
parent 68da424eb8
commit 7131ee9eb1
9 changed files with 439 additions and 21 deletions

View File

@@ -1,6 +1,7 @@
import { NextRequest, NextResponse } from "next/server";
import { requireRequestSession } from "@/lib/boss-auth";
import { appendProjectMessage, buildCollaborationGate, readState } from "@/lib/boss-data";
import { jsonNoStore } from "@/lib/api-response";
import {
getThreadConversationExecutionConflict,
queueGroupDispatchPlan,
@@ -35,6 +36,40 @@ function threadConversationFailureMessage(error?: string) {
}
}
function buildProjectMessagesPayload(
state: Awaited<ReturnType<typeof readState>>,
projectId: string,
) {
const project = state.projects.find((item) => item.id === projectId);
if (!project) {
return null;
}
return {
ok: true,
project,
devices: state.devices.filter((device) => project.deviceIds.includes(device.id)),
};
}
export async function GET(
request: NextRequest,
context: { params: Promise<{ projectId: string }> },
) {
const session = await requireRequestSession(request);
if (!session) {
return jsonNoStore({ ok: false, message: "UNAUTHORIZED" }, { status: 401 });
}
const { projectId } = await context.params;
const state = await readState();
const payload = buildProjectMessagesPayload(state, projectId);
if (!payload) {
return jsonNoStore({ ok: false, message: "PROJECT_NOT_FOUND" }, { status: 404 });
}
return jsonNoStore(payload);
}
export async function POST(
request: NextRequest,
context: { params: Promise<{ projectId: string }> },