fix: handle null case for firstMessage in HypaV3 modal

This commit is contained in:
Bo26fhmC5M
2025-01-18 14:16:50 +09:00
parent d18b79a17e
commit 1b2ea2b15b

View File

@@ -62,21 +62,31 @@
); );
} }
function getFirstMessage(): string | null {
const char = DBState.db.characters[$selectedCharID];
const chat = char.chats[DBState.db.characters[$selectedCharID].chatPage];
return chat.fmIndex === -1
? char.firstMessage
: char.alternateGreetings?.[chat.fmIndex]
? char.alternateGreetings[chat.fmIndex]
: null;
}
function getMessageFromChatMemo(chatMemo: string | null): Message | null { function getMessageFromChatMemo(chatMemo: string | null): Message | null {
const char = DBState.db.characters[$selectedCharID]; const char = DBState.db.characters[$selectedCharID];
const chat = char.chats[DBState.db.characters[$selectedCharID].chatPage]; const chat = char.chats[DBState.db.characters[$selectedCharID].chatPage];
const firstMessage = const firstMessage = getFirstMessage();
chat.fmIndex === -1
? char.firstMessage
: char.alternateGreetings?.[chat.fmIndex ?? 0];
const targetMessage = ( if (!firstMessage) {
chatMemo == null return null;
? { role: "char", data: firstMessage } }
: chat.message.find((m) => m.chatId === chatMemo)
) as Message;
return targetMessage; if (chatMemo == null) {
return { role: "char", data: firstMessage };
}
return chat.message.find((m) => m.chatId === chatMemo) || null;
} }
async function toggleTranslate( async function toggleTranslate(
@@ -108,16 +118,11 @@
const summary = hypaV3DataState.summaries[summaryIndex]; const summary = hypaV3DataState.summaries[summaryIndex];
for (const chatMemo of summary.chatMemos) { for (const chatMemo of summary.chatMemos) {
if (typeof chatMemo === "string") { if (!getMessageFromChatMemo(chatMemo)) {
const char = DBState.db.characters[$selectedCharID];
const chat =
char.chats[DBState.db.characters[$selectedCharID].chatPage];
if (!chat.message.find((m) => m.chatId === chatMemo)) {
return false; return false;
} }
} }
}
return true; return true;
} }
@@ -235,11 +240,13 @@
function getNextMessageToSummarize(): Message | null { function getNextMessageToSummarize(): Message | null {
const char = DBState.db.characters[$selectedCharID]; const char = DBState.db.characters[$selectedCharID];
const chat = char.chats[DBState.db.characters[$selectedCharID].chatPage]; const chat = char.chats[DBState.db.characters[$selectedCharID].chatPage];
const firstMessage = const firstMessage = getFirstMessage();
chat.fmIndex === -1
? char.firstMessage
: char.alternateGreetings?.[chat.fmIndex ?? 0];
if (!firstMessage) {
return null;
}
// Summaries exist
if (hypaV3DataState.summaries.length > 0) { if (hypaV3DataState.summaries.length > 0) {
const lastSummary = hypaV3DataState.summaries.at(-1); const lastSummary = hypaV3DataState.summaries.at(-1);
const lastMessageIndex = chat.message.findIndex( const lastMessageIndex = chat.message.findIndex(
@@ -255,6 +262,7 @@
} }
} }
// No summaries
if (firstMessage?.trim() === "") { if (firstMessage?.trim() === "") {
if (chat.message.length > 0) { if (chat.message.length > 0) {
return chat.message[0]; return chat.message[0];
@@ -263,6 +271,7 @@
return null; return null;
} }
// will summarize first message
return { role: "char", chatId: "first message", data: firstMessage }; return { role: "char", chatId: "first message", data: firstMessage };
} }