diff --git a/src/lib/Setting/Pages/BotSettings.svelte b/src/lib/Setting/Pages/BotSettings.svelte index cb3e28f5..8033679f 100644 --- a/src/lib/Setting/Pages/BotSettings.svelte +++ b/src/lib/Setting/Pages/BotSettings.svelte @@ -643,6 +643,10 @@ {/if} + + + + diff --git a/src/lib/Setting/Pages/Module/ModuleSettings.svelte b/src/lib/Setting/Pages/Module/ModuleSettings.svelte index 80297193..a0adcb30 100644 --- a/src/lib/Setting/Pages/Module/ModuleSettings.svelte +++ b/src/lib/Setting/Pages/Module/ModuleSettings.svelte @@ -4,13 +4,14 @@ import { DBState } from 'src/ts/stores.svelte'; import Button from "src/lib/UI/GUI/Button.svelte"; import ModuleMenu from "src/lib/Setting/Pages/Module/ModuleMenu.svelte"; - import { exportModule, importModule, type RisuModule } from "src/ts/process/modules"; + import { exportModule, importModule, refreshModules, type RisuModule } from "src/ts/process/modules"; import { DownloadIcon, Edit, TrashIcon, Globe, Share2Icon } from "lucide-svelte"; import { v4 } from "uuid"; import { tooltip } from "src/ts/gui/tooltip"; import { alertCardExport, alertConfirm, alertError } from "src/ts/alert"; import TextInput from "src/lib/UI/GUI/TextInput.svelte"; import { ShowRealmFrameStore } from "src/ts/stores.svelte"; + import { onDestroy } from "svelte"; let tempModule:RisuModule = $state({ name: '', description: '', @@ -30,6 +31,12 @@ return score }) } + + onDestroy(() => { + if(DBState.db.moduleIntergration){ + refreshModules() + } + }) {#if mode === 0}

{language.modules}

@@ -48,9 +55,12 @@
{rmodule.name}
- + + \ No newline at end of file diff --git a/src/ts/parser.svelte.ts b/src/ts/parser.svelte.ts index 6cd15b20..87f46090 100644 --- a/src/ts/parser.svelte.ts +++ b/src/ts/parser.svelte.ts @@ -10,7 +10,7 @@ import { SizeStore, selectedCharID } from './stores.svelte'; import { calcString } from './process/infunctions'; import { findCharacterbyId, getPersonaPrompt, getUserIcon, getUserName, parseKeyValue, sfc32, sleep, uuidtoNumber } from './util'; import { getInlayAsset } from './process/files/inlays'; -import { getModuleAssets, getModuleLorebooks } from './process/modules'; +import { getModuleAssets, getModuleLorebooks, getModules } from './process/modules'; import type { OpenAIChat } from './process/index.svelte'; import hljs from 'highlight.js/lib/core' import 'highlight.js/styles/atom-one-dark.min.css' @@ -1531,16 +1531,13 @@ function basicMatcher (p1:string,matcherArg:matcherArg,vars:{[key:string]:string return dateTimeFormat(arra[1],t) } case 'module_enabled':{ - const selchar = db.characters[get(selectedCharID)] - let enabledChatModules:string[] = [] - if(!selchar){ - enabledChatModules = selchar.chats[selchar.chatPage].modules ?? [] - + const modules = getModules() + for(const module of modules){ + if(module.namespace === arra[1]){ + return '1' + } } - const moduleId = db.modules.find((f) => { - return f.name === arra[1] - }).id - return (db.enabledModules.includes(moduleId) || enabledChatModules.includes(moduleId)) ? '1' : '0' + return '0' } case 'filter':{ const array = parseArray(arra[1]) diff --git a/src/ts/process/modules.ts b/src/ts/process/modules.ts index dae9b735..73a9b80d 100644 --- a/src/ts/process/modules.ts +++ b/src/ts/process/modules.ts @@ -268,7 +268,20 @@ function getModuleByIds(ids:string[]){ modules.push(module) } } - return modules + return deduplicateModuleById(modules) +} + +function deduplicateModuleById(modules:RisuModule[]){ + let ids:string[] = [] + let newModules:RisuModule[] = [] + for(let i=0;i s.trim()) + ids = ids.concat(intList) + } const idsJoined = ids.join('-') if(lastModules === idsJoined){ return lastModuleData @@ -440,4 +457,9 @@ export function moduleUpdate(){ ReloadGUIPointer.set(get(ReloadGUIPointer) + 1) lastModuleIds = ids } +} + +export function refreshModules(){ + lastModules = '' + lastModuleData = [] } \ No newline at end of file diff --git a/src/ts/stores.svelte.ts b/src/ts/stores.svelte.ts index 3a20b4f2..6ac312ca 100644 --- a/src/ts/stores.svelte.ts +++ b/src/ts/stores.svelte.ts @@ -115,6 +115,7 @@ $effect.root(() => { DBState?.db?.characters?.[selIdState.selId]?.chats?.[DBState?.db?.characters?.[selIdState.selId]?.chatPage]?.modules?.length DBState?.db?.characters?.[selIdState.selId]?.hideChatIcon DBState?.db?.characters?.[selIdState.selId]?.backgroundHTML + DBState?.db?.moduleIntergration moduleUpdate() }) }) \ No newline at end of file