validate group that all members exist

This commit is contained in:
Wolfsblvt
2024-07-02 02:00:39 +02:00
parent 21c064fc5b
commit 52b64a823d

View File

@@ -178,8 +178,37 @@ async function loadGroupChat(chatId) {
return []; return [];
} }
async function validateGroup(group) {
if (!group) return;
// Validate that all members exist as characters
let dirty = false;
group.members = group.members.filter(member => {
const character = characters.find(x => x.avatar === member || x.name === member);
if (!character) {
const msg = `Warning: Listed member ${member} does not exist as a character. It will be removed from the group.`;
toastr.warning(msg, 'Group Validation');
console.warn(msg);
dirty = true;
}
return character;
});
if (dirty) {
await editGroup(group.id, true, false);
}
}
export async function getGroupChat(groupId, reload = false) { export async function getGroupChat(groupId, reload = false) {
const group = groups.find((x) => x.id === groupId); const group = groups.find((x) => x.id === groupId);
if (!group) {
console.warn(`Group not found`, groupId);
return;
}
// Run validation before any loading
validateGroup(group);
const chat_id = group.chat_id; const chat_id = group.chat_id;
const data = await loadGroupChat(chat_id); const data = await loadGroupChat(chat_id);
let freshChat = false; let freshChat = false;
@@ -197,7 +226,6 @@ export async function getGroupChat(groupId, reload = false) {
if (group && Array.isArray(group.members)) { if (group && Array.isArray(group.members)) {
for (let member of group.members) { for (let member of group.members) {
const character = characters.find(x => x.avatar === member || x.name === member); const character = characters.find(x => x.avatar === member || x.name === member);
if (!character) { if (!character) {
continue; continue;
} }
@@ -219,10 +247,8 @@ export async function getGroupChat(groupId, reload = false) {
freshChat = true; freshChat = true;
} }
if (group) {
let metadata = group.chat_metadata ?? {}; let metadata = group.chat_metadata ?? {};
updateChatMetadata(metadata, true); updateChatMetadata(metadata, true);
}
if (reload) { if (reload) {
select_group_chats(groupId, true); select_group_chats(groupId, true);