From 0ee481d00d1622eb549b97d70a2382c9c4788d4f Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 10 Jul 2024 16:17:33 +0900 Subject: [PATCH] add hidechaticon --- src/lang/en.ts | 1 + src/lib/ChatScreens/Chat.svelte | 4 +-- .../Setting/Pages/Module/ModuleMenu.svelte | 6 +++- src/lib/SideBars/CharConfig.svelte | 4 +++ src/ts/process/modules.ts | 1 + src/ts/storage/database.ts | 2 ++ src/ts/stores.ts | 36 +++++++++++++++++++ 7 files changed, 51 insertions(+), 3 deletions(-) diff --git a/src/lang/en.ts b/src/lang/en.ts index 95bc5b76..cc3f42aa 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -668,4 +668,5 @@ export const languageEnglish = { codeMode: "Code", blockMode: "Block", helpBlock: "Help", + hideChatIcon: "Hide Icon UI", } \ No newline at end of file diff --git a/src/lib/ChatScreens/Chat.svelte b/src/lib/ChatScreens/Chat.svelte index 426fcce0..92ecf22e 100644 --- a/src/lib/ChatScreens/Chat.svelte +++ b/src/lib/ChatScreens/Chat.svelte @@ -5,7 +5,7 @@ import { alertConfirm, alertError, alertRequestData } from "../../ts/alert"; import { language } from "../../lang"; import { DataBase, type MessageGenerationInfo } from "../../ts/storage/database"; - import { CurrentCharacter, CurrentChat, CurrentVariablePointer } from "../../ts/stores"; + import { CurrentCharacter, CurrentChat, CurrentVariablePointer, HideIconStore } from "../../ts/stores"; import { translateHTML } from "../../ts/translator/translator"; import { risuChatParser } from "src/ts/process/scripts"; import { get } from "svelte/store"; @@ -144,7 +144,7 @@
- {#if !blankMessage} + {#if !blankMessage && !$HideIconStore} {#if $CurrentCharacter?.chaId === "§playground"}
diff --git a/src/lib/Setting/Pages/Module/ModuleMenu.svelte b/src/lib/Setting/Pages/Module/ModuleMenu.svelte index 258db185..3a0a2550 100644 --- a/src/lib/Setting/Pages/Module/ModuleMenu.svelte +++ b/src/lib/Setting/Pages/Module/ModuleMenu.svelte @@ -202,4 +202,8 @@
-{/if} \ No newline at end of file +{/if} + +
+ +
\ No newline at end of file diff --git a/src/lib/SideBars/CharConfig.svelte b/src/lib/SideBars/CharConfig.svelte index 8863f8b9..649b1038 100644 --- a/src/lib/SideBars/CharConfig.svelte +++ b/src/lib/SideBars/CharConfig.svelte @@ -966,6 +966,10 @@
+
+ +
+
diff --git a/src/ts/process/modules.ts b/src/ts/process/modules.ts index 6aca9330..27b4074b 100644 --- a/src/ts/process/modules.ts +++ b/src/ts/process/modules.ts @@ -17,6 +17,7 @@ export interface RisuModule{ trigger?: triggerscript[] id: string lowLevelAccess?: boolean + hideIcon?: boolean } export async function exportModule(module:RisuModule){ diff --git a/src/ts/storage/database.ts b/src/ts/storage/database.ts index 9d8db2e1..a1415f5b 100644 --- a/src/ts/storage/database.ts +++ b/src/ts/storage/database.ts @@ -826,6 +826,7 @@ export interface character{ }> defaultVariables?:string lowLevelAccess?:boolean + hideChatIcon?:boolean } @@ -873,6 +874,7 @@ export interface groupChat{ nickname?:string defaultVariables?:string lowLevelAccess?:boolean + hideChatIcon?:boolean } export interface botPreset{ diff --git a/src/ts/stores.ts b/src/ts/stores.ts index f114731f..b2d1d591 100644 --- a/src/ts/stores.ts +++ b/src/ts/stores.ts @@ -3,6 +3,7 @@ import { DataBase, type Chat, type character, type groupChat } from "./storage/d import { isEqual } from "lodash"; import type { simpleCharacterArgument } from "./parser"; import { sleep } from "./util"; +import { getModules } from "./process/modules"; function updateSize(){ SizeStore.set({ @@ -39,6 +40,11 @@ export const CurrentVariablePointer = writable({} as {[key:string]: string|numbe export const OpenRealmStore = writable(false) export const ShowRealmFrameStore = writable('') export const PlaygroundStore = writable(0) +export const HideIconStore = writable(false) +let lastGlobalEnabledModules: string[] = [] +let lastChatEnabledModules: string[] = [] +let moduleHideIcon = false +let characterHideIcon = false function createSimpleCharacter(char:character|groupChat){ if((!char) || char.type === 'group'){ @@ -133,6 +139,11 @@ async function preInit(){ if(data.showMemoryLimit !== get(CurrentShowMemoryLimit)){ CurrentShowMemoryLimit.set(data.showMemoryLimit) } + if(!isEqual(data.enabledModules, lastGlobalEnabledModules)){ + lastGlobalEnabledModules = data.enabledModules + onModuleUpdate() + return + } }) selectedCharID.subscribe((id) => { @@ -144,6 +155,11 @@ async function preInit(){ updateCurrentChat() let db = get(DataBase) let charId = get(selectedCharID) + if(char.hideChatIcon !== characterHideIcon){ + characterHideIcon = char.hideChatIcon + HideIconStore.set(characterHideIcon || moduleHideIcon) + } + if(charId === -1 || charId > db.characters.length){ return } @@ -165,6 +181,12 @@ async function preInit(){ } } + if(!isEqual(lastChatEnabledModules, chat?.modules)){ + lastChatEnabledModules = chat?.modules + onModuleUpdate() + return + } + const variablePointer = get(CurrentVariablePointer) const currentState = structuredClone(chat?.scriptstate) @@ -174,6 +196,20 @@ async function preInit(){ }) } +function onModuleUpdate(){ + const m = getModules([ + ...lastGlobalEnabledModules, ...lastChatEnabledModules + ]) + + let moduleHideIcon = false + m.forEach((module) => { + if(module.hideIcon){ + moduleHideIcon = true + } + }) + + HideIconStore.set(characterHideIcon || moduleHideIcon) +} updateSize() window.addEventListener("resize", updateSize);