From d3f4e3faf5af600aa2f0eed84e309a2f4f30d2de Mon Sep 17 00:00:00 2001 From: moranzhi Date: Sun, 26 Apr 2026 03:42:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E7=AB=AF=E4=BF=AE=E9=A5=B0=E4=B8=8E?= =?UTF-8?q?=E6=B8=B2=E6=9F=93=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/stores/useMessageRenderStore.ts | 78 ++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 client/src/stores/useMessageRenderStore.ts diff --git a/client/src/stores/useMessageRenderStore.ts b/client/src/stores/useMessageRenderStore.ts new file mode 100644 index 0000000..e68fbe7 --- /dev/null +++ b/client/src/stores/useMessageRenderStore.ts @@ -0,0 +1,78 @@ +import { defineStore } from 'pinia'; +import { ref, watch } from 'vue'; + +export const useMessageRenderStore = defineStore('messageRender', () => { + // State - load from localStorage or use defaults + const renderMarkdown = ref(() => { + const stored = localStorage.getItem('message-render-markdown'); + return stored ? JSON.parse(stored) : true; + }); + + const renderHTML = ref(() => { + const stored = localStorage.getItem('message-render-html'); + return stored ? JSON.parse(stored) : true; + }); + + const enableDynamicTables = ref(() => { + const stored = localStorage.getItem('message-render-tables'); + return stored ? JSON.parse(stored) : false; + }); + + const enableDrawing = ref(() => { + const stored = localStorage.getItem('message-render-drawing'); + return stored ? JSON.parse(stored) : false; + }); + + // Watch for changes and persist to localStorage + watch(renderMarkdown, (value) => { + localStorage.setItem('message-render-markdown', JSON.stringify(value)); + }); + + watch(renderHTML, (value) => { + localStorage.setItem('message-render-html', JSON.stringify(value)); + }); + + watch(enableDynamicTables, (value) => { + localStorage.setItem('message-render-tables', JSON.stringify(value)); + }); + + watch(enableDrawing, (value) => { + localStorage.setItem('message-render-drawing', JSON.stringify(value)); + }); + + // Actions + function toggleMarkdown() { + renderMarkdown.value = !renderMarkdown.value; + } + + function toggleHTML() { + renderHTML.value = !renderHTML.value; + } + + function toggleDynamicTables() { + enableDynamicTables.value = !enableDynamicTables.value; + } + + function toggleDrawing() { + enableDrawing.value = !enableDrawing.value; + } + + function resetAll() { + renderMarkdown.value = true; + renderHTML.value = true; + enableDynamicTables.value = false; + enableDrawing.value = false; + } + + return { + renderMarkdown, + renderHTML, + enableDynamicTables, + enableDrawing, + toggleMarkdown, + toggleHTML, + toggleDynamicTables, + toggleDrawing, + resetAll, + }; +});