Allow activating chars with last message hidden on continue and quiet

ff39671018b3e857c2d72222ed4042d13c1f2d22

Cohee <18619528+Cohee1207@users.noreply.github.com>

1 files changed, +11 -5Showing whitespace changes
public/scripts/group-chats.js+11 -5
@@ -870,14 +870,14 @@ async function generateGroupWrapper(by_auto_mode, type = null, params = {}) {
870 if (params && typeof params.force_chid == 'number') {870 if (params && typeof params.force_chid == 'number') {
871 activatedMembers = [params.force_chid];871 activatedMembers = [params.force_chid];
872 } else if (type === 'quiet') {872 } else if (type === 'quiet') {
873 activatedMembers = activateSwipe(group.members).slice(0, 1);873 activatedMembers = activateSwipe(group.members, { allowSystem: true }).slice(0, 1);
874874
875 if (activatedMembers.length === 0) {875 if (activatedMembers.length === 0) {
876 activatedMembers = activateListOrder(group.members.slice(0, 1));876 activatedMembers = activateListOrder(group.members.slice(0, 1));
877 }877 }
878 }878 }
879 else if (type === 'swipe' || type === 'continue') {879 else if (type === 'swipe' || type === 'continue') {
880 activatedMembers = activateSwipe(group.members);880 activatedMembers = activateSwipe(group.members, { allowSystem: type === 'continue' });
881881
882 if (activatedMembers.length === 0) {882 if (activatedMembers.length === 0) {
883 toastr.warning(t`Deleted group member swiped. To get a reply, add them back to the group.`);883 toastr.warning(t`Deleted group member swiped. To get a reply, add them back to the group.`);
@@ -984,15 +984,21 @@ function activateImpersonate(members) {
984/**984/**
985 * Activates a group member based on the last message.985 * Activates a group member based on the last message.
986 * @param {string[]} members Array of group member avatar ids986 * @param {string[]} members Array of group member avatar ids
987 * @param {Object} [options] Options object
988 * @param {boolean} [options.allowSystem] Whether to allow system messages
987 * @returns {number[]} Array of character ids989 * @returns {number[]} Array of character ids
988 */990 */
989function activateSwipe(members) {991function activateSwipe(members, { allowSystem = false } = {}) {
990 let activatedNames = [];992 let activatedNames = [];
991 const lastMessage = chat[chat.length - 1];993 const lastMessage = chat[chat.length - 1];
992994
993 if (lastMessage.is_user || lastMessage.is_system || lastMessage.extra?.type === system_message_types.NARRATOR) {995 if (!lastMessage) {
996 return [];
997 }
998
999 if (lastMessage.is_user || (!allowSystem && lastMessage.is_system) || lastMessage.extra?.type === system_message_types.NARRATOR) {
994 for (const message of chat.slice().reverse()) {1000 for (const message of chat.slice().reverse()) {
995 if (message.is_user || message.is_system || message.extra?.type === system_message_types.NARRATOR) {1001 if (message.is_user || (!allowSystem && message.is_system) || message.extra?.type === system_message_types.NARRATOR) {
996 continue;1002 continue;
997 }1003 }
9981004