fix: handle null case for firstMessage in HypaV3 modal
This commit is contained in:
@@ -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 };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user