前端修饰与渲染处理
This commit is contained in:
78
client/src/stores/useMessageRenderStore.ts
Normal file
78
client/src/stores/useMessageRenderStore.ts
Normal file
@@ -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<boolean>(() => {
|
||||||
|
const stored = localStorage.getItem('message-render-markdown');
|
||||||
|
return stored ? JSON.parse(stored) : true;
|
||||||
|
});
|
||||||
|
|
||||||
|
const renderHTML = ref<boolean>(() => {
|
||||||
|
const stored = localStorage.getItem('message-render-html');
|
||||||
|
return stored ? JSON.parse(stored) : true;
|
||||||
|
});
|
||||||
|
|
||||||
|
const enableDynamicTables = ref<boolean>(() => {
|
||||||
|
const stored = localStorage.getItem('message-render-tables');
|
||||||
|
return stored ? JSON.parse(stored) : false;
|
||||||
|
});
|
||||||
|
|
||||||
|
const enableDrawing = ref<boolean>(() => {
|
||||||
|
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,
|
||||||
|
};
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user