update message approval status after processing message

This commit is contained in:
Will Chen
2025-04-18 14:00:05 -07:00
parent a4629e7698
commit e3568f9a97
3 changed files with 33 additions and 16 deletions

View File

@@ -261,18 +261,27 @@ export function registerChatStreamHandlers() {
}) })
.returning(); .returning();
await db
.update(messages)
.set({ content: fullResponse })
.where(eq(messages.id, assistantMessage.id));
if (readSettings().autoApproveChanges) { if (readSettings().autoApproveChanges) {
const status = await processFullResponseActions( const status = await processFullResponseActions(
fullResponse, fullResponse,
req.chatId, req.chatId,
{ chatSummary } { chatSummary, messageId: assistantMessage.id }
); );
const chat = await db.query.chats.findFirst({
where: eq(chats.id, req.chatId),
with: {
messages: {
orderBy: (messages, { asc }) => [asc(messages.createdAt)],
},
},
});
event.sender.send("chat:response:chunk", {
chatId: req.chatId,
messages: chat!.messages,
});
if (status.error) { if (status.error) {
event.sender.send( event.sender.send(
"chat:response:error", "chat:response:error",

View File

@@ -130,7 +130,10 @@ const approveProposalHandler = async (
const processResult = await processFullResponseActions( const processResult = await processFullResponseActions(
messageToApprove.content, messageToApprove.content,
chatId, chatId,
{ chatSummary: chatSummary ?? undefined } // Pass summary if found {
chatSummary: chatSummary ?? undefined,
messageId,
} // Pass summary if found
); );
if (processResult.error) { if (processResult.error) {
@@ -146,13 +149,6 @@ const approveProposalHandler = async (
}; };
} }
// 3. Update the message's approval state to 'approved'
await db
.update(messages)
.set({ approvalState: "approved" })
.where(eq(messages.id, messageId));
console.log(`Message ${messageId} marked as approved.`);
return { success: true }; return { success: true };
} catch (error) { } catch (error) {
console.error( console.error(

View File

@@ -1,5 +1,5 @@
import { db } from "../../db"; import { db } from "../../db";
import { chats } from "../../db/schema"; import { chats, messages } from "../../db/schema";
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";
import fs from "node:fs"; import fs from "node:fs";
import { getDyadAppPath } from "../../paths/paths"; import { getDyadAppPath } from "../../paths/paths";
@@ -100,7 +100,10 @@ export function getDyadChatSummaryTag(fullResponse: string): string | null {
export async function processFullResponseActions( export async function processFullResponseActions(
fullResponse: string, fullResponse: string,
chatId: number, chatId: number,
{ chatSummary }: { chatSummary: string | undefined } {
chatSummary,
messageId,
}: { chatSummary: string | undefined; messageId: number }
): Promise<{ updatedFiles?: boolean; error?: string }> { ): Promise<{ updatedFiles?: boolean; error?: string }> {
// Get the app associated with the chat // Get the app associated with the chat
const chatWithApp = await db.query.chats.findFirst({ const chatWithApp = await db.query.chats.findFirst({
@@ -248,6 +251,15 @@ export async function processFullResponseActions(
author: await getGitAuthor(), author: await getGitAuthor(),
}); });
console.log(`Successfully committed changes: ${changes.join(", ")}`); console.log(`Successfully committed changes: ${changes.join(", ")}`);
// Update the message to approved
await db
.update(messages)
.set({
approvalState: "approved",
})
.where(eq(messages.id, messageId));
return { updatedFiles: true }; return { updatedFiles: true };
} }