From 73003c115d3c206efbf48a09dd3b6ce1fd2848cf Mon Sep 17 00:00:00 2001 From: Bo26fhmC5M <88071760+Bo26fhmC5M@users.noreply.github.com> Date: Sat, 8 Feb 2025 22:37:26 +0900 Subject: [PATCH 1/2] feat: add global toggle buttons for lorebook always-active state - Add buttons to toggle all character/chat lorebooks' always-active state at once - Show SunIcon when all lorebooks are active, LinkIcon otherwise --- .../SideBars/LoreBook/LoreBookSetting.svelte | 58 ++++++++++++++++++- 1 file changed, 56 insertions(+), 2 deletions(-) diff --git a/src/lib/SideBars/LoreBook/LoreBookSetting.svelte b/src/lib/SideBars/LoreBook/LoreBookSetting.svelte index 6e942df0..108a03e9 100644 --- a/src/lib/SideBars/LoreBook/LoreBookSetting.svelte +++ b/src/lib/SideBars/LoreBook/LoreBookSetting.svelte @@ -2,13 +2,13 @@ import { DBState } from 'src/ts/stores.svelte'; import { language } from "../../../lang"; - import { DownloadIcon, FolderUpIcon, ImportIcon, PlusIcon } from "lucide-svelte"; + import { DownloadIcon, FolderUpIcon, ImportIcon, PlusIcon, SunIcon, LinkIcon } from "lucide-svelte"; import { addLorebook, exportLoreBook, importLoreBook } from "../../../ts/process/lorebook.svelte"; import Check from "../../UI/GUI/CheckInput.svelte"; import NumberInput from "../../UI/GUI/NumberInput.svelte"; import LoreBookList from "./LoreBookList.svelte"; import Help from "src/lib/Others/Help.svelte"; - import { selectedCharID } from "src/ts/stores.svelte"; + import { selectedCharID } from "src/ts/stores.svelte"; let submenu = $state(0) interface Props { @@ -16,6 +16,40 @@ } let { globalMode = $bindable(false) }: Props = $props(); + + function isAllCharacterLoreAlwaysActive() { + const globalLore = DBState.db.characters[$selectedCharID].globalLore; + return globalLore && globalLore.every((book) => book.alwaysActive); + } + + function isAllChatLoreAlwaysActive() { + const localLore = DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].localLore; + return localLore && localLore.every((book) => book.alwaysActive); + } + + function toggleCharacterLoreAlwaysActive() { + const globalLore = DBState.db.characters[$selectedCharID].globalLore; + + if (!globalLore) return; + + const allActive = globalLore.every((book) => book.alwaysActive); + + globalLore.forEach((book) => { + book.alwaysActive = !allActive; + }); + } + + function toggleChatLoreAlwaysActive() { + const localLore = DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].localLore; + + if (!localLore) return; + + const allActive = localLore.every((book) => book.alwaysActive); + + localLore.forEach((book) => { + book.alwaysActive = !allActive; + }); + } {#if !globalMode} @@ -99,5 +133,25 @@ }} class="hover:text-textcolor ml-2 cursor-pointer"> + + {/if} \ No newline at end of file From 0670972016623392205024d2003b125e1f3ad2e0 Mon Sep 17 00:00:00 2001 From: Bo26fhmC5M <88071760+Bo26fhmC5M@users.noreply.github.com> Date: Sat, 8 Feb 2025 23:04:59 +0900 Subject: [PATCH 2/2] fix: change lorebook toggle button labels to uppercase for better readability --- src/lib/SideBars/LoreBook/LoreBookSetting.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/SideBars/LoreBook/LoreBookSetting.svelte b/src/lib/SideBars/LoreBook/LoreBookSetting.svelte index 108a03e9..2454228d 100644 --- a/src/lib/SideBars/LoreBook/LoreBookSetting.svelte +++ b/src/lib/SideBars/LoreBook/LoreBookSetting.svelte @@ -141,7 +141,7 @@ {:else} {/if} - Char + CHAR {/if} \ No newline at end of file