perf: avoid double stringification in ChatRecordingService

This commit is contained in:
mkorwel
2026-02-09 16:44:28 -06:00
parent fca27bd4a4
commit 80e9fd51eb

View File

@@ -461,9 +461,18 @@ export class ChatRecordingService {
// when nothing has changed.
const currentContent = JSON.stringify(conversation, null, 2);
if (this.cachedLastConvData !== currentContent) {
// Only update the timestamp and re-stringify if something actually changed.
conversation.lastUpdated = new Date().toISOString();
const finalContent = JSON.stringify(conversation, null, 2);
// To avoid a second full stringification for a large conversation object,
// we can replace just the timestamp in the already stringified content.
// This is significantly more performant.
const newTimestamp = new Date().toISOString();
const finalContent = currentContent.replace(
`"lastUpdated": "${conversation.lastUpdated}"`,
`"lastUpdated": "${newTimestamp}"`,
);
// Update the in-memory object's timestamp to stay in sync.
conversation.lastUpdated = newTimestamp;
this.cachedLastConvData = finalContent;
fs.writeFileSync(this.conversationFile, finalContent);
}